enc = $enc; } /** GET /v2/admin/passengers */ public function index(Request $request): JsonResponse { $status = $request->input('status', 'notDeleted'); $page = (int) $request->input('page', 1); $limit = min((int) $request->input('limit', 20), 100); $passengers = DB::connection('primary')->table('passengers') ->where('status', $status) ->orderBy('created_at', 'desc') ->skip(($page - 1) * $limit) ->take($limit) ->get(); $passengers = $passengers->map(function ($p) { $arr = (array) $p; return $this->enc->decryptFields($arr, Passenger::ENCRYPTED_FIELDS); }); $total = DB::connection('primary')->table('passengers')->where('status', $status)->count(); return response()->json([ 'status' => 'success', 'data' => $passengers, 'pagination' => ['page' => $page, 'limit' => $limit, 'total' => $total], ]); } /** GET /v2/admin/passengers/search?phone=XXX */ public function search(Request $request): JsonResponse { $phone = $request->input('phone'); if (!$phone) { return response()->json(['status' => 'failure', 'message' => 'Phone required'], 400); } $encPhone = $this->enc->encrypt($phone); $passenger = DB::connection('primary')->table('passengers') ->where('phone', $encPhone) ->first(); if (!$passenger) { return response()->json(['status' => 'failure', 'message' => 'Passenger not found'], 404); } $data = $this->enc->decryptFields((array) $passenger, Passenger::ENCRYPTED_FIELDS); unset($data['password'], $data['api_secret']); return response()->json(['status' => 'success', 'data' => $data]); } }