feat: sync with appro table
This commit is contained in:
@@ -85,6 +85,43 @@ 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)
|
public function loginForeginer(Request $request)
|
||||||
@@ -435,8 +472,14 @@ public function updateProfile(Request $request)
|
|||||||
|
|
||||||
public function profile()
|
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([
|
return response()->json([
|
||||||
'user' => $user
|
'user' => $user
|
||||||
]);
|
]);
|
||||||
|
|||||||
Reference in New Issue
Block a user