182 lines
7.2 KiB
PHP
182 lines
7.2 KiB
PHP
<?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.',
|
|
]);
|
|
}
|
|
}
|
|
|
|
}
|