Add IATA and ZFW to aircraft import/export and tables

This commit is contained in:
Nabeel Shahzad
2018-03-30 20:21:18 -05:00
parent 777167f46e
commit 70e5ccda6f
10 changed files with 71 additions and 28 deletions

View File

@@ -11,10 +11,12 @@ $factory->define(App\Models\Aircraft::class, function (Faker $faker) {
'airport_id' => function () {
return factory(App\Models\Airport::class)->create()->id;
},
'iata' => $faker->unique()->text(5),
'icao' => $faker->unique()->text(5),
'name' => $faker->unique()->text(50),
'name' => $faker->text(50),
'registration' => $faker->unique()->text(10),
'hex_code' => \App\Support\ICAO::createHexCode(),
'zfw' => $faker->randomFloat(2, 0, 50000),
'status' => \App\Models\Enums\AircraftStatus::ACTIVE,
'state' => \App\Models\Enums\AircraftState::PARKED,
'created_at' => $faker->dateTimeBetween('-1 week', 'now'),

View File

@@ -13,6 +13,7 @@ class CreateAircraftsTable extends Migration
$table->increments('id');
$table->unsignedInteger('subfleet_id');
$table->string('icao', 4)->nullable();
$table->string('iata', 4)->nullable();
$table->string('airport_id', 5)->nullable();
$table->timestamp('landing_time')->nullable();
$table->string('name', 50);
@@ -20,7 +21,7 @@ class CreateAircraftsTable extends Migration
$table->string('hex_code', 10)->nullable();
$table->unsignedDecimal('zfw')->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->timestamps();

View File

@@ -169,25 +169,25 @@ aircraft:
airport_id: KJFK
name: Boeing 747-438
registration: 001Z
status: 1
status: A
- id: 2
subfleet_id: 2
airport_id: LGRP
name: Boeing 777-200
registration: C202
status: 1
status: A
- id: 3
subfleet_id: 1
airport_id: KAUS
name: Boeing 747-412
registration: S2333
status: 1
status: A
- id: 4
subfleet_id: 1
airport_id: KAUS
name: Boeing 747-436 RETIRED
registration:
status: 2
status: R
expenses:
- name: Per-Flight (no muliplier)

View File

@@ -28,8 +28,9 @@ class Aircraft extends Model
protected $fillable = [
'subfleet_id',
'airport_id',
'name',
'iata',
'icao',
'name',
'registration',
'hex_code',
'zfw',

View File

@@ -10,25 +10,17 @@ use App\Interfaces\Enum;
*/
class AircraftStatus extends Enum
{
public const STORED = 0;
public const ACTIVE = 1;
public const RETIRED = 2;
public const SCRAPPED = 3;
public const WRITTEN_OFF = 4;
public const ACTIVE = 'A';
public const STORED = 'S';
public const RETIRED = 'R';
public const SCRAPPED = 'C';
public const WRITTEN_OFF = 'W';
public static $labels = [
AircraftStatus::STORED => 'Stored',
AircraftStatus::ACTIVE => 'Active',
AircraftStatus::STORED => 'Stored',
AircraftStatus::RETIRED => 'Retired',
AircraftStatus::SCRAPPED => 'Scrapped',
AircraftStatus::WRITTEN_OFF => 'Written Off',
];
public static $codes = [
AircraftStatus::STORED => 'S',
AircraftStatus::ACTIVE => 'A' ,
AircraftStatus::RETIRED => 'R',
AircraftStatus::SCRAPPED => 'C',
AircraftStatus::WRITTEN_OFF => 'W',
];
}

View File

@@ -37,7 +37,6 @@ class AircraftExporter extends ImportExport
}
# Modify special fields
$ret['status'] = AircraftStatus::convertToCode($aircraft->status);
$ret['subfleet'] = $aircraft->subfleet->type;
return $ret;

View File

@@ -23,9 +23,12 @@ class AircraftImporter extends ImportExport
*/
public static $columns = [
'subfleet' => 'required',
'iata' => 'nullable',
'icao' => 'nullable',
'name' => 'required',
'registration' => 'required',
'hex_code' => 'nullable',
'zfw' => 'nullable|numeric',
'status' => 'nullable',
];
@@ -63,8 +66,6 @@ class AircraftImporter extends ImportExport
$row['status'] = trim($row['status']);
if($row['status'] === null || $row['status'] === '') {
$row['status'] = AircraftStatus::ACTIVE;
} else {
$row['status'] = AircraftStatus::getFromCode($row['status']);
}
# Just set its state right now as parked

View File

@@ -17,13 +17,30 @@
</div>
<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::text('icao', null, ['class' => 'form-control']) }}
<p class="text-danger">{{ $errors->first('icao') }}</p>
</div>
<div class="form-group col-sm-6">
<div class="form-group col-sm-4">
{{ Form::label('zfw', 'Zero Fuel Weight:') }}
{{ Form::text('zfw', null, ['class' => 'form-control']) }}
<p class="text-danger">{{ $errors->first('zfw') }}</p>

View File

@@ -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
*/

View File

@@ -1,3 +1,3 @@
subfleet,name,registration,hex_code,status
A32X,A320-211,N309US,,
subfleet,iata, icao, name,registration,hex_code,status
A32X,A320,320,A320-211,N309US,,
74X,747 400, ,,
1 subfleet subfleet,iata, icao, name,registration,hex_code,status name registration hex_code status
2 A32X A32X,A320,320,A320-211,N309US,, A320-211 N309US
3 74X 74X,747 400, ,, 747 400