phpvms/app/Http/Resources/Flight.php

69 lines
1.8 KiB
PHP
Raw Normal View History

<?php
namespace App\Http\Resources;
use App\Contracts\Resource;
use App\Http\Resources\SimBrief as SimbriefResource;
use App\Support\Units\Distance;
use stdClass;
/**
* @mixin \App\Models\Flight
*/
class Flight extends Resource
{
2018-03-23 11:48:54 +08:00
/**
* Set the fields on the flight object
*/
protected function setFields()
2018-03-23 11:48:54 +08:00
{
/** @var \Illuminate\Support\Collection $field_values */
$return_values = new stdClass();
$field_values = $this->field_values;
if (empty($field_values) || $field_values->count() === 0) {
return $return_values;
}
foreach ($field_values as $field) {
$return_values->{$field->name} = $field->value;
2018-03-23 11:48:54 +08:00
}
return $return_values;
2018-03-23 11:48:54 +08:00
}
/**
* @param \Illuminate\Http\Request $request
*
* @throws \PhpUnitsOfMeasure\Exception\NonNumericValue
* @throws \PhpUnitsOfMeasure\Exception\NonStringUnitName
*
* @return array
*/
public function toArray($request)
{
$res = parent::toArray($request);
$res['ident'] = $this->ident;
if (empty($res['load_factor'])) {
$res['load_factor'] = setting('flights.default_load_factor');
}
if (empty($res['load_factor_variance'])) {
$res['load_factor_variance'] = setting('flights.load_factor_variance');
}
$distance = new Distance($res['distance'], config('phpvms.internal_units.distance'));
$res['distance'] = $distance->getResponseUnits();
2018-02-11 11:16:32 +08:00
$res['airline'] = new Airline($this->airline);
$res['subfleets'] = Subfleet::collection($this->whenLoaded('subfleets'));
$res['fields'] = $this->setFields();
// Simbrief info
$res['simbrief'] = new SimbriefResource($this->whenLoaded('simbrief'));
return $res;
}
}