<?php
/**
 * Created by PhpStorm.
 * User: xiaofeng
 * Date: 2018/3/4
 * Time: 上午9:25
 */

namespace common\models;

class EnrollSource extends Common
{
    public function rules()
    {
        return [
            ['name', 'unique', 'targetClass' => 'common\models\EnrollSource','on'=>'add','message'=>'来源名称已存在','filter'=>function($query){
                         $query->andWhere(['type'=>$this->type]);
                        return $query->andWhere(['del'=>$this->setDel]);
            }],

            [['name', 'type'], 'required', 'message' => '{attribute}不能为空'],
            ['name', 'string', 'max' => 100],
            ['remarks', 'string', 'max' => 255],
            [['uid', 'del', 'source_id'], 'number'],
            [['del','state'], 'default', 'value' => 1],
            [['del','state'], 'in', 'range' => [1, 2]],
        ];
    }

    public function attributeLabels()
    {
        return [
            'type' => '来源设备', //1=>移动,2=>PC
            'name' => '来源名称',
            'contact' => '关于我们',
            'copyright' => '版权声明'
        ];
    }

    public function FindById($id)
    {
        return self::findOne($id);
    }

    public function WhereColumn()
    {
        $query = static::find();
        $query->andWhere(['del'=>1]);
        $query->andFilterWhere(['id'=>$this->id]);
        $query->andFilterWhere(['type'=>$this->type]);
        $query->andFilterWhere(['source_id'=>$this->source_id]);
        return $query;
    }

    public function getListTotal($page)
    {
        $query = $this->WhereColumn();
        if (!empty($page['name'])){
            $query->andFilterWhere(['like','name',$page['name']]);
        }
        if (!empty($page['source_id'])){
            $query->andFilterWhere(['source_id'=>$page['source_id']]);
        }
        if (!empty($page['type'])){
            $query->andFilterWhere(['type'=>$page['type']]);
        }
        return $query->count();
    }

    public function getList($page,$select = null)
    {
        $query = $this->WhereColumn();
        $query->select($select);
        if (!empty($page['name'])){
            $query->andFilterWhere(['like','name',$page['name']]);
        }
        if (!empty($page['source_id'])){
            $query->andFilterWhere(['source_id'=>$page['source_id']]);
        }
        if (!empty($page['type'])){
            $query->andFilterWhere(['type'=>$page['type']]);
        }
        if(!empty($page['page']))
        {
            $query->offset = ($page['page'] - 1) * $page['limit'];
            $query->limit = $page['limit'];
        }
        return $query->orderBy(['create_at'=>SORT_DESC,'name'=>SORT_DESC])->asArray()->all();
    }

    public function TypeColumn($type)
    {
        $this->type = $type;
        $query = $this->WhereColumn();
        $rows = $query->asArray()->all();
        return array_column($rows,'name','source_id');
    }

}