From f8b964612598458d483f6a4891cb1b85269304fb Mon Sep 17 00:00:00 2001 From: mina-esn Date: Thu, 20 Aug 2026 17:05:43 +0330 Subject: [PATCH] wip: add flight creation flow with pending bug fixes --- .../Controllers/Admin/FlightController.php | 74 ++++++++++++++++++- routes/admin.php | 4 + 2 files changed, 76 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Admin/FlightController.php b/app/Http/Controllers/Admin/FlightController.php index 1cf6401..176a450 100644 --- a/app/Http/Controllers/Admin/FlightController.php +++ b/app/Http/Controllers/Admin/FlightController.php @@ -3,8 +3,14 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; +use App\Http\Requests\Admin\Flight\FlightStoreRequest; +use App\Models\Airline; +use App\Models\Airport; +use App\Models\City; +use App\Models\Country; use App\Models\Flight; use Illuminate\Http\Request; +use Illuminate\Http\JsonResponse; class FlightController extends Controller { @@ -34,17 +40,81 @@ class FlightController extends Controller public function create() { + $title = 'ایجاد پرواز'; + + $airlines = Airline::query() + ->orderBy('name') + ->get(); + + $countries = Country::query() + ->orderBy('name') + ->get(); + + $iranCountry = Country::query() + ->where('name', 'iran') + ->first(); + + return view('admin.flights.create', compact( + 'title', + 'airlines', + 'countries', + 'iranCountry' + )); } + public function citiesByCountry(Country $country): JsonResponse + { + $cities = City::query() + ->where('county_id', $country->id) + ->orderBy('name') + ->get([ + 'id', + 'name', + ]); - public function store() + return response()->json($cities); + } + public function airportsByCity(City $city): JsonResponse + { + $airports = Airport::query() + ->where('city_id', $city->id) + ->orderBy('name') + ->get([ + 'id', + 'name', + ]); + + return response()->json($airports); + } + + public function store(FlightStoreRequest $request) { } - public function edit() + public function edit(Flight $flight) { + $title = 'ویرایش پرواز'; + $flight->load(['origin_airport.city.country', 'airport.city.country']); + + $airlines = Airline::query()->orderBy('name')->get(); + $countries = Country::query()->orderBy('name')->get(); + + $iranCountry = Country::query()->where('name', 'iran')->first(); + + $originCountryId = $flight->origin_airport?->city?->country?->id; + $destinationCountryId = $flight->airport?->city?->country?->id; + + return view('admin.flights.edit', compact( + 'title', + 'flight', + 'airlines', + 'countries', + 'iranCountry', + 'originCountryId', + 'destinationCountryId' + )); } public function update() diff --git a/routes/admin.php b/routes/admin.php index 7ab6461..810abc6 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -86,6 +86,10 @@ Route::prefix('admin')->name('admin.')->group(function () { Route::get('create', 'create')->name('create'); Route::post('store', 'store')->name('store'); + Route::get('cities-by-country/{country}', 'citiesByCountry')->name('cities-by-country'); + + Route::get('airports-by-city/{city}', 'airportsByCity')->name('airports-by-city'); + Route::prefix('trash')->name('trash.')->group(function () { Route::get('/', 'trash')->name('index');