diff --git a/app/Database/factories/AircraftFactory.php b/app/Database/factories/AircraftFactory.php index be5474a5..25453ed4 100644 --- a/app/Database/factories/AircraftFactory.php +++ b/app/Database/factories/AircraftFactory.php @@ -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'), diff --git a/app/Database/migrations/2017_06_09_010621_create_aircrafts_table.php b/app/Database/migrations/2017_06_09_010621_create_aircrafts_table.php index 1ea1af36..d68d5f1f 100644 --- a/app/Database/migrations/2017_06_09_010621_create_aircrafts_table.php +++ b/app/Database/migrations/2017_06_09_010621_create_aircrafts_table.php @@ -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(); diff --git a/app/Database/seeds/sample.yml b/app/Database/seeds/sample.yml index a0fbdea7..407261a2 100644 --- a/app/Database/seeds/sample.yml +++ b/app/Database/seeds/sample.yml @@ -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) diff --git a/app/Models/Aircraft.php b/app/Models/Aircraft.php index f3ca28ef..29c35893 100644 --- a/app/Models/Aircraft.php +++ b/app/Models/Aircraft.php @@ -28,8 +28,9 @@ class Aircraft extends Model protected $fillable = [ 'subfleet_id', 'airport_id', - 'name', + 'iata', 'icao', + 'name', 'registration', 'hex_code', 'zfw', diff --git a/app/Models/Enums/AircraftStatus.php b/app/Models/Enums/AircraftStatus.php index 16d3f8bb..f50be954 100644 --- a/app/Models/Enums/AircraftStatus.php +++ b/app/Models/Enums/AircraftStatus.php @@ -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', - ]; } diff --git a/app/Services/ImportExport/AircraftExporter.php b/app/Services/ImportExport/AircraftExporter.php index f0eddad3..6a0a357f 100644 --- a/app/Services/ImportExport/AircraftExporter.php +++ b/app/Services/ImportExport/AircraftExporter.php @@ -37,7 +37,6 @@ class AircraftExporter extends ImportExport } # Modify special fields - $ret['status'] = AircraftStatus::convertToCode($aircraft->status); $ret['subfleet'] = $aircraft->subfleet->type; return $ret; diff --git a/app/Services/ImportExport/AircraftImporter.php b/app/Services/ImportExport/AircraftImporter.php index 7f1d3e74..2e06dee4 100644 --- a/app/Services/ImportExport/AircraftImporter.php +++ b/app/Services/ImportExport/AircraftImporter.php @@ -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 diff --git a/resources/views/admin/aircraft/fields.blade.php b/resources/views/admin/aircraft/fields.blade.php index 639f18b0..41f48ebb 100644 --- a/resources/views/admin/aircraft/fields.blade.php +++ b/resources/views/admin/aircraft/fields.blade.php @@ -17,13 +17,30 @@
{{ $errors->first('iata') }}
+{{ $errors->first('icao') }}
{{ $errors->first('zfw') }}
diff --git a/tests/ImporterTest.php b/tests/ImporterTest.php index 3c8f80b6..46854208 100644 --- a/tests/ImporterTest.php +++ b/tests/ImporterTest.php @@ -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 */ diff --git a/tests/data/aircraft.csv b/tests/data/aircraft.csv index d9583705..b1f0f1ac 100644 --- a/tests/data/aircraft.csv +++ b/tests/data/aircraft.csv @@ -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, ,,