From 6ab690be27ab84ec03e19964e8dba7686d73edba Mon Sep 17 00:00:00 2001 From: Amirmahdi Nourkazemi Date: Mon, 22 Sep 2025 12:29:20 +0330 Subject: [PATCH] feat: sync with appro table --- app/Http/Controllers/UserController.php | 49 +++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 57702d5..b922a85 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -85,7 +85,44 @@ public function loginV2(Request $request) ]; } - + private function syncUserFromStatus(array $response, ?User $user = null): User +{ + // Try to find user if not passed + if (!$user) { + if (!empty($response['uuid'])) { + $user = User::where('identifier', $response['uuid'])->first(); + } + if (!$user && !empty($response['email'])) { + $user = User::where('email', $response['email'])->first(); + } + } + + $mobile = $response['mobile'] ?? null; + if ($mobile && User::where('mobile', $mobile)->where('id', '!=', $user?->id)->exists()) { + $mobile = null; // avoid duplicate + } + + if (!$user) { + // create new + $user = User::create([ + 'email' => $response['email'], + 'identifier' => $response['uuid'] ?? null, + 'password' => config('app.default_password'), + 'mobile' => $mobile, + 'first_name' => $response['first_name'] ?? null, + 'last_name' => $response['last_name'] ?? null, + ]); + } else { + // update existing + $user->first_name = $response['first_name'] ?? $user->first_name; + $user->last_name = $response['last_name'] ?? $user->last_name; + $user->mobile = $mobile ?? $user->mobile; + $user->save(); + } + + return $user; +} + public function loginForeginer(Request $request) { @@ -435,8 +472,14 @@ public function updateProfile(Request $request) public function profile() { - $user = auth()->user()->load(['breathingSessions.template']); - + $user = auth()->user(); + $response = Http::acceptJson()->withToken($request->bearerToken())->get('https://api.approagency.ir/api/status', [ + 'package_name' => $request->get('package_name') // you may need to pass it from frontend + ]); + + if ($response->successful()) { + $user = $this->syncUserFromStatus($response->json(), $user); + } return response()->json([ 'user' => $user ]);