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
4 changed files with 36 additions and 31 deletions
+20 -2
View File
@@ -420,7 +420,16 @@ class Pirep extends Model
public function arr_airport() 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() public function alt_airport()
@@ -430,7 +439,16 @@ class Pirep extends Model
public function dpt_airport() 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() public function comments()
+2 -5
View File
@@ -7,9 +7,6 @@ use App\Models\Airport;
use Prettus\Repository\Contracts\CacheableInterface; use Prettus\Repository\Contracts\CacheableInterface;
use Prettus\Repository\Traits\CacheableRepository; use Prettus\Repository\Traits\CacheableRepository;
/**
* Class AirportRepository
*/
class AirportRepository extends Repository implements CacheableInterface class AirportRepository extends Repository implements CacheableInterface
{ {
use CacheableRepository; use CacheableRepository;
@@ -27,8 +24,8 @@ class AirportRepository extends Repository implements CacheableInterface
/** /**
* Return the list of airports formatted for a select box * Return the list of airports formatted for a select box
* *
* @param mixed $add_blank * @param bool $add_blank
* @param mixed $only_hubs * @param bool $only_hubs
* *
* @return array * @return array
*/ */
+6 -16
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 [ 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(), 'line' => $route->getLine(),
'points' => $route->getPoints(), 'points' => $route->getPoints(),
'airports' => [ 'airports' => [
+8 -8
View File
@@ -108,14 +108,6 @@ class FlightImporter extends ImportExport
// Any specific transformations // 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 // Check for a valid value
$flight_type = $row['flight_type']; $flight_type = $row['flight_type'];
if (!array_key_exists($flight_type, FlightType::labels())) { if (!array_key_exists($flight_type, FlightType::labels())) {
@@ -139,6 +131,14 @@ class FlightImporter extends ImportExport
$this->processAirport($row['alt_airport']); $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->processSubfleets($flight, $row['subfleets']);
$this->processFares($flight, $row['fares']); $this->processFares($flight, $row['fares']);
$this->processFields($flight, $row['fields']); $this->processFields($flight, $row['fields']);