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
+28 -15
View File
@@ -32,7 +32,6 @@ public function loginV2(Request $request)
$response = Http::acceptJson()->withToken($data['token'])->get('https://api.approagency.ir/api/status', [ $response = Http::acceptJson()->withToken($data['token'])->get('https://api.approagency.ir/api/status', [
'package_name' => $request['package_name'] 'package_name' => $request['package_name']
]); ]);
if (!$response->successful()) { if (!$response->successful()) {
return response()->json(['message' => 'invalid token'], 401); return response()->json(['message' => 'invalid token'], 401);
} }
@@ -49,22 +48,28 @@ public function loginV2(Request $request)
if (!$user) { if (!$user) {
$user = User::where('email', $response['email'])->first(); $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 still doesn't exist, create new
if (!$user) { if (!$user) {
$user = User::create([ $user = User::create([
'email' => $response['email'], 'email' => $response['email'],
'identifier' => $response['uuid'] ?? null, 'identifier' => $response['uuid'] ?? null,
'password' => config('app.default_password'), 'password' => config('app.default_password'),
'name' => trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? '')), 'name' => trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? '')),
'mobile' => $response['mobile'] ?? null, 'mobile' => $mobile,
]); ]);
} else { } else {
// Only update name and mobile for existing user // Only update name and mobile for existing user
$user->name = trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? '')); $user->name = trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? ''));
$user->mobile = $response['mobile'] ?? $user->mobile; $user->mobile = $mobile ?? $user->mobile;
$user->save(); // Do NOT update identifier! $user->save();
} }
$access_token = $user->createToken('user')->plainTextToken; $access_token = $user->createToken('user')->plainTextToken;
@@ -556,4 +561,12 @@ public function googleLogin(Request $request)
'token' => $token, 'token' => $token,
]); ]);
} }
public function leaderBoard(){
$users = User::where('xp', '>', 0)
->orderBy('xp', 'desc')
->get();
return $users;
}
} }
+3 -1
View File
@@ -58,7 +58,9 @@
// --------- user profile // --------- user profile
Route::post('/profile', [UserController::class, 'updateProfile']); Route::post('/profile', [UserController::class, 'updateProfile']);
Route::get('/profile', [UserController::class, 'profile']); Route::get('/profile', [UserController::class, 'profile']);
////-- leader board
Route::get('/leader-board', [UserController::class, 'leaderBoard']);
///-- mood routes ///-- mood routes