enc = $enc; } /** POST /v2/invites/driver */ public function inviteDriver(Request $request): JsonResponse { if (!$request->has(['driverId', 'inviterDriverPhone'])) { return response()->json([ 'status' => 'failure', 'message' => 'Missing required parameters' ]); } $driverId = $request->input('driverId'); $phone = $request->input('inviterDriverPhone'); $phoneEnc = $this->enc->encrypt($phone); // التحقق من وجود دعوة مسبقة $existing = DB::connection('primary')->table('invites') ->where('inviterDriverPhone', $phoneEnc) ->first(); if ($existing) { if ($existing->isInstall == 1) { return response()->json([ 'status' => 'failure', 'message' => $existing->inviteCode ]); } $expirationTime = now()->addHour(); DB::connection('primary')->table('invites') ->where('id', $existing->id) ->update([ 'driverId' => $driverId, 'expirationTime' => $expirationTime, 'createdAt' => now() ]); return response()->json([ 'status' => 'success', 'message' => [ 'inviteId' => $existing->id, 'inviteCode' => $existing->inviteCode, 'expirationTime' => $expirationTime->toDateTimeString() ] ]); } // إنشاء كود فريد $inviteCode = $this->generateUniqueCode(); $expirationTime = now()->addHour(); try { $id = DB::connection('primary')->table('invites')->insertGetId([ 'driverId' => $driverId, 'inviterDriverPhone' => $phoneEnc, 'inviteCode' => $inviteCode, 'expirationTime' => $expirationTime, 'createdAt' => now(), 'isInstall' => 0 ]); return response()->json([ 'status' => 'success', 'message' => [ 'inviteId' => $id, 'inviteCode' => $inviteCode, 'expirationTime' => $expirationTime->toDateTimeString() ] ]); } catch (\Exception $e) { return response()->json([ 'status' => 'failure', 'message' => 'Database error: ' . $e->getMessage() ]); } } /** POST /v2/invites/passenger */ public function invitePassenger(Request $request): JsonResponse { return response()->json([ 'status' => 'success', 'message' => 'Not implemented yet' ]); } /** GET /v2/invites/gift */ public function checkGift(Request $request): JsonResponse { $userId = $request->input('_jwt_user_id'); return response()->json([ 'status' => 'success', 'message' => ['gift_available' => true] ]); } private function generateUniqueCode(): string { while (true) { $letters = strtoupper(Str::random(4)); $numbers = rand(100, 999); $code = $letters . $numbers; $exists = DB::connection('primary')->table('invites') ->where('inviteCode', $code) ->exists(); if (!$exists) { return $code; } } } }