get(['id', 'name', 'email', 'phone', 'license_number']); return response()->json($customers); } public function getCars() { $cars = Car::where('status', 'available')->get(); return response()->json($cars); } public function store(Request $request) { // Validate the request $request->validate([ 'customer_id' => 'required', 'car_id' => 'required', 'rental_type' => 'required', 'start_date' => 'required|date', 'end_date' => 'required|date|after:start_date', 'total_amount' => 'required|numeric', 'advance_payment' => 'nullable|numeric', ]); // Create rental $rental = Rental::create([ 'customer_id' => $request->customer_id, 'car_id' => $request->car_id, 'rental_type' => $request->rental_type, 'start_date' => $request->start_date, 'pickup_time' => $request->pickup_time, 'end_date' => $request->end_date, 'return_time' => $request->return_time, 'total_amount' => $request->total_amount, 'advance_payment' => $request->advance_payment ?? 0, 'status' => 'active', 'notes' => $request->notes, 'customer_signature' => $request->customer_signature, ]); // Update car status Car::find($request->car_id)->update(['status' => 'rented']); // Create advance payment if paid if ($request->advance_payment > 0) { Payment::create([ 'rental_id' => $rental->id, 'amount' => $request->advance_payment, 'method' => $request->payment_method ?? 'cash', 'status' => 'completed', ]); } return response()->json([ 'success' => true, 'rental_id' => $rental->id, ]); } public function generateContract($rentalId) { $rental = Rental::with(['car', 'customer', 'payments'])->findOrFail($rentalId); $pdf = PDF::loadView('contracts.rental', [ 'rental' => $rental, 'company' => [ 'name' => 'On The Road', 'address' => 'Manama, Bahrain', 'phone' => '+973-00000000', 'email' => 'info@ontheroad.bh', ] ]); return $pdf->download('rental-contract-' . $rental->id . '.pdf'); } }