enc = $enc; } /** GET /v2/misc/test */ public function test(): JsonResponse { return response()->json([ 'status' => 'success', 'message' => 'V2 Connection Stable' ]); } /** GET /v2/misc/package-info */ public function packageInfo(): JsonResponse { $info = DB::connection('primary')->table('packageInfo')->orderBy('id', 'desc')->first(); if (!$info) { return response()->json([ 'status' => 'failure', 'message' => 'No package info found' ]); } return response()->json([ 'status' => 'success', 'message' => $info ]); } /** GET /v2/misc/kazan-percent */ public function getKazanPercent(Request $request): JsonResponse { $country = $request->input('country'); if (!$country) { return response()->json([ 'status' => 'failure', 'message' => 'Country parameter is missing' ]); } $data = DB::connection('primary')->table('kazan') ->where('country', $country) ->get(); if ($data->isEmpty()) { return response()->json([ 'status' => 'failure', 'message' => 'No Kazan record found' ]); } return response()->json([ 'status' => 'success', 'message' => $data ]); } /** GET /v2/misc/help-center */ public function getHelpCenter(Request $request): JsonResponse { $driverId = $request->input('driverID'); if (!$driverId) { return response()->json([ 'status' => 'failure', 'message' => 'driverID is required' ]); } $data = DB::connection('primary')->table('helpCenter') ->where('driverID', $driverId) ->orderBy('datecreated', 'desc') ->get(); if ($data->isEmpty()) { return response()->json([ 'status' => 'failure', 'message' => 'Help question not found' ]); } return response()->json([ 'status' => 'success', 'message' => $data ]); } /** GET /v2/misc/tips */ public function getTips(Request $request): JsonResponse { $driverId = $request->input('driverID'); $passengerId = $request->input('passendgerID'); if (!$driverId && !$passengerId) { return response()->json([ 'status' => 'failure', 'message' => 'driverID or passendgerID is required' ]); } $query = DB::connection('primary')->table('tips'); if ($driverId) { $query->where('driverID', $driverId); } if ($passengerId) { $query->orWhere('passendgerID', $passengerId); } $data = $query->get(); if ($data->isEmpty()) { return response()->json([ 'status' => 'failure', 'message' => 'No tips records found' ]); } return response()->json([ 'status' => 'success', 'message' => $data ]); } /** GET /v2/misc/license */ public function getLicense(): JsonResponse { $data = DB::connection('primary')->table('license')->get(); if ($data->isEmpty()) { return response()->json([ 'status' => 'failure', 'message' => 'License info not found' ]); } return response()->json([ 'status' => 'success', 'message' => $data ]); } /** POST /v2/misc/help-center */ public function storeHelpCenter(Request $request): JsonResponse { $driverId = $request->input('driverID'); $passengerId = $request->input('passengerID'); $helpQuestion = $request->input('helpQuestion'); if ((!$driverId && !$passengerId) || !$helpQuestion) { return response()->json(['status' => 'failure', 'message' => 'Missing parameters']); } try { DB::connection('primary')->table('helpCenter')->insert([ 'driverID' => $driverId ?? $passengerId, 'helpQuestion' => $helpQuestion, 'datecreated' => now() ]); return response()->json(['status' => 'success', 'message' => 'Help question saved successfully']); } catch (\Exception $e) { return response()->json(['status' => 'failure', 'message' => 'Database error: ' . $e->getMessage()]); } } /** POST /v2/misc/tips */ public function storeTips(Request $request): JsonResponse { $passengerId = $request->input('passengerID'); $driverId = $request->input('driverID'); $rideId = $request->input('rideID'); $tipAmount = $request->input('tipAmount'); if (!$passengerId || !$driverId || !$rideId || !$tipAmount) { return response()->json(['status' => 'failure', 'message' => 'Missing parameters']); } try { DB::connection('primary')->table('tips')->insert([ 'passengerID' => $passengerId, 'driverID' => $driverId, 'rideID' => $rideId, 'tipAmount' => $tipAmount, 'created_at' => now() ]); return response()->json(['status' => 'success', 'message' => 'Tip inserted successfully']); } catch (\Exception $e) { return response()->json(['status' => 'failure', 'message' => 'Database error: ' . $e->getMessage()]); } } /** GET /v2/misc/api-key */ public function getApiKey(): JsonResponse { $data = DB::connection('primary')->table('apiKey')->first(); if (!$data) { return response()->json([ 'status' => 'failure', 'message' => 'API Key not found' ]); } return response()->json([ 'status' => 'success', 'message' => $data ]); } /** POST /v2/misc/egypt-phones */ public function saveEgyptPhones(Request $request): JsonResponse { $request->validate([ 'phones' => 'required|string', 'name' => 'nullable|string', 'phones2' => 'nullable|string', ]); try { $id = DB::connection('primary')->table('contactEgypt')->insertGetId([ 'phones' => $request->input('phones'), 'name' => $request->input('name'), 'phones2' => $request->input('phones2'), ]); if ($id) { return response()->json([ 'status' => 'success', 'message' => 'Contact data saved successfully' ]); } else { return response()->json([ 'status' => 'failure', 'message' => 'Failed to save contact data' ]); } } catch (\Exception $e) { return response()->json([ 'status' => 'failure', 'message' => 'Database error: ' . $e->getMessage() ]); } } /** * POST /v2/admin/errors * Accepts client-side error reports from Flutter apps. * Public endpoint (no auth required) — just logs the error. */ public function logClientError(Request $request): JsonResponse { $body = $request->getContent(); \Illuminate\Support\Facades\Log::channel('single')->warning('Client Error Report', [ 'ip' => $request->ip(), 'body' => substr($body, 0, 2000), // Limit to 2KB 'user_agent' => $request->userAgent(), ]); return response()->json([ 'status' => 'success', 'message' => 'Error logged', ]); } }