toDateString(); // dd($todaysDate); $oldUserRankings = LeaderboardMaster::with('user')->get(); $result = UserOverView::where("user_id", $user_id) ->where('created_at', $todaysDate) // ->orderBy('created_at', 'desc') ->exists(); if ($result) { $lastOverview = UserOverView::where('user_id', $user_id) ->orderBy('created_at', 'desc') // ->skip(1) ->first(); UserOverView::where('user_id', $user_id) ->whereDay('created_at', now()->day) ->update([ "muscle_rate" => $req->muscle_rate, "body_fat" => $req->body_fat, "skeletal_muscle" => $req->skeletal_muscle, "protein" => $req->protein, "bmr" => $req->bmr, "water" => $req->water, "age" => $req->age, "weight" => $req->weight, ]); $points = (100 - $req->body_fat) + $req->muscle_rate; $leaderboard = LeaderboardMaster::where('user_id', $user_id)->first(); if ($leaderboard) { // $lastOverview = UserOverView::where('user_id', $user_id) // ->orderBy('created_at', 'desc') // // ->skip(1) // ->first(); if ($lastOverview) { $pointsToDeduct = (100 - $lastOverview->body_fat) + $lastOverview->muscle_rate; $leaderboard->total_score -= $pointsToDeduct; // dd($leaderboard); // Ensure total_score is not negative if ($leaderboard->total_score < 0) { $leaderboard->total_score = 0; } } $leaderboard->total_score += $points; } $leaderboard->save(); $msg = "User Overview Updated Successfully."; } else { $tellobj = new UserOverView(); $tellobj->user_id = $user_id; $tellobj->muscle_rate = $req->muscle_rate; $tellobj->body_fat = $req->body_fat; $tellobj->skeletal_muscle = $req->skeletal_muscle; $tellobj->protein = $req->protein; $tellobj->bmr = $req->bmr; $tellobj->water = $req->water; $tellobj->age = $req->age; $tellobj->weight = $req->weight; $tellobj->save(); // Calculate points based on body_fat and muscle_rate $points = (100 - $req->body_fat) + $req->muscle_rate ; $userDetails = UserDetail::where('user_id', $user_id)->first(); if ($userDetails && $userDetails->gender == 'female') { $points += 25; }else{ $points += 1; } $leaderboard = LeaderboardMaster::where('user_id', $user_id)->first(); if ($leaderboard) { // Deduct points from yesterday's overview $lastOverview = UserOverView::where('user_id', $user_id) ->orderBy('created_at', 'desc') ->skip(1) ->first(); if ($lastOverview) { $pointsToDeduct = (100 - $lastOverview->body_fat) + $lastOverview->muscle_rate ; $leaderboard->total_score -= $pointsToDeduct; // Ensure total_score is not negative if ($leaderboard->total_score < 0) { $leaderboard->total_score = 0; } } $leaderboard->total_score += $points; } else { $leaderboard = new LeaderboardMaster(); $leaderboard->user_id = $user_id; $leaderboard->total_score = $points; } $leaderboard->save(); $msg = "User Overview Added Successfully."; } // Decrease 5 point for every 3 days since the previous overview $lastOverview = UserOverView::where('user_id', $user_id) ->orderBy('created_at', 'desc') ->skip(1) ->first(); if ($lastOverview) { $daysSinceLastOverview = $lastOverview->created_at->diffInDays(now()); $pointsToDeduct = floor($daysSinceLastOverview / 3); $leaderboard = LeaderboardMaster::where('user_id', $user_id)->first(); if ($leaderboard) { $leaderboard->total_score -= $pointsToDeduct; $leaderboard->save(); } } $newUserRanking = LeaderboardMaster::where('user_id',$user_id)->first(); if ($oldUserRankings && $newUserRanking) { 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, 'message' => $msg, 'progress_bar' => $message, ]); } else { return response()->json([ 'success' => false, 'message' => 'Authentication failed.', ]); } } }catch (\Exception $e) { \Log::error("Update Complete/Update Failed : " . $e->getMessage()); return response()->json([ 'success' => false, 'message' => 'Something Went wrong.', ]); } } public function get_user_overview_by_id() { try { // print_r(User::first()->user);exit; $token = readHeaderToken(); if ($token) { $user_id = $token['sub']; $data = UserOverView::where('user_id', $user_id)->get(); 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 show_user_overview(Request $request) { // dd($request->created_at); // try { $token = readHeaderToken(); if ($token) { // dd($request->created_at); $user_id = $token['sub']; if($request->created_at) { $data = UserOverView::where('user_id',$user_id)->where('created_at', $request->created_at)->first(); }else{ $data = UserOverView::where('user_id',$user_id)->get(); } return response()->json([ 'success' => true, 'message' => 'Data fetched successfully.', 'authorisation' => [ 'user_data' => $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 showUserOverview_new(Request $request){ // dd($request->created_at); try { $token = readHeaderToken(); if ($token) { // dd($request->created_at); $user_id = $token['sub']; if($request->created_at) { $data = UserOverView::where('user_id',$user_id)->where('created_at', $request->created_at)->first(); }else{ if($request->data == "week"){ $last7Days = Carbon::now()->subDays(7); $data = UserOverView::where('user_id',$user_id)->where('created_at','>=',$last7Days)->get(); }elseif($request->data == "month"){ $last30Days = Carbon::now()->subDays(30); $data = UserOverView::where('user_id',$user_id)->where('created_at','>=',$last30Days)->get(); }elseif($request->data == "year"){ $lastYear = Carbon::now()->subYear(); // dd($lastYear); $data = UserOverView::where('user_id',$user_id)->where('created_at','>=',$lastYear)->get(); } } return response()->json([ 'success' => true, 'message' => 'Data fetched successfully.', 'authorisation' => [ 'user_data' => $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 resetPoints(){ $currentDate = date('Y-m-d'); $activityData = ActivityMaster::orderBy('id','desc')->first(); if($activityData){ $start_date = $activityData->start_date; if($currentDate < $start_date){ $leaderBoaradData = LeaderboardMaster::all(); // dd($leaderBoaradData); foreach($leaderBoaradData as $data){ LeaderboardMaster::where('user_id',$data->user_id)->update(['total_score' => 0]); } return response()->json([ 'success' => true, 'message' => 'Reset Succefully' ],200); }else{ return response()->json([ 'success' => true, 'message' => 'Season is not end yet!' ],201); } }else{ return response()->json([ 'success' => flase, 'message' => 'No Activity Found' ],404); } } }