2017-06-12 00:36:16 +08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Models;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Class Airport
|
|
|
|
* @package App\Models
|
|
|
|
*/
|
2017-12-26 05:19:34 +08:00
|
|
|
class Airport extends BaseModel
|
2017-06-12 00:36:16 +08:00
|
|
|
{
|
|
|
|
public $table = 'airports';
|
2017-12-01 10:28:45 +08:00
|
|
|
public $timestamps = false;
|
2017-12-07 06:07:25 +08:00
|
|
|
public $incrementing = false;
|
2017-06-12 00:36:16 +08:00
|
|
|
|
|
|
|
public $fillable = [
|
2017-12-01 10:28:45 +08:00
|
|
|
'id',
|
2017-12-31 04:37:10 +08:00
|
|
|
'iata',
|
2017-07-06 07:48:32 +08:00
|
|
|
'icao',
|
|
|
|
'name',
|
|
|
|
'location',
|
2017-07-08 05:15:03 +08:00
|
|
|
'lat',
|
|
|
|
'lon',
|
2017-12-31 04:37:10 +08:00
|
|
|
'hub',
|
2017-12-07 06:07:25 +08:00
|
|
|
'timezone',
|
2017-07-06 07:48:32 +08:00
|
|
|
'fuel_100ll_cost',
|
|
|
|
'fuel_jeta_cost',
|
|
|
|
'fuel_mogas_cost',
|
2017-06-12 00:36:16 +08:00
|
|
|
];
|
|
|
|
|
2017-12-07 06:07:25 +08:00
|
|
|
protected $casts = [
|
2017-12-21 09:12:39 +08:00
|
|
|
'lat' => 'float',
|
|
|
|
'lon' => 'float',
|
2017-12-31 04:37:10 +08:00
|
|
|
'hub' => 'boolean',
|
2017-12-30 06:56:46 +08:00
|
|
|
'fuel_100ll_cost' => 'float',
|
|
|
|
'fuel_jeta_cost' => 'float',
|
|
|
|
'fuel_mogas_cost' => 'float',
|
2017-12-07 06:07:25 +08:00
|
|
|
];
|
2017-12-21 01:28:21 +08:00
|
|
|
|
2017-06-12 00:36:16 +08:00
|
|
|
/**
|
2017-12-01 10:28:45 +08:00
|
|
|
* Validation rules
|
2017-06-12 00:36:16 +08:00
|
|
|
*/
|
2017-12-01 10:28:45 +08:00
|
|
|
public static $rules = [
|
2018-01-01 04:20:52 +08:00
|
|
|
'icao' => 'required',
|
|
|
|
'name' => 'required',
|
|
|
|
'lat' => 'required',
|
|
|
|
'lon' => 'required',
|
2017-06-12 00:36:16 +08:00
|
|
|
];
|
|
|
|
|
|
|
|
/**
|
2017-12-01 10:28:45 +08:00
|
|
|
* Some fancy callbacks
|
2017-06-12 00:36:16 +08:00
|
|
|
*/
|
2017-12-21 01:28:21 +08:00
|
|
|
protected static function boot()
|
|
|
|
{
|
2017-06-12 00:36:16 +08:00
|
|
|
|
2017-12-01 10:28:45 +08:00
|
|
|
parent::boot();
|
2017-06-12 00:36:16 +08:00
|
|
|
|
2017-12-01 10:28:45 +08:00
|
|
|
/**
|
|
|
|
* Make sure the ID is set to the ICAO
|
|
|
|
*/
|
|
|
|
static::creating(function (Airport $model) {
|
2017-12-31 04:37:10 +08:00
|
|
|
if(!empty($model->iata)) {
|
|
|
|
$model->iata = strtoupper($model->iata);
|
|
|
|
}
|
|
|
|
|
2017-12-01 10:28:45 +08:00
|
|
|
$model->icao = strtoupper($model->icao);
|
|
|
|
$model->id = $model->icao;
|
|
|
|
});
|
2017-06-12 00:36:16 +08:00
|
|
|
}
|
2017-12-21 01:28:21 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Return full name like:
|
|
|
|
* KJFK - John F Kennedy
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getFullNameAttribute(): string
|
|
|
|
{
|
|
|
|
return $this->icao . ' - ' . $this->name;
|
|
|
|
}
|
2017-06-12 00:36:16 +08:00
|
|
|
}
|