Add more airlines and fix edit bugs

This commit is contained in:
2026-04-18 14:22:51 +10:00
parent 147bf43f09
commit 63d6fb9e76
8 changed files with 106 additions and 30 deletions
+4 -4
View File
@@ -137,12 +137,12 @@ class FlightController extends Controller
'flight_class' => $flight->flightClass->toArray(), 'flight_class' => $flight->flightClass->toArray(),
'flight_reason' => $flight->flightReason->toArray(), 'flight_reason' => $flight->flightReason->toArray(),
'airline_options' => $flight->airline 'airline_options' => $flight->airline
? [['value' => $flight->airline->id, 'title' => $flight->airline->name]] ? [['value' => $flight->airline->id, 'title' => $flight->airline->displayName()]]
: [], : [],
'from_options' => [['value' => $flight->departureAirport->id, 'title' => $flight->departureAirport->name, 'country_code' => strtolower($flight->departureAirport->region->country->code)]], 'from_options' => [['value' => $flight->departureAirport->id, 'title' => $flight->departureAirport->displayName(), 'country_code' => strtolower($flight->departureAirport->region->country->code)]],
'to_options' => [['value' => $flight->arrivalAirport->id, 'title' => $flight->arrivalAirport->name, 'country_code' => strtolower($flight->arrivalAirport->region->country->code)]], 'to_options' => [['value' => $flight->arrivalAirport->id, 'title' => $flight->arrivalAirport->displayName(), 'country_code' => strtolower($flight->arrivalAirport->region->country->code)]],
'aircraft_options' => $flight->aircraft 'aircraft_options' => $flight->aircraft
? [['value' => $flight->aircraft->id, 'title' => $flight->aircraft->name]] ? [['value' => $flight->aircraft->id, 'title' => $flight->aircraft->displayName()]]
: [], : [],
]; ];
return Inertia::render('AddFlight', [ return Inertia::render('AddFlight', [
+10 -10
View File
@@ -55,9 +55,9 @@ class FlightImportController extends Controller
->orderBy('model_full_name') ->orderBy('model_full_name')
->limit(10) ->limit(10)
->get(['id', 'manufacturer_code', 'model_full_name', 'designator']) ->get(['id', 'manufacturer_code', 'model_full_name', 'designator'])
->map(fn($a) => [ ->map(fn($aircraft) => [
'value' => $a->id, 'value' => $aircraft->id,
'title' => "{$a->manufacturer_code} {$a->model_full_name} ({$a->designator})", 'title' => $aircraft->displayName(),
]) ])
->values() ->values()
->toArray(); ->toArray();
@@ -92,10 +92,10 @@ class FlightImportController extends Controller
->limit(10) ->limit(10)
->orderBy('id') ->orderBy('id')
->get(['id', 'name', 'municipality', 'iata_code', 'icao_code', 'region_id']) ->get(['id', 'name', 'municipality', 'iata_code', 'icao_code', 'region_id'])
->map(fn($a) => [ ->map(fn($airport) => [
'value' => $a->id, 'value' => $airport->id,
'title' => "{$a->municipality} / {$a->name} ({$a->iata_code}/{$a->icao_code})", 'title' => $airport->displayName(),
'country_code' => strtolower($a?->region->country->code ?? ''), 'country_code' => strtolower($airport?->region->country->code ?? ''),
]) ])
->values() ->values()
->toArray(); ->toArray();
@@ -129,9 +129,9 @@ class FlightImportController extends Controller
->orderByDesc('active') ->orderByDesc('active')
->limit(10) ->limit(10)
->get(['id', 'name', 'IATA_code', 'ICAO_code']) ->get(['id', 'name', 'IATA_code', 'ICAO_code'])
->map(fn($a) => [ ->map(fn($airline) => [
'value' => $a->id, 'value' => $airline->id,
'title' => "{$a->name} ({$a->IATA_code}/{$a->ICAO_code})", 'title' => $airline->displayName(),
]) ])
->values() ->values()
->toArray(); ->toArray();
+10 -10
View File
@@ -27,9 +27,9 @@ class SearchController extends Controller
}) })
->limit(50) ->limit(50)
->get(['id', 'name', 'IATA_code', 'ICAO_code', 'logo']) ->get(['id', 'name', 'IATA_code', 'ICAO_code', 'logo'])
->map(fn($a) => [ ->map(fn($airline) => [
'value' => $a->id, 'value' => $airline->id,
'title' => "{$a->name} ({$a->IATA_code}/{$a->ICAO_code})", 'title' => $airline->displayName(),
]) ])
->values(); ->values();
} }
@@ -45,9 +45,9 @@ class SearchController extends Controller
->limit(200) ->limit(200)
->orderBy('id', 'asc') ->orderBy('id', 'asc')
->get(['id', 'manufacturer_code', 'model_full_name', 'designator']) ->get(['id', 'manufacturer_code', 'model_full_name', 'designator'])
->map(fn($a) => [ ->map(fn($aircraft) => [
'value' => $a->id, 'value' => $aircraft->id,
'title' => "{$a->manufacturer_code} {$a->model_full_name} ({$a->designator})", 'title' => $aircraft->displayName(),
]) ])
->values(); ->values();
} }
@@ -74,10 +74,10 @@ class SearchController extends Controller
", [$q, $q])) ", [$q, $q]))
->limit(15) ->limit(15)
->get(['id', 'name', 'municipality', 'iata_code', 'icao_code', 'region_id']) ->get(['id', 'name', 'municipality', 'iata_code', 'icao_code', 'region_id'])
->map(fn($a) => [ ->map(fn($airport) => [
'value' => $a->id, 'value' => $airport->id,
'title' => "{$a->municipality} / {$a->name} ({$a->iata_code}/{$a->icao_code})", 'title' => $airport->displayName(),
'country_code' => strtolower($a->region->country->code), 'country_code' => strtolower($airport->region->country->code),
]) ])
->values(); ->values();
} }
+4
View File
@@ -19,4 +19,8 @@ class Aircraft extends Model
protected $casts = [ protected $casts = [
'engine_count' => 'integer', 'engine_count' => 'integer',
]; ];
public function displayName() : string{
return "{$this->manufacturer_code} {$this->model_full_name} ({$this->designator})";
}
} }
+4
View File
@@ -27,6 +27,10 @@ class Airline extends Model
public $timestamps = false; public $timestamps = false;
public function displayName() : string {
return "{$this->name} ({$this->IATA_code}/{$this->ICAO_code})";
}
public function country(): BelongsTo public function country(): BelongsTo
{ {
return $this->belongsTo(Country::class); return $this->belongsTo(Country::class);
+4
View File
@@ -27,6 +27,10 @@ class Airport extends Model
'elevation_ft' => 'integer', 'elevation_ft' => 'integer',
]; ];
public function displayName() : string{
return "{$this->municipality} / {$this->name} ({$this->iata_code}/{$this->icao_code})";
}
public function region(): BelongsTo public function region(): BelongsTo
{ {
return $this->belongsTo(Region::class); return $this->belongsTo(Region::class);
@@ -1,17 +1,82 @@
<?php <?php
use App\Models\Airline;
use App\Models\Country;
use App\Models\UserFlight;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
return new class extends Migration return new class extends Migration
{ {
/** public function createAirline(
* Run the migrations. string $name,
*/ bool $active,
string $countryCode,
?string $iataCode = null,
?string $icaoCode = null,
?string $logo = null,
string $internalName = null,
): self {
$country = Country::where('code', $countryCode)->firstOrFail();
$logo = $logo ?? $iataCode . '.png';
Airline::create([
'IATA_code' => $iataCode,
'ICAO_code' => $icaoCode,
'name' => $name,
'internal_name' => $internalName,
'active' => $active,
'logo' => $logo,
'country_id' => $country->id,
]);
return $this;
}
function createAirlines(): void{
$this
->createAirline(name: 'Horizontal Falls Seaplane Adventures', active: true, countryCode: 'AU', logo: 'horizontal-falls-seaplane-adventures.png', internalName: 'horizontal-falls-seaplane-adventures')
->createAirline(name: 'Pineapple Air', active: true, countryCode: 'BS', icaoCode: 'PNP', logo: 'pineapple-air.png', internalName: 'pineapple-air')
->createAirline(name: 'ATA Airlines', active: true, countryCode: 'IR', iataCode: 'I3', icaoCode: 'TBZ', logo: 'ata-airlines.png', internalName: 'ata-airlines')
->createAirline(name: 'Chabahar Air', active: true, countryCode: 'IR', iataCode: null, icaoCode: 'IRU', logo: 'chabahar-airlines.png', internalName: 'chabahar-airlines')
->createAirline(name: 'Kish Air', active: true, countryCode: 'IR', iataCode: 'Y9', icaoCode: 'KIS', logo: 'kish-air.png', internalName: 'kish-air')
->createAirline(name: 'Meraj Airlines', active: true, countryCode: 'IR', iataCode: 'JI', icaoCode: 'MRJ', logo: 'meraj-airlines.png', internalName: 'meraj-airlines')
->createAirline(name: 'Qazaq Air', active: false, countryCode: 'KZ', iataCode: 'IQ', icaoCode: 'QAZ', logo: 'qazaq-air.png', internalName: 'qazaq-air')
->createAirline(name: 'Raimon Airways', active: true, countryCode: 'IR', iataCode: null, icaoCode: 'RAI', logo: 'raimon-airways.png', internalName: 'raimon-airways')
->createAirline(name: 'Saha Airlines', active: true, countryCode: 'IR', iataCode: null, icaoCode: 'IRZ', logo: 'saha-airlines.png', internalName: 'saha-airlines')
->createAirline(name: 'Yazd Airways', active: true, countryCode: 'IR', iataCode: null, icaoCode: 'DZD', logo: 'yazd-airways.png', internalName: 'yazd-airways')
->createAirline(name: 'Zagros Airlines', active: true, countryCode: 'IR', iataCode: 'ZO', icaoCode: 'IZG', logo: 'zagros-airlines.png', internalName: 'zagros-airlines')
->createAirline(name: 'Taban Airlines', active: true, countryCode: 'IR', iataCode: null, icaoCode: 'TBN', logo: 'taban-airlines.png', internalName: 'taban-airlines')
->createAirline(name: 'Maun Helicopter Horizons', active: true, countryCode: 'BW', iataCode: null, icaoCode: null, logo: 'blank.png', internalName: 'maun-helicopter-horizons')
->createAirline(name: 'Pacific Mission Aviation', active: true, countryCode: 'PW', iataCode: null, icaoCode: null, logo: 'pacific-mission-aviation.png', internalName: 'pacific-mission-aviation')
->createAirline(name: 'Jetstar Pacific', active: false, countryCode: 'VN', iataCode: 'BL', icaoCode: 'PIC', logo: 'jq.png', internalName: 'jetstar-pacific')
->createAirline(name: 'Jetsmart', active: true, countryCode: 'CL', iataCode: 'JA', icaoCode: 'JAT', logo: 'ja.png', internalName: 'jetsmart')
->createAirline(name: 'Jetsmart Peru', active: true, countryCode: 'PE', iataCode: 'JZ', icaoCode: 'JAP', logo: 'jz.png', internalName: 'jetsmart-peru')
->createAirline(name: 'Jetsmart Argentina', active: true, countryCode: 'AR', iataCode: 'WJ', icaoCode: 'JES', logo: 'wj.png', internalName: 'jetsmart-argentina')
->createAirline(name: 'Jetsmart Colombia', active: true, countryCode: 'CO', iataCode: 'J6', icaoCode: 'JEC', logo: 'j6.png', internalName: 'jetsmart-colombia')
;
}
public function up(): void public function up(): void
{ {
// DB::table('airlines')->whereNull('logo')->update(['logo' => 'blank.png']);
Schema::table('airlines', function (Blueprint $table) {
$table->string('logo')->default('blank.png')->nullable(false)->change();
});
Airline::where('name', 'AVIANCA')->update(['name' => 'Avianca']);
$this->createAirlines();
UserFlight::where('seat_type_id', null)->update(['seat_type_id' => 0]);
UserFlight::where('flight_reason_id', null)->update(['flight_reason_id' => 0]);
UserFlight::where('flight_class_id', null)->update(['flight_class_id' => 0]);
} }
/** /**
+1 -2
View File
@@ -298,6 +298,7 @@ const arrivalMax = computed(() => {
<v-row> <v-row>
<v-col cols="12"> <v-col cols="12">
<AircraftSearchBox <AircraftSearchBox
:key="`aircraft-${lookupKey}`"
v-model="form.aircraft" v-model="form.aircraft"
:prefilled-options="aircraftOptionsData" :prefilled-options="aircraftOptionsData"
:error-messages="submitForm.errors.aircraft_id" :error-messages="submitForm.errors.aircraft_id"
@@ -305,7 +306,6 @@ const arrivalMax = computed(() => {
/> />
</v-col> </v-col>
</v-row> </v-row>
<!-- Registration + Flight class --> <!-- Registration + Flight class -->
<v-row> <v-row>
<v-col cols="12" md="6"> <v-col cols="12" md="6">
@@ -399,7 +399,6 @@ const arrivalMax = computed(() => {
/> />
</v-col> </v-col>
</v-row> </v-row>
<!-- Submit --> <!-- Submit -->
<v-row> <v-row>
<v-col cols="12"> <v-col cols="12">