diff --git a/app/Database/migrations/2021_11_27_132418_add_hub_to_aircraft.php b/app/Database/migrations/2021_11_27_132418_add_hub_to_aircraft.php new file mode 100644 index 00000000..a4157717 --- /dev/null +++ b/app/Database/migrations/2021_11_27_132418_add_hub_to_aircraft.php @@ -0,0 +1,15 @@ +string('hub_id', 5)->nullable()->after('airport_id'); + }); + } +} diff --git a/app/Http/Controllers/Admin/AircraftController.php b/app/Http/Controllers/Admin/AircraftController.php index 1a62d134..842d7bb3 100644 --- a/app/Http/Controllers/Admin/AircraftController.php +++ b/app/Http/Controllers/Admin/AircraftController.php @@ -79,6 +79,7 @@ class AircraftController extends Controller { return view('admin.aircraft.create', [ 'airports' => $this->airportRepo->selectBoxList(), + 'hubs' => $this->airportRepo->selectBoxList(true, true), 'subfleets' => Subfleet::all()->pluck('name', 'id'), 'statuses' => AircraftStatus::select(false), 'subfleet_id' => $request->query('subfleet'), @@ -143,6 +144,7 @@ class AircraftController extends Controller return view('admin.aircraft.edit', [ 'aircraft' => $aircraft, 'airports' => $this->airportRepo->selectBoxList(), + 'hubs' => $this->airportRepo->selectBoxList(true, true), 'subfleets' => Subfleet::all()->pluck('name', 'id'), 'statuses' => AircraftStatus::select(false), ]); diff --git a/app/Models/Aircraft.php b/app/Models/Aircraft.php index 4bf59924..3b39f75f 100644 --- a/app/Models/Aircraft.php +++ b/app/Models/Aircraft.php @@ -13,6 +13,7 @@ use Znck\Eloquent\Traits\BelongsToThrough; * @property int id * @property mixed subfleet_id * @property string airport_id The apt where the aircraft is + * @property string hub_id The apt where the aircraft is based * @property string ident * @property string name * @property string icao @@ -22,6 +23,7 @@ use Znck\Eloquent\Traits\BelongsToThrough; * @property float zfw * @property string hex_code * @property Airport airport + * @property Airport hub * @property Subfleet subfleet * @property int status * @property int state @@ -39,6 +41,7 @@ class Aircraft extends Model protected $fillable = [ 'subfleet_id', 'airport_id', + 'hub_id', 'iata', 'icao', 'name', @@ -127,6 +130,11 @@ class Aircraft extends Model return $this->belongsTo(Airport::class, 'airport_id'); } + public function hub() + { + return $this->hasOne(Airport::class, 'id', 'hub_id'); + } + public function pireps() { return $this->hasMany(Pirep::class, 'aircraft_id'); diff --git a/app/Services/ImportExport/AircraftImporter.php b/app/Services/ImportExport/AircraftImporter.php index 01dbd7b3..be6e0837 100644 --- a/app/Services/ImportExport/AircraftImporter.php +++ b/app/Services/ImportExport/AircraftImporter.php @@ -25,6 +25,7 @@ class AircraftImporter extends ImportExport 'subfleet' => 'required', 'iata' => 'nullable', 'icao' => 'nullable', + 'hub_id' => 'nullable', 'airport_id' => 'nullable', 'name' => 'required', 'registration' => 'required', @@ -53,7 +54,7 @@ class AircraftImporter extends ImportExport } /** - * Import a flight, parse out the different rows + * Import an aircraft, parse out the different rows * * @param array $row * @param int $index diff --git a/resources/views/admin/aircraft/fields.blade.php b/resources/views/admin/aircraft/fields.blade.php index 20e4b1c8..27c1742c 100644 --- a/resources/views/admin/aircraft/fields.blade.php +++ b/resources/views/admin/aircraft/fields.blade.php @@ -5,7 +5,7 @@  Subfleet and Status
-
+
{{ Form::label('subfleet_id', 'Subfleet:') }} {{ Form::select('subfleet_id', $subfleets, $subfleet_id ?? null, [ 'class' => 'form-control select2', @@ -15,17 +15,21 @@

{{ $errors->first('subfleet_id') }}

-
+
{{ Form::label('status', 'Status:') }} {{ Form::select('status', $statuses, null, ['class' => 'form-control select2', 'placeholder' => 'Select Status']) }}

{{ $errors->first('subfleet_id') }}

-
+
+ {{ Form::label('hub_id', 'Hub:') }} + {{ Form::select('hub_id', $hubs, null, ['class' => 'form-control select2']) }} +

{{ $errors->first('hub_id') }}

+
+ +
{{ Form::label('airport_id', 'Location:') }} - {{ Form::select('airport_id', $airports, null, [ - 'class' => 'form-control select2' - ]) }} + {{ Form::select('airport_id', $airports, null, ['class' => 'form-control select2']) }}

{{ $errors->first('airport_id') }}

diff --git a/resources/views/admin/aircraft/table.blade.php b/resources/views/admin/aircraft/table.blade.php index 83634f7e..835ec32d 100644 --- a/resources/views/admin/aircraft/table.blade.php +++ b/resources/views/admin/aircraft/table.blade.php @@ -3,6 +3,7 @@ Name Registration Subfleet + Hub Location Hours Active @@ -22,6 +23,7 @@ - @endif + {{ $ac->hub_id }} {{ $ac->airport_id }} @minutestotime($ac->flight_time) diff --git a/resources/views/admin/subfleets/table.blade.php b/resources/views/admin/subfleets/table.blade.php index 359fe56d..21f7ad89 100644 --- a/resources/views/admin/subfleets/table.blade.php +++ b/resources/views/admin/subfleets/table.blade.php @@ -4,6 +4,7 @@ Name Airline Type + Hub Aircraft @@ -17,6 +18,7 @@ {{ optional($subfleet->airline)->name }} {{ $subfleet->type }} + {{ $subfleet->hub_id }} {{ $subfleet->aircraft->count() }} {{ Form::open(['route' => ['admin.subfleets.destroy', $subfleet->id], 'method' => 'delete']) }} diff --git a/tests/data/aircraft-update.csv b/tests/data/aircraft-update.csv index 08bc344f..9b5d4124 100644 --- a/tests/data/aircraft-update.csv +++ b/tests/data/aircraft-update.csv @@ -1,3 +1,3 @@ -subfleet,iata, icao,airport_id, name,registration,hex_code,mtow,zfw,status -A32X,A320,320,,A320-211,N309US,,,,S -74X,747 400, ,,, +subfleet,iata,icao,hub_id,airport_id,name,registration,hex_code,mtow,zfw,status +A32X,A320,320,,,A320-211,N309US,,,,S +74X,747 400,, ,,, diff --git a/tests/data/aircraft.csv b/tests/data/aircraft.csv index d3ade334..72490e80 100644 --- a/tests/data/aircraft.csv +++ b/tests/data/aircraft.csv @@ -1,3 +1,3 @@ -subfleet,iata, icao,airport_id, name,registration,hex_code,mtow,zfw,status -A32X,A320,320,,A320-211,N309US,,,,A -74X,747 400,, ,, +subfleet,iata,icao,hub_id,airport_id,name,registration,hex_code,mtow,zfw,status +A32X,A320,320,,,A320-211,N309US,,,,A +74X,747 400,,, ,, diff --git a/tests/data/aircraft_empty_cols.csv b/tests/data/aircraft_empty_cols.csv index 3426f63a..05a67454 100644 --- a/tests/data/aircraft_empty_cols.csv +++ b/tests/data/aircraft_empty_cols.csv @@ -1,3 +1,3 @@ -subfleet,iata, icao,airport_id, name,registration,hex_code,mtow,zfw,status -A32X,A320-211,,N309US,,, - , B744-GE,, N304,,, +subfleet,iata,icao,hub_id,airport_id,name,registration,hex_code,mtow,zfw,status +A32X,A320-211,,,N309US,,, + , B744-GE,,, N304,,,