Add MTOW and ZFW to aircraft editor #775 (#805)

Add MTOW and ZFW to aircraft editor #775
This commit is contained in:
Nabeel S
2020-09-03 13:29:24 -04:00
committed by GitHub
parent e99c22b007
commit 50a0b89caa
5 changed files with 88 additions and 15 deletions

View File

@@ -1,24 +1,30 @@
<?php
use App\Models\Airport;
use App\Models\Enums\AircraftState;
use App\Models\Enums\AircraftStatus;
use App\Models\Subfleet;
use App\Support\ICAO;
use Faker\Generator as Faker;
$factory->define(App\Models\Aircraft::class, function (Faker $faker) {
return [
'id' => null,
'subfleet_id' => function () {
return factory(\App\Models\Subfleet::class)->create()->id;
return factory(Subfleet::class)->create()->id;
},
'airport_id' => function () {
return factory(\App\Models\Airport::class)->create()->id;
return factory(Airport::class)->create()->id;
},
'iata' => $faker->unique()->text(5),
'icao' => $faker->unique()->text(5),
'name' => $faker->text(50),
'registration' => $faker->unique()->text(10),
'hex_code' => \App\Support\ICAO::createHexCode(),
'hex_code' => ICAO::createHexCode(),
'mtow' => $faker->randomFloat(2, 0, 50000),
'zfw' => $faker->randomFloat(2, 0, 50000),
'status' => \App\Models\Enums\AircraftStatus::ACTIVE,
'state' => \App\Models\Enums\AircraftState::PARKED,
'status' => AircraftStatus::ACTIVE,
'state' => AircraftState::PARKED,
'created_at' => $faker->dateTimeBetween('-1 week', 'now'),
'updated_at' => function (array $pirep) {
return $pirep['created_at'];

View File

@@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Add a `mtow` column for the max takeoff weight
*/
class AircraftAddMtow extends Migration
{
public function up()
{
Schema::table('aircraft', function (Blueprint $table) {
$table->unsignedDecimal('mtow')
->nullable()
->default(0.0)
->after('hex_code');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('aircraft', function (Blueprint $table) {
$table->dropColumn('mtow');
});
}
}

View File

@@ -16,6 +16,8 @@ use Carbon\Carbon;
* @property string icao
* @property string registration
* @property int flight_time
* @property float mtow
* @property float zfw
* @property string hex_code
* @property Airport airport
* @property Subfleet subfleet
@@ -39,6 +41,7 @@ class Aircraft extends Model
'registration',
'hex_code',
'flight_time',
'mtow',
'zfw',
'status',
'state',
@@ -49,6 +52,7 @@ class Aircraft extends Model
*/
protected $casts = [
'subfleet_id' => 'integer',
'mtow' => 'float',
'zfw' => 'float',
'flight_time' => 'float',
'state' => 'integer',
@@ -62,6 +66,8 @@ class Aircraft extends Model
'name' => 'required',
'status' => 'required',
'registration' => 'required',
'mtow' => 'nullable|number',
'zfw' => 'nullable|number',
];
/**

View File

@@ -37,18 +37,15 @@
<div class="col-12">
<div class="form-container">
<h6>
<span style="float:right">
View list of
<a href="https://en.wikipedia.org/wiki/List_of_ICAO_aircraft_type_designators"
target="_blank">
IATA and ICAO Type Designators
</a>
</span>
<i class="fas fa-plane"></i>
&nbsp;Aircraft Information
<span style="float:right">
View list of
<a href="https://en.wikipedia.org/wiki/List_of_ICAO_aircraft_type_designators"
target="_blank">IATA and ICAO Type Designators</a>
</span>
<i class="fas fa-plane"></i>&nbsp;Aircraft Information
</h6>
<div class="form-container-body">
<div class="row">
<div class="form-group col-sm-12">
{{ Form::label('name', 'Name:') }}&nbsp;<span class="required">*</span>
@@ -56,6 +53,7 @@
<p class="text-danger">{{ $errors->first('name') }}</p>
</div>
</div>
<div class="row">
<div class="form-group col-sm-3">
{{ Form::label('iata', 'IATA:') }}
@@ -75,6 +73,20 @@
<p class="text-danger">{{ $errors->first('registration') }}</p>
</div>
</div>
<div class="row">
<div class="form-group col-sm-6">
{{ Form::label('mtow', 'Max Takeoff Weight (MTOW):') }}
{{ Form::text('mtow', null, ['class' => 'form-control']) }}
<p class="text-danger">{{ $errors->first('mtow') }}</p>
</div>
<div class="form-group col-sm-6">
{{ Form::label('zfw', 'Zero Fuel Weight (ZFW):') }}
{{ Form::text('zfw', null, ['class' => 'form-control']) }}
<p class="text-danger">{{ $errors->first('zfw') }}</p>
</div>
</div>
</div>
</div>
</div>

View File

@@ -242,13 +242,17 @@ class ApiTest extends TestCase
$fare_svc = app(FareService::class);
/** @var Subfleet $subfleet */
$subfleet = factory(Subfleet::class)->create([
'airline_id' => $this->user->airline_id,
]);
/** @var Fare $fare */
$fare = factory(Fare::class)->create();
$fare_svc->setForSubfleet($subfleet, $fare);
/** @var Aircraft $aircraft */
$aircraft = factory(Aircraft::class)->create([
'subfleet_id' => $subfleet->id,
]);
@@ -258,15 +262,27 @@ class ApiTest extends TestCase
*/
$resp = $this->get('/api/fleet/aircraft/'.$aircraft->id);
$body = $resp->json()['data'];
$this->assertEquals($body['id'], $aircraft->id);
$this->assertEquals($body['name'], $aircraft->name);
$this->assertEquals($body['mtow'], $aircraft->mtow);
$this->assertEquals($body['zfw'], $aircraft->zfw);
$resp = $this->get('/api/fleet/aircraft/'.$aircraft->id.'?registration='.$aircraft->registration);
$body = $resp->json()['data'];
$this->assertEquals($body['id'], $aircraft->id);
$this->assertEquals($body['name'], $aircraft->name);
$this->assertEquals($body['mtow'], $aircraft->mtow);
$this->assertEquals($body['zfw'], $aircraft->zfw);
$resp = $this->get('/api/fleet/aircraft/'.$aircraft->id.'?icao='.$aircraft->icao);
$body = $resp->json()['data'];
$this->assertEquals($body['id'], $aircraft->id);
$this->assertEquals($body['name'], $aircraft->name);
$this->assertEquals($body['mtow'], $aircraft->mtow);
$this->assertEquals($body['zfw'], $aircraft->zfw);
}
public function testGetAllSettings()