where('user_id', auth()->id()) ->with([ 'flight.departureAirport.city', 'flight.arrivalAirport.city', 'tourDate.tour', ]) ->orderByDesc('created_at') ->paginate(10); return view('account.booking', compact('bookings')); } public function store(Request $request) { $request->validate([ 'flight_id' => 'nullable|exists:flights,id', 'tour_date_id' => 'nullable|exists:tour_dates,id', 'adult_count' => 'required|integer|min:1', 'child_count' => 'required|integer|min:0', ]); $totalPrice = 0; if ($request->flight_id) { $flight = Flight::findOrFail($request->flight_id); $totalPrice = $flight->price * ($request->adult_count + $request->child_count); } elseif ($request->tour_date_id) { $tourDate = TourDate::findOrFail($request->tour_date_id); $totalPrice = $tourDate->price * ($request->adult_count + $request->child_count); } $booking = Booking::create([ 'user_id' => auth()->id(), 'flight_id' => $request->flight_id, 'tour_date_id' => $request->tour_date_id, 'adult_count' => $request->adult_count, 'child_count' => $request->child_count, 'total_price' => $totalPrice, 'tracking_code' => 'BK-' . strtoupper(Str::random(10)), 'status' => BookingStatus::PENDING, 'created_at' => now(), 'updated_at' => now(), ]); return redirect() ->route('account.booking') ->with('success', 'رزرو شما با موفقیت ثبت شد.'); } }