diff --git a/app/Http/Resources/Pirep.php b/app/Http/Resources/Pirep.php index 4d7e85b2..4c708f3e 100644 --- a/app/Http/Resources/Pirep.php +++ b/app/Http/Resources/Pirep.php @@ -38,6 +38,13 @@ class Pirep extends Resource $distance = new Distance($res['distance'], config('phpvms.internal_units.distance')); $res['distance'] = $distance->getResponseUnits(); + if (!array_key_exists('block_fuel', $res)) { + $res['block_fuel'] = 0; + } + + $block_fuel = new Fuel($res['block_fuel'], config('phpvms.internal_units.fuel')); + $res['block_fuel'] = $block_fuel->getResponseUnits(); + if (!array_key_exists('fuel_used', $res)) { $res['fuel_used'] = 0; } diff --git a/app/Models/Pirep.php b/app/Models/Pirep.php index aa940ec5..c5e9a657 100644 --- a/app/Models/Pirep.php +++ b/app/Models/Pirep.php @@ -326,6 +326,22 @@ class Pirep extends Model return $field_values; } + /** + * Set the amount of block fuel + * + * @param $value + */ + public function setBlockFuelAttribute($value): void + { + if ($value instanceof Fuel) { + $this->attributes['block_fuel'] = $value->toUnit( + config('phpvms.internal_units.fuel') + ); + } else { + $this->attributes['block_fuel'] = $value; + } + } + /** * Set the amount of fuel used * diff --git a/tests/PIREPTest.php b/tests/PIREPTest.php index 91c05e4b..395d5a87 100644 --- a/tests/PIREPTest.php +++ b/tests/PIREPTest.php @@ -21,6 +21,7 @@ use App\Services\BidService; use App\Services\FlightService; use App\Services\PirepService; use App\Services\UserService; +use App\Support\Units\Fuel; use Carbon\Carbon; use Illuminate\Support\Facades\Notification; @@ -164,6 +165,8 @@ class PIREPTest extends TestCase $body = $response->json('data'); // Check that it has the fuel units + $this->assertHasKeys($body['block_fuel'], ['lbs', 'kg']); + $this->assertEquals($pirep->block_fuel, $body['block_fuel']['lbs']); $this->assertHasKeys($body['fuel_used'], ['lbs', 'kg']); $this->assertEquals($pirep->fuel_used, $body['fuel_used']['lbs']); @@ -174,6 +177,24 @@ class PIREPTest extends TestCase // Check the planned_distance field $this->assertHasKeys($body['planned_distance'], ['km', 'nmi', 'mi']); $this->assertEquals($pirep->planned_distance, $body['planned_distance']['nmi']); + + //Check conversion on save + $val = random_int(1000, 9999999); + $pirep->block_fuel = $val; + $pirep->fuel_used = $val; + // no conversion with plain numbers + $this->assertEquals($pirep->block_fuel, $val); + $this->assertEquals($pirep->fuel_used, $val); + // no conversion with lbs + $pirep->block_fuel = new Fuel($val, 'lbs'); + $this->assertEquals($pirep->block_fuel, $val); + $pirep->fuel_used = new Fuel($val, 'lbs'); + $this->assertEquals($pirep->fuel_used, $val); + // conversion of kg to lbs + $pirep->block_fuel = new Fuel($val, 'kg'); + $this->assertEquals($pirep->block_fuel, (new Fuel($val, 'kg'))->toUnit('lbs')); + $pirep->fuel_used = new Fuel($val, 'kg'); + $this->assertEquals($pirep->fuel_used, (new Fuel($val, 'kg'))->toUnit('lbs')); } public function testGetUserPireps()