first commit
This commit is contained in:
181
app/Http/Controllers/API/MoodOMeterController.php
Normal file
181
app/Http/Controllers/API/MoodOMeterController.php
Normal file
@@ -0,0 +1,181 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\User;
|
||||
use App\Models\mood_o_meter;
|
||||
use App\Models\LeaderboardMaster;
|
||||
//use Carbon\Carbon;
|
||||
use Auth;
|
||||
|
||||
class MoodOMeterController extends Controller {
|
||||
|
||||
public function store_mood_o_meter(Request $req) {
|
||||
try {
|
||||
$token = readHeaderToken();
|
||||
if ($token) {
|
||||
// $user = auth()->user();
|
||||
$user_id = $token['sub'];
|
||||
$oldUserRankings = LeaderboardMaster::with('user')->get();
|
||||
$currentDate = now()->toDateString();
|
||||
$previousDate = now()->subDay()->toDateString();
|
||||
|
||||
// Check if a record for the current user and current day already exists
|
||||
$existingRecord = mood_o_meter::where('user_id', $user_id)
|
||||
// ->whereDate('created_at', now()->toDateString())
|
||||
->whereDate('updated_at', $currentDate)
|
||||
->where('is_active','0')
|
||||
->first();
|
||||
if ($existingRecord) {
|
||||
// Update the existing mood record
|
||||
$existingRecord->update([
|
||||
'mood_o_meter' => $req->input('mood_o_meter'),
|
||||
'is_active' => '0',
|
||||
]);
|
||||
|
||||
return response([
|
||||
'status' => "Mood already added for today",
|
||||
], 200);
|
||||
} else {
|
||||
// Check if a record for the current user and previous day exists
|
||||
// $previousRecord = mood_o_meter::where('user_id', $user_id)
|
||||
// ->whereDate('updated_at', $previousDate)
|
||||
//
|
||||
// ->first();
|
||||
|
||||
// if ($previousRecord) {
|
||||
// Create a new mood record for the current day
|
||||
mood_o_meter::where('user_id', $user_id)
|
||||
->update([
|
||||
'mood_o_meter' => $req->input('mood_o_meter'),
|
||||
'is_active' => '0'
|
||||
]);
|
||||
// }
|
||||
// else {
|
||||
//
|
||||
// mood_o_meter::create([
|
||||
// 'user_id' => $user_id,
|
||||
// 'mood_o_meter' => $req->input('mood_o_meter'),
|
||||
// 'is_active' => '0',
|
||||
// ]);
|
||||
// }
|
||||
// Update is_active column based on the current time
|
||||
$ranking = LeaderboardMaster::with('user')->where('user_id', $user_id)->first();
|
||||
// Check if user exists in another table
|
||||
$leaderboardMaster = LeaderboardMaster::where('user_id', $user_id)->first();
|
||||
if ($leaderboardMaster) {
|
||||
// Update points if user exists
|
||||
$leaderboardMaster->increment('total_score', 1);
|
||||
} else {
|
||||
// Create a new entry with 1 point if user doesn't exist
|
||||
LeaderboardMaster::create([
|
||||
'user_id' => $token['sub'],
|
||||
'total_score' => 1,
|
||||
]);
|
||||
}
|
||||
|
||||
$newUserRanking = LeaderboardMaster::where('user_id', $user_id)->first();
|
||||
if ($newUserRanking) {
|
||||
// dd($oldUserRankings);
|
||||
// $message = 'Hello World';
|
||||
|
||||
// echo '<pre>';
|
||||
// print_r($ranking);
|
||||
// exit();
|
||||
// foreach ($oldUserRankings as $ranking) {
|
||||
$previousTotalScore = $ranking->total_score;
|
||||
$currentTotalScore = $newUserRanking->total_score;
|
||||
if ($ranking->user_id == $user_id) {
|
||||
if ($previousTotalScore === null) {
|
||||
$ranking->progress_bar = '0'; // Initial entry
|
||||
} elseif ($currentTotalScore > $previousTotalScore) {
|
||||
$ranking->progress_bar = '0'; // Total score increased
|
||||
$message = "You earned 1 point!";
|
||||
} elseif ($currentTotalScore < $previousTotalScore) {
|
||||
$ranking->progress_bar = '1'; // Total score decreased
|
||||
$message = "Your score decreased.";
|
||||
} else {
|
||||
$ranking->progress_bar = '2'; // Total score remained the same
|
||||
$message = "Your score remains the same.";
|
||||
}
|
||||
$ranking->save(); // Save the updated progress_bar value
|
||||
|
||||
}
|
||||
// }
|
||||
// dd($userRanking,$newUserRanking);
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'progress_bar' => $message,
|
||||
]);
|
||||
|
||||
}
|
||||
return response([
|
||||
'status' => "Success",
|
||||
], 200);
|
||||
}
|
||||
}
|
||||
} catch (Exception $ex) {
|
||||
return response([
|
||||
'status' => "failed",
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function get_mood_o_meter() {
|
||||
try {
|
||||
// print_r(User::first()->user);exit;
|
||||
$token = readHeaderToken();
|
||||
if ($token) {
|
||||
$user_id = $token['sub'];
|
||||
$data = mood_o_meter::where('user_id', $user_id)->value('is_active');
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Data fetched successfully.',
|
||||
'result' => $data
|
||||
]);
|
||||
} else {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Authentication failed.',
|
||||
]);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
\Log::error("User data listing Failed : " . $e->getMessage());
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Something Went wrong.',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function get_mood_o_meter_mood() {
|
||||
try {
|
||||
// print_r(User::first()->user);exit;
|
||||
$token = readHeaderToken();
|
||||
if ($token) {
|
||||
$user_id = $token['sub'];
|
||||
$data = mood_o_meter::where('user_id', $user_id)->value('mood_o_meter');
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Data fetched successfully.',
|
||||
'result' => $data
|
||||
]);
|
||||
} else {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Authentication failed.',
|
||||
]);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
\Log::error("User data listing Failed : " . $e->getMessage());
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Something Went wrong.',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user