<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
 * Class City
 *
 * @package App
 * @property string $name
 * @property string $code
 * @property integer $priority
 * @property tinyInteger $region_center
 * @property double $center_latitude
 * @property double $center_longitude
 * @property string $region
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\District[] $districts
 * @property-write mixed $region_id
 * @method static bool|null forceDelete()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\City newModelQuery()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\City newQuery()
 * @method static \Illuminate\Database\Query\Builder|\App\City onlyTrashed()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\City query()
 * @method static bool|null restore()
 * @method static \Illuminate\Database\Query\Builder|\App\City withTrashed()
 * @method static \Illuminate\Database\Query\Builder|\App\City withoutTrashed()
 * @mixin \Eloquent
 */
class City extends Model
{
    const PAGINATE = 20;
    use SoftDeletes;
    protected $fillable = [
        'name',
        'code',
        'priority',
        'region_center',
        'center_address',
        'center_latitude',
        'center_longitude',
        'region_id',
        'enabled'
    ];
    protected $hidden = [];

    /**
     * Set attribute to money format
     * @param $input
     */
    public function setPriorityAttribute($input)
    {
        $this->attributes['priority'] = $input ? $input : null;
    }

    /**
     * Set to null if empty
     * @param $input
     */
    public function setRegionIdAttribute($input)
    {
        $this->attributes['region_id'] = $input ? $input : null;
    }

    public function region()
    {
        return $this->belongsTo(Region::class, 'region_id')->withTrashed();
    }

    public function districts()
    {
        return $this->hasMany(District::class, 'city_id');
    }
}
