Set a default model value for airports on PIREP (#500)

* Set a default model value for airports on PIREP

* Fix airport icao reference

* Default airport models
This commit is contained in:
Nabeel S 2020-01-15 13:00:58 -05:00 committed by GitHub
parent de8046288b
commit 831b72fb2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 31 deletions

View File

@ -420,7 +420,16 @@ class Pirep extends Model
public function arr_airport()
{
return $this->belongsTo(Airport::class, 'arr_airport_id');
return $this->belongsTo(Airport::class, 'arr_airport_id')
->withDefault(function ($model) {
if (!empty($this->attributes['arr_airport_id'])) {
$model->id = $this->attributes['arr_airport_id'];
$model->icao = $this->attributes['arr_airport_id'];
$model->name = $this->attributes['arr_airport_id'];
}
return $model;
});
}
public function alt_airport()
@ -430,7 +439,16 @@ class Pirep extends Model
public function dpt_airport()
{
return $this->belongsTo(Airport::class, 'dpt_airport_id');
return $this->belongsTo(Airport::class, 'dpt_airport_id')
->withDefault(function ($model) {
if (!empty($this->attributes['dpt_airport_id'])) {
$model->id = $this->attributes['dpt_airport_id'];
$model->icao = $this->attributes['dpt_airport_id'];
$model->name = $this->attributes['dpt_airport_id'];
}
return $model;
});
}
public function comments()

View File

@ -7,9 +7,6 @@ use App\Models\Airport;
use Prettus\Repository\Contracts\CacheableInterface;
use Prettus\Repository\Traits\CacheableRepository;
/**
* Class AirportRepository
*/
class AirportRepository extends Repository implements CacheableInterface
{
use CacheableRepository;
@ -27,8 +24,8 @@ class AirportRepository extends Repository implements CacheableInterface
/**
* Return the list of airports formatted for a select box
*
* @param mixed $add_blank
* @param mixed $only_hubs
* @param bool $add_blank
* @param bool $only_hubs
*
* @return array
*/

View File

@ -231,23 +231,13 @@ class GeoService extends Service
]);
}*/
// If there is a position update from ACARS, show where it is
// Otherwise, just assume it's at the arrival airport currently
if ($pirep->position) {
$position = [
'lat' => $pirep->position->lat,
'lon' => $pirep->position->lon,
];
} else {
// if arrived, show it being at the arrival airport
$position = [
'lat' => $pirep->arr_airport->lat,
'lon' => $pirep->arr_airport->lon,
];
}
return [
'position' => $position,
// If there is a position update from ACARS, show where it is
// Otherwise, just assume it's at the arrival airport currently
'position' => [
'lat' => optional($pirep->position)->lat ?? $pirep->arr_airport->lat,
'lon' => optional($pirep->position)->lon ?? $pirep->arr_airport->lon,
],
'line' => $route->getLine(),
'points' => $route->getPoints(),
'airports' => [

View File

@ -108,14 +108,6 @@ class FlightImporter extends ImportExport
// Any specific transformations
// Check/calculate the distance
if (empty($row['distance'])) {
$row['distance'] = $this->airportSvc->calculateDistance(
$row['dpt_airport'],
$row['arr_airport']
);
}
// Check for a valid value
$flight_type = $row['flight_type'];
if (!array_key_exists($flight_type, FlightType::labels())) {
@ -139,6 +131,14 @@ class FlightImporter extends ImportExport
$this->processAirport($row['alt_airport']);
}
// Check/calculate the distance
if (empty($row['distance'])) {
$row['distance'] = $this->airportSvc->calculateDistance(
$row['dpt_airport'],
$row['arr_airport']
);
}
$this->processSubfleets($flight, $row['subfleets']);
$this->processFares($flight, $row['fares']);
$this->processFields($flight, $row['fields']);