Region.php 2.58 KB
<?php

namespace frontend\modules\location\models;

use Yii;
use yii\helpers\ArrayHelper;
//
use thread\app\model\interfaces\BaseFrontModel;
use common\modules\location\models\RegionLang;
use frontend\modules\map\models\Item;


/**
 * Class Region
 *
 * @package frontend\modules\location\models
 * @author Alla Kuzmenko
 * @copyright (c) 2017
 */
class Region extends \common\modules\location\models\Region implements BaseFrontModel
{
    /**
     *
     * @return array
     */
    public function behaviors()
    {
        return [];
    }

    /**
     *
     * @return array
     */
    public function scenarios()
    {
        return [];
    }

    /**
     *
     * @return array
     */
    public function attributeLabels()
    {
        return [];
    }

    /**
     *
     * @return array
     */
    public function rules()
    {
        return [];
    }

    /**
     * @return mixed
     */
    public static function find()
    {
        $m = parent::find()->innerJoinWith(['lang'])->enabled();
        if (Yii::$app->language == 'en-EN') {
            $m->orderBy([RegionLang::tableName() . '.title' => SORT_ASC]);
        } else {
            $m->orderBy([self::tableName() . '.position' => SORT_ASC]);
        }
        return $m;
    }

    /**
     * @return mixed
     */
    public static function findBase()
    {
        return self::find();
    }

    /**
     * @param $id
     * @return mixed
     */
    public static function findById($id)
    {
        return false;
    }

    /**
     * Url route to view particular page
     * @param boolean $schema
     * @return string
     */
    public function getUrl($schema = false)
    {
        return false;
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getLang()
    {
        return $this->hasOne(RegionLang::class, ['rid' => 'id'])->asArray();
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getMapItem()
    {
        return $this->hasOne(Item::class, ['region_id' => 'id'])->asArray();
    }

    /**
     * @param $id
     * @return mixed
     */
    public static function findByAlias($id)
    {
        return false;
    }

    /**
     * @return mixed
     */
    public static function findList()
    {
        return self::findBase()->innerJoinWith(['mapItem'])->asArray()->indexBy('id')->all();
    }

    /**
     * Backend form dropdown list
     * @return array
     */
    public static function getDropdownList()
    {
        return ArrayHelper::map(self::findBase()
            ->innerJoinWith(['lang'])
            ->asArray()
            ->all(), 'id', 'lang.title');
    }

}