save to codehub
This commit is contained in:
124
app/Http/Controllers/API/StepCountController.php
Normal file
124
app/Http/Controllers/API/StepCountController.php
Normal file
@@ -0,0 +1,124 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\API;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\DailyStepsCount;
|
||||
use APP\Models\User;
|
||||
use Carbon\Carbon;
|
||||
use App\Models\LeaderboardMaster;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
|
||||
class StepCountController extends Controller
|
||||
{
|
||||
public function store_step_count(Request $request){
|
||||
|
||||
// dd($request->step_count);
|
||||
$token = readHeaderToken();
|
||||
if ($token) {
|
||||
$stepCount = $request->step_count;
|
||||
$userId = $token['sub'];
|
||||
// dd($userId);
|
||||
$server_date = Carbon::now()->toDateString();
|
||||
$user_date = $request->date;
|
||||
|
||||
if($user_date == null){
|
||||
$date = $server_date;
|
||||
}else{
|
||||
$date = $user_date;
|
||||
}
|
||||
|
||||
$dailyStepCount = DailyStepsCount::where('user_id', $userId)
|
||||
->where('date', $date)
|
||||
->first();
|
||||
// dd($dailyStepCount);
|
||||
Log::info("dailyStepCount found at that date");
|
||||
// dd($dailyStepCount->step_count);
|
||||
|
||||
if ($dailyStepCount) {
|
||||
$oldStepCounts = $dailyStepCount->step_count;
|
||||
$oldPoints = $dailyStepCount->points;
|
||||
|
||||
// if($oldStepCounts > $stepCount){
|
||||
// $stepCount = $oldStepCounts + $stepCount;
|
||||
// }
|
||||
|
||||
// if($device !== "android") {
|
||||
// if($stepCount>$oldStepCounts){
|
||||
$dailyStepCount->update(['step_count' => $stepCount]);
|
||||
// }
|
||||
// }else{
|
||||
// $dailyStepCount->update(['step_count' => $stepCount]);
|
||||
// }
|
||||
|
||||
|
||||
$latestSteps = $dailyStepCount->step_count;
|
||||
// Update the step count for the current date and update points
|
||||
|
||||
$latestPoints = intval(floor($latestSteps/1000));
|
||||
if($latestPoints > $oldPoints){
|
||||
$currentPoints = $latestPoints - $oldPoints;
|
||||
|
||||
//update points
|
||||
$dailyStepCount->update(['points' => $latestPoints]);
|
||||
|
||||
$leaderboardMaster = LeaderboardMaster::where('user_id', $userId)->first();
|
||||
|
||||
if ($leaderboardMaster) {
|
||||
// $latestPoints = $latestPoints*5;
|
||||
$leaderboardMaster->total_score += 5*$currentPoints;
|
||||
$leaderboardMaster->save();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$updated_step_counts = $points = intval(floor($dailyStepCount->step_count/1000));
|
||||
$updated_points = $dailyStepCount->points;
|
||||
if($updated_step_counts < $updated_points){
|
||||
$leaderboardMaster = LeaderboardMaster::where('user_id', $userId)->first();
|
||||
if ($leaderboardMaster) {
|
||||
|
||||
$leaderboardMaster->total_score -= 5*$updated_points;
|
||||
$leaderboardMaster->total_score += 5*$updated_step_counts;
|
||||
$leaderboardMaster->save();
|
||||
}
|
||||
$dailyStepCount->update(['points' => $updated_step_counts]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
Log::info("New user Creating");
|
||||
// Create a new record for the new day
|
||||
$points = intval(floor($stepCount/1000));
|
||||
$newDailyStepCount = new DailyStepsCount([
|
||||
'user_id' => $userId,
|
||||
'date' => $date,
|
||||
'step_count' => $stepCount,
|
||||
'points' => $points,
|
||||
]);
|
||||
|
||||
$newDailyStepCount->save();
|
||||
|
||||
$leaderboardMaster = LeaderboardMaster::where('user_id', $userId)->first();
|
||||
if ($leaderboardMaster) {
|
||||
|
||||
$leaderboardMaster->total_score += 5*$points;
|
||||
$leaderboardMaster->save();
|
||||
}
|
||||
}
|
||||
|
||||
return response(['status' => "Success"], 200);
|
||||
|
||||
} else {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Authentication failed.',
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user