feat: add leader board
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,8 @@
|
|||||||
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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user