Add IATA and ZFW to aircraft import/export and tables
This commit is contained in:
@@ -11,10 +11,12 @@ $factory->define(App\Models\Aircraft::class, function (Faker $faker) {
|
|||||||
'airport_id' => function () {
|
'airport_id' => function () {
|
||||||
return factory(App\Models\Airport::class)->create()->id;
|
return factory(App\Models\Airport::class)->create()->id;
|
||||||
},
|
},
|
||||||
|
'iata' => $faker->unique()->text(5),
|
||||||
'icao' => $faker->unique()->text(5),
|
'icao' => $faker->unique()->text(5),
|
||||||
'name' => $faker->unique()->text(50),
|
'name' => $faker->text(50),
|
||||||
'registration' => $faker->unique()->text(10),
|
'registration' => $faker->unique()->text(10),
|
||||||
'hex_code' => \App\Support\ICAO::createHexCode(),
|
'hex_code' => \App\Support\ICAO::createHexCode(),
|
||||||
|
'zfw' => $faker->randomFloat(2, 0, 50000),
|
||||||
'status' => \App\Models\Enums\AircraftStatus::ACTIVE,
|
'status' => \App\Models\Enums\AircraftStatus::ACTIVE,
|
||||||
'state' => \App\Models\Enums\AircraftState::PARKED,
|
'state' => \App\Models\Enums\AircraftState::PARKED,
|
||||||
'created_at' => $faker->dateTimeBetween('-1 week', 'now'),
|
'created_at' => $faker->dateTimeBetween('-1 week', 'now'),
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ class CreateAircraftsTable extends Migration
|
|||||||
$table->increments('id');
|
$table->increments('id');
|
||||||
$table->unsignedInteger('subfleet_id');
|
$table->unsignedInteger('subfleet_id');
|
||||||
$table->string('icao', 4)->nullable();
|
$table->string('icao', 4)->nullable();
|
||||||
|
$table->string('iata', 4)->nullable();
|
||||||
$table->string('airport_id', 5)->nullable();
|
$table->string('airport_id', 5)->nullable();
|
||||||
$table->timestamp('landing_time')->nullable();
|
$table->timestamp('landing_time')->nullable();
|
||||||
$table->string('name', 50);
|
$table->string('name', 50);
|
||||||
@@ -20,7 +21,7 @@ class CreateAircraftsTable extends Migration
|
|||||||
$table->string('hex_code', 10)->nullable();
|
$table->string('hex_code', 10)->nullable();
|
||||||
$table->unsignedDecimal('zfw')->nullable()->default(0);
|
$table->unsignedDecimal('zfw')->nullable()->default(0);
|
||||||
$table->unsignedBigInteger('flight_time')->nullable()->default(0);
|
$table->unsignedBigInteger('flight_time')->nullable()->default(0);
|
||||||
$table->unsignedTinyInteger('status')->default(AircraftStatus::ACTIVE);
|
$table->char('status', 1)->default(AircraftStatus::ACTIVE);
|
||||||
$table->unsignedTinyInteger('state')->default(AircraftState::PARKED);
|
$table->unsignedTinyInteger('state')->default(AircraftState::PARKED);
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
|
|
||||||
|
|||||||
@@ -169,25 +169,25 @@ aircraft:
|
|||||||
airport_id: KJFK
|
airport_id: KJFK
|
||||||
name: Boeing 747-438
|
name: Boeing 747-438
|
||||||
registration: 001Z
|
registration: 001Z
|
||||||
status: 1
|
status: A
|
||||||
- id: 2
|
- id: 2
|
||||||
subfleet_id: 2
|
subfleet_id: 2
|
||||||
airport_id: LGRP
|
airport_id: LGRP
|
||||||
name: Boeing 777-200
|
name: Boeing 777-200
|
||||||
registration: C202
|
registration: C202
|
||||||
status: 1
|
status: A
|
||||||
- id: 3
|
- id: 3
|
||||||
subfleet_id: 1
|
subfleet_id: 1
|
||||||
airport_id: KAUS
|
airport_id: KAUS
|
||||||
name: Boeing 747-412
|
name: Boeing 747-412
|
||||||
registration: S2333
|
registration: S2333
|
||||||
status: 1
|
status: A
|
||||||
- id: 4
|
- id: 4
|
||||||
subfleet_id: 1
|
subfleet_id: 1
|
||||||
airport_id: KAUS
|
airport_id: KAUS
|
||||||
name: Boeing 747-436 RETIRED
|
name: Boeing 747-436 RETIRED
|
||||||
registration:
|
registration:
|
||||||
status: 2
|
status: R
|
||||||
|
|
||||||
expenses:
|
expenses:
|
||||||
- name: Per-Flight (no muliplier)
|
- name: Per-Flight (no muliplier)
|
||||||
|
|||||||
@@ -28,8 +28,9 @@ class Aircraft extends Model
|
|||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'subfleet_id',
|
'subfleet_id',
|
||||||
'airport_id',
|
'airport_id',
|
||||||
'name',
|
'iata',
|
||||||
'icao',
|
'icao',
|
||||||
|
'name',
|
||||||
'registration',
|
'registration',
|
||||||
'hex_code',
|
'hex_code',
|
||||||
'zfw',
|
'zfw',
|
||||||
|
|||||||
@@ -10,25 +10,17 @@ use App\Interfaces\Enum;
|
|||||||
*/
|
*/
|
||||||
class AircraftStatus extends Enum
|
class AircraftStatus extends Enum
|
||||||
{
|
{
|
||||||
public const STORED = 0;
|
public const ACTIVE = 'A';
|
||||||
public const ACTIVE = 1;
|
public const STORED = 'S';
|
||||||
public const RETIRED = 2;
|
public const RETIRED = 'R';
|
||||||
public const SCRAPPED = 3;
|
public const SCRAPPED = 'C';
|
||||||
public const WRITTEN_OFF = 4;
|
public const WRITTEN_OFF = 'W';
|
||||||
|
|
||||||
public static $labels = [
|
public static $labels = [
|
||||||
AircraftStatus::STORED => 'Stored',
|
|
||||||
AircraftStatus::ACTIVE => 'Active',
|
AircraftStatus::ACTIVE => 'Active',
|
||||||
|
AircraftStatus::STORED => 'Stored',
|
||||||
AircraftStatus::RETIRED => 'Retired',
|
AircraftStatus::RETIRED => 'Retired',
|
||||||
AircraftStatus::SCRAPPED => 'Scrapped',
|
AircraftStatus::SCRAPPED => 'Scrapped',
|
||||||
AircraftStatus::WRITTEN_OFF => 'Written Off',
|
AircraftStatus::WRITTEN_OFF => 'Written Off',
|
||||||
];
|
];
|
||||||
|
|
||||||
public static $codes = [
|
|
||||||
AircraftStatus::STORED => 'S',
|
|
||||||
AircraftStatus::ACTIVE => 'A' ,
|
|
||||||
AircraftStatus::RETIRED => 'R',
|
|
||||||
AircraftStatus::SCRAPPED => 'C',
|
|
||||||
AircraftStatus::WRITTEN_OFF => 'W',
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ class AircraftExporter extends ImportExport
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Modify special fields
|
# Modify special fields
|
||||||
$ret['status'] = AircraftStatus::convertToCode($aircraft->status);
|
|
||||||
$ret['subfleet'] = $aircraft->subfleet->type;
|
$ret['subfleet'] = $aircraft->subfleet->type;
|
||||||
|
|
||||||
return $ret;
|
return $ret;
|
||||||
|
|||||||
@@ -23,9 +23,12 @@ class AircraftImporter extends ImportExport
|
|||||||
*/
|
*/
|
||||||
public static $columns = [
|
public static $columns = [
|
||||||
'subfleet' => 'required',
|
'subfleet' => 'required',
|
||||||
|
'iata' => 'nullable',
|
||||||
|
'icao' => 'nullable',
|
||||||
'name' => 'required',
|
'name' => 'required',
|
||||||
'registration' => 'required',
|
'registration' => 'required',
|
||||||
'hex_code' => 'nullable',
|
'hex_code' => 'nullable',
|
||||||
|
'zfw' => 'nullable|numeric',
|
||||||
'status' => 'nullable',
|
'status' => 'nullable',
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -63,8 +66,6 @@ class AircraftImporter extends ImportExport
|
|||||||
$row['status'] = trim($row['status']);
|
$row['status'] = trim($row['status']);
|
||||||
if($row['status'] === null || $row['status'] === '') {
|
if($row['status'] === null || $row['status'] === '') {
|
||||||
$row['status'] = AircraftStatus::ACTIVE;
|
$row['status'] = AircraftStatus::ACTIVE;
|
||||||
} else {
|
|
||||||
$row['status'] = AircraftStatus::getFromCode($row['status']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Just set its state right now as parked
|
# Just set its state right now as parked
|
||||||
|
|||||||
@@ -17,13 +17,30 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="form-group col-sm-6">
|
<div class="col-12">
|
||||||
|
@component('admin.components.info')
|
||||||
|
View list of
|
||||||
|
<a href="https://en.wikipedia.org/wiki/List_of_ICAO_aircraft_type_designators"
|
||||||
|
target="_blank">
|
||||||
|
IATA and ICAO Type Designators
|
||||||
|
</a>
|
||||||
|
@endcomponent
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="form-group col-sm-4">
|
||||||
|
{{ Form::label('iata', 'IATA:') }}
|
||||||
|
{{ Form::text('iata', null, ['class' => 'form-control']) }}
|
||||||
|
<p class="text-danger">{{ $errors->first('iata') }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-sm-4">
|
||||||
{{ Form::label('icao', 'ICAO:') }}
|
{{ Form::label('icao', 'ICAO:') }}
|
||||||
{{ Form::text('icao', null, ['class' => 'form-control']) }}
|
{{ Form::text('icao', null, ['class' => 'form-control']) }}
|
||||||
<p class="text-danger">{{ $errors->first('icao') }}</p>
|
<p class="text-danger">{{ $errors->first('icao') }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group col-sm-6">
|
<div class="form-group col-sm-4">
|
||||||
{{ Form::label('zfw', 'Zero Fuel Weight:') }}
|
{{ Form::label('zfw', 'Zero Fuel Weight:') }}
|
||||||
{{ Form::text('zfw', null, ['class' => 'form-control']) }}
|
{{ Form::text('zfw', null, ['class' => 'form-control']) }}
|
||||||
<p class="text-danger">{{ $errors->first('zfw') }}</p>
|
<p class="text-danger">{{ $errors->first('zfw') }}</p>
|
||||||
|
|||||||
@@ -223,6 +223,36 @@ class ImporterTest extends TestCase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test exporting all the flights to a file
|
||||||
|
*/
|
||||||
|
public function testAircraftExporter(): void
|
||||||
|
{
|
||||||
|
$aircraft = factory(App\Models\Aircraft::class)->create();
|
||||||
|
$exporter = new \App\Services\ImportExport\AircraftExporter();
|
||||||
|
$exported = $exporter->export($aircraft);
|
||||||
|
|
||||||
|
$this->assertEquals($aircraft->iata, $exported['iata']);
|
||||||
|
$this->assertEquals($aircraft->icao, $exported['icao']);
|
||||||
|
$this->assertEquals($aircraft->name, $exported['name']);
|
||||||
|
$this->assertEquals($aircraft->zfw, $exported['zfw']);
|
||||||
|
$this->assertEquals($aircraft->subfleet->type, $exported['subfleet']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test exporting all the flights to a file
|
||||||
|
*/
|
||||||
|
public function testAirportExporter(): void
|
||||||
|
{
|
||||||
|
$airport = factory(App\Models\Airport::class)->create();
|
||||||
|
$exporter = new \App\Services\ImportExport\AirportExporter();
|
||||||
|
$exported = $exporter->export($airport);
|
||||||
|
|
||||||
|
$this->assertEquals($airport->iata, $exported['iata']);
|
||||||
|
$this->assertEquals($airport->icao, $exported['icao']);
|
||||||
|
$this->assertEquals($airport->name, $exported['name']);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test exporting all the flights to a file
|
* Test exporting all the flights to a file
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
subfleet,name,registration,hex_code,status
|
subfleet,iata, icao, name,registration,hex_code,status
|
||||||
A32X,A320-211,N309US,,
|
A32X,A320,320,A320-211,N309US,,
|
||||||
74X,747 400, ,,
|
74X,747 400, ,,
|
||||||
|
|||||||
|
Reference in New Issue
Block a user