Files
gsf/app/Http/Controllers/API/MoodOMeterController.php

182 lines
7.2 KiB
PHP
Raw Normal View History

2024-08-09 17:11:41 +05:30
<?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.',
]);
}
}
}