FeedbackCompanySearch.php 2.86 KB
<?php

    namespace common\models;

    use Yii;
    use yii\data\ActiveDataProvider;

    /**
     * FeedbackCompanySearch represents the model behind the search form about
     * `common\models\FeedbackCompany`.
     */
    class FeedbackCompanySearch extends FeedbackCompany
    {

        public $date_add_from;

        public $date_add_to;

        /**
         * @inheritdoc
         */
        public function rules()
        {
            return [
                [
                    [
                        'name',
                        'date_add',
                        'phone',
                        'date_add_from',
                        'date_add_to',
                    ],
                    'safe',
                ],
                [
                    [ 'status' ],
                    'integer',
                ],
                [
                    'date_add_to',
                    'compare',
                    'compareAttribute' => 'date_add_from',
                    'operator'         => '>=',
                ],
            ];
        }

        public function search($params)
        {
            $query = FeedbackCompany::find();

            $query->where([ 'user_id' => \Yii::$app->user->id ]);

            $dataProvider = new ActiveDataProvider([
                'query' => $query,
            ]);

            $this->load($params);

            if(!$this->validate()) {
                return $dataProvider;
            }

            $query->andFilterWhere([
                'like',
                'LOWER(name)',
                mb_strtolower($this->name),
            ])
                  ->andFilterWhere([
                      'like',
                      'LOWER(phone)',
                      mb_strtolower($this->phone),
                  ])
                  ->andFilterWhere([ 'status' => $this->status ]);

            $date_add_from = $this->date_add_from;
            $date_add_to = $this->date_add_to;
            if(!empty( $date_add_from )) {
                $date_add_from = strtotime($date_add_from);
            }
            if(!empty( $date_add_to )) {
                $date_add_to = strtotime($date_add_to) + 86400;
            }
            if(!empty( $date_add_from ) && !empty( $date_add_to )) {
                $query->andWhere([
                    'between',
                    'date_add',
                    $date_add_from,
                    $date_add_to,
                ]);
            } elseif(!empty( $date_add_from )) {
                $query->andWhere([
                    '>=',
                    'date_add',
                    $date_add_from,
                ]);
            } elseif(!empty( $date_add_to )) {
                $query->andWhere([
                    '<=',
                    'date_add',
                    $date_add_to,
                ]);
            }

            return $dataProvider;

        }
    }