feat: add leader board

This commit is contained in:
2025-09-11 12:16:24 +03:30
parent b4bc60ec90
commit 0b73e9d095
2 changed files with 31 additions and 16 deletions
+27 -14
View File
@@ -32,7 +32,6 @@ public function loginV2(Request $request)
$response = Http::acceptJson()->withToken($data['token'])->get('https://api.approagency.ir/api/status', [
'package_name' => $request['package_name']
]);
if (!$response->successful()) {
return response()->json(['message' => 'invalid token'], 401);
}
@@ -49,22 +48,28 @@ public function loginV2(Request $request)
if (!$user) {
$user = User::where('email', $response['email'])->first();
}
$mobile = $response['mobile'] ?? null;
// If mobile already exists, set it null to avoid duplicate error
if ($mobile && User::where('mobile', $mobile)->where('id', '!=', $user?->id)->exists()) {
$mobile = null;
}
// If user still doesn't exist, create new
if (!$user) {
$user = User::create([
'email' => $response['email'],
'identifier' => $response['uuid'] ?? null,
'password' => config('app.default_password'),
'name' => trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? '')),
'mobile' => $response['mobile'] ?? null,
]);
} else {
// Only update name and mobile for existing user
$user->name = trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? ''));
$user->mobile = $response['mobile'] ?? $user->mobile;
$user->save(); // Do NOT update identifier!
}
$user = User::create([
'email' => $response['email'],
'identifier' => $response['uuid'] ?? null,
'password' => config('app.default_password'),
'name' => trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? '')),
'mobile' => $mobile,
]);
} else {
// Only update name and mobile for existing user
$user->name = trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? ''));
$user->mobile = $mobile ?? $user->mobile;
$user->save();
}
$access_token = $user->createToken('user')->plainTextToken;
@@ -556,4 +561,12 @@ public function googleLogin(Request $request)
'token' => $token,
]);
}
public function leaderBoard(){
$users = User::where('xp', '>', 0)
->orderBy('xp', 'desc')
->get();
return $users;
}
}
+2
View File
@@ -59,6 +59,8 @@
Route::post('/profile', [UserController::class, 'updateProfile']);
Route::get('/profile', [UserController::class, 'profile']);
////-- leader board
Route::get('/leader-board', [UserController::class, 'leaderBoard']);
///-- mood routes