diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index d1f2ac5..3067888 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -170,6 +170,7 @@ class AuthController extends Controller 'driver_license_back' => 'required|url', 'car_license_front' => 'required|url', 'car_license_back' => 'required|url', + 'national_number' => 'required|string', ]); $data = $request->all(); @@ -396,7 +397,7 @@ class AuthController extends Controller ->select([ 'd.id', 'd.phone', 'd.email', 'd.gender', 'd.status', 'd.first_name', 'd.last_name', 'd.password', - 'd.name_arabic', + 'd.name_arabic', 'd.national_number', 'phone_verification.verified as is_verified', 'invites.isInstall', 'shamCash.is_claimed', @@ -418,7 +419,7 @@ class AuthController extends Controller } // Decrypt necessary fields - $fieldsToDecrypt = ['email', 'phone', 'first_name', 'last_name', 'gender', 'name_arabic']; + $fieldsToDecrypt = ['email', 'phone', 'first_name', 'last_name', 'gender', 'name_arabic', 'national_number']; foreach ($fieldsToDecrypt as $field) { if (!empty($driver[$field])) { $dec = $this->encryption->decrypt($driver[$field]); @@ -459,7 +460,7 @@ class AuthController extends Controller ->leftJoin('driverToken', 'driverToken.captain_id', '=', 'd.id') ->select([ 'd.id', 'd.phone', 'd.email', 'd.gender', 'd.status', - 'd.first_name', 'd.last_name', 'd.name_arabic', + 'd.first_name', 'd.last_name', 'd.name_arabic', 'd.national_number', 'd.birthdate', 'd.site', 'd.employmentType', 'd.maritalStatus', 'd.accountBank', 'd.bankCode', 'phone_verification.is_verified', @@ -478,7 +479,7 @@ class AuthController extends Controller $driver = (array) $row; // Decrypt necessary fields - $fieldsToDecrypt = ['email', 'phone', 'first_name', 'last_name', 'gender', 'name_arabic']; + $fieldsToDecrypt = ['email', 'phone', 'first_name', 'last_name', 'gender', 'name_arabic', 'national_number']; foreach ($fieldsToDecrypt as $field) { if (!empty($driver[$field])) { $dec = $this->encryption->decrypt($driver[$field]); diff --git a/app/Http/Controllers/MiscController.php b/app/Http/Controllers/MiscController.php index 433bfad..25e5ccc 100644 --- a/app/Http/Controllers/MiscController.php +++ b/app/Http/Controllers/MiscController.php @@ -270,9 +270,10 @@ class MiscController extends Controller 'user_agent' => $request->userAgent(), ]); + $error = $request->input('error') ?? 'Error logged'; return response()->json([ 'status' => 'success', - 'message' => 'Error logged', + 'message' => $error, ]); } } diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index e2f316e..1663fa8 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -176,4 +176,37 @@ class ProfileController extends Controller return response()->json(['status' => 'success', 'message' => 'Sham Cash details updated']); } + + /** + * POST /v2/profile/driver/car + */ + public function updateDriverCar(Request $request): JsonResponse + { + $id = $request->attributes->get('_jwt_user_id'); + $car = CarRegistration::where('driverID', $id)->where('isDefault', 1)->first(); + + if (!$car) { + return response()->json(['status' => 'failure', 'message' => 'Car not found'], 404); + } + + $fields = ['make', 'model', 'year', 'color', 'color_hex', 'expiration_date', 'vin', 'car_plate']; + $updates = []; + + foreach ($fields as $f) { + if ($request->has($f)) { + $val = $request->input($f); + if (in_array($f, CarRegistration::ENCRYPTED_FIELDS)) { + $updates[$f] = $this->enc->encrypt($val); + } else { + $updates[$f] = $val; + } + } + } + + if (!empty($updates)) { + $car->update($updates); + } + + return response()->json(['status' => 'success', 'message' => 'Vehicle details updated']); + } } diff --git a/app/Http/Controllers/RideController.php b/app/Http/Controllers/RideController.php index 441579b..17b0ab4 100644 --- a/app/Http/Controllers/RideController.php +++ b/app/Http/Controllers/RideController.php @@ -613,15 +613,24 @@ class RideController extends Controller $query->forPassenger($userId); } - $rides = $query->orderBy('id', 'desc') + $rides = $query->with('passenger')->orderBy('id', 'desc') ->skip(($page - 1) * $limit) ->take($limit) ->get() ->map(function ($ride) { $ride->order_id = $ride->id; - $ride->start_name = "Pickup point"; // Simplified for now + $ride->start_name = "Pickup point"; $ride->end_name = "Destination point"; $ride->price = (string) number_format($ride->price, 0, '.', ''); + + if ($ride->passenger) { + $p = $ride->passenger; + $fname = !empty($p->first_name) ? $this->encryption->decrypt($p->first_name) : ''; + $lname = !empty($p->last_name) ? $this->encryption->decrypt($p->last_name) : ''; + $ride->passenger_name = trim($fname . ' ' . $lname); + $ride->passenger_phone = !empty($p->phone) ? $this->encryption->decrypt($p->phone) : ''; + } + return $ride; }); diff --git a/routes/api.php b/routes/api.php index 73273b3..47ce5bb 100644 --- a/routes/api.php +++ b/routes/api.php @@ -112,6 +112,7 @@ Route::prefix('v2')->middleware(['hmac.auth', 'jwt.auth'])->group(function () { Route::match(['post', 'put'], '/profile/passenger', [ProfileController::class, 'updatePassenger']); Route::match(['post', 'put'], '/profile/driver/email', [ProfileController::class, 'updateDriverEmail']); Route::post('/profile/driver/shamcash', [ProfileController::class, 'updateShamCash']); + Route::match(['post', 'put'], '/profile/driver/car', [ProfileController::class, 'updateDriverCar']); // ── Wallet ── // All wallet operations (balance, funds, transactions) are handled by the