Blame view

common/modules/product/models/BrandSearch.php 6.25 KB
4253cbec   root   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
  <?php

  

  namespace common\modules\product\models;

  

  use common\modules\product\helpers\ProductHelper;

  use common\modules\rubrication\models\TaxOption;

  use Yii;

  use yii\base\Model;

  use yii\data\ActiveDataProvider;

  use common\modules\product\models\Brand;

  

  /**

   * BrandSearch represents the model behind the search form about `common\modules\product\models\Brand`.

   */

  class BrandSearch extends Brand

  {

      public $brand_name;

      /**

       * @inheritdoc

       */

      public function rules()

      {

          return [

              [['brand_id', 'brand_name_id'], 'integer'],

              [['alias', 'image', 'meta_title', 'meta_desc', 'meta_robots', 'seo_text', 'brand_name'], 'safe'],

          ];

      }

  

      /**

       * @inheritdoc

       */

      public function scenarios()

      {

          // bypass scenarios() implementation in the parent class

          return Model::scenarios();

      }

  

      /**

       * Creates data provider instance with search query applied

       *

       * @param array $params

       *

       * @return ActiveDataProvider

       */

      public function search($params)

      {

          $query = Brand::find(); // ->with('brandName')

  

          // add conditions that should always apply here

  

          $dataProvider = new ActiveDataProvider([

              'query' => $query,

          ]);

  

          $this->load($params);

  

          /*if (!$this->validate()) {

              // uncomment the following line if you do not want to return any records when validation fails

              // $query->where('0=1');

              return $dataProvider;

          }*/

  

          $dataProvider->setSort([

              'attributes' => [

                  'brand_name',

                  'alias'

              ]

          ]);

  

          // grid filtering conditions

          $query->andFilterWhere([

              'brand_id' => $this->brand_id,

              'brand_name_id' => $this->brand_name_id,

          ]);

  

  

          $query->andFilterWhere(['ilike', 'alias', $this->alias])

              ->andFilterWhere(['ilike', 'image', $this->image])

              ->andFilterWhere(['ilike', 'meta_title', $this->meta_title])

              ->andFilterWhere(['ilike', 'meta_desc', $this->meta_desc])

              ->andFilterWhere(['ilike', 'meta_robots', $this->meta_robots])

              ->andFilterWhere(['ilike', 'seo_text', $this->seo_text]);

          if (!empty($this->brand_name)) {

871a7349   Administrator   big commti
84
              $query->andFilterWhere(['ilike', 'name', $this->brand_name]);

4253cbec   root   first commit
85
86
          }

  

4d5dbae3   Administrator   big commti
87
          $query->orderBy('brand_id', 'asc');

4253cbec   root   first commit
88
89
90
91
92
  

          return $dataProvider;

      }

  

      public function getBrands($category = null, $params = [], $productQuery = null) {

4d5dbae3   Administrator   big commti
93
94
95
96
97
98
99
100
101
102
103
104
105
  //        $queryCount = ProductHelper::productCountQuery($category, $params, ['brands']);

  

          /*if (!empty($params['prices'])) {

              if ($params['prices']['min'] > 0) {

                  $queryCount->andWhere(['>=', ProductVariant::tableName() .'.price', $params['prices']['min']]);

              }

              if ($params['prices']['max'] > 0) {

                  $queryCount->andWhere(['<=', ProductVariant::tableName() .'.price', $params['prices']['max']]);

              }

          }*/

  //        if (!empty($params['options'])) {

  //            $queryCount->innerJoin(TaxOption::tableName(), TaxOption::tableName())

  //        }

4253cbec   root   first commit
106
107
108
109
110
111
  

          $query = Brand::find()

              ->select([

                  Brand::tableName() .'.*'

              ])

              ->innerJoin(Product::tableName(), Product::tableName() .'.brand_id='. Brand::tableName() .'.brand_id')

871a7349   Administrator   big commti
112
              ->innerJoin(ProductCategory::tableName(), ProductCategory::tableName() .'.product_id='. Product::tableName() .'.product_id');

4253cbec   root   first commit
113
114
  

  

4d5dbae3   Administrator   big commti
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
  //        $queryCount = Product::find()

  //            ->select(['COUNT(product.product_id)'])

  //            ->where('product.brand_id = brand.brand_id');

  //        $queryCount->andWhere('(SELECT COUNT(pv.product_variant_id) FROM "product_variant" "pv" WHERE pv.stock != 0 AND pv.product_id = product.product_id) > 0');

  //        if (!empty($category)) {

  //            $queryCount->andWhere('(SELECT COUNT(pc.product_id) FROM product_category pc WHERE pc.product_id = product.product_id AND pc.category_id = '. $category->category_id .') > 0');

  //        }

  //        if (!empty($params['options'])) {

  //            $queryCount->innerJoin('product_option', 'product_option.product_id = product.product_id');

  //            $queryCount->innerJoin('tax_option', 'tax_option.tax_option_id = product_option.option_id');

  //            $queryCount->innerJoin('tax_group', 'tax_group.tax_group_id = tax_option.tax_group_id');

  //            foreach ($params['options'] as $group => $options) {

  //                $queryCount->andWhere([

  //                    'tax_group.alias' => $group,

  //                    'tax_option.alias' => $options

  //                ]);

  //            }

  ////            $query->addSelect("(SELECT COUNT(product_option.product_id) AS products FROM product_option INNER JOIN tax_option ON tax_option.tax_option_id = product_option.option_id INNER JOIN tax_group ON tax_group.tax_group_id = tax_option.tax_group_id WHERE tax_group.alias LIKE '$group' AND tax_option.alias IN (" . implode(',', $options) . ")) AS _items_count");

  //        }

  //        $query->addSelect(['_items_count' => $queryCount]);

  

  //        if ($productQuery) {

  //            $productQuery->select(['COUNT(product.product_id)']);

  //            $query->addSelect(['_items_count' => $productQuery]);

  //        }

4253cbec   root   first commit
140
141
142
143
  

  

          $query->innerJoin('product_variant', 'product_variant.product_id = '. Product::tableName() .'.product_id');

          $query->where(['!=', 'product_variant.stock', 0]);

4d5dbae3   Administrator   big commti
144
          $query->groupBy(Product::tableName() .'.product_id');

4253cbec   root   first commit
145
146
147
148
149
          if (!empty($category)) {

              $query->andWhere([

                  ProductCategory::tableName() .'.category_id' => $category->category_id

              ]);

          }

4d5dbae3   Administrator   big commti
150
          $query->groupBy(Brand::tableName() .'.brand_id');

4253cbec   root   first commit
151
152
153
154
155
156
157
  

          return $query;

      }

  

      public static function findByAlias($alias) {

          /** @var CategoryQuery $query */

          $query = Brand::find()

4253cbec   root   first commit
158
159
160
161
162
163
164
165
              ->andFilterWhere(['alias' => $alias]);

          if (($model = $query->one()) !== null) {

              return $model;

          } else {

              throw new NotFoundHttpException('The requested page does not exist.');

          }

      }

  }