Blame view

common/modules/product/models/ProductVariantSearch.php 3.96 KB
d8c1a2e0   Yarik   Big commit artbox
1
  <?php

d55d2fe0   Yarik   Multilanguage
2
      

4e55ce81   Yarik   Another one admin...
3
4
5
6
      namespace common\modules\product\models;

      

      use yii\base\Model;

      use yii\data\ActiveDataProvider;

d55d2fe0   Yarik   Multilanguage
7
      

d8c1a2e0   Yarik   Big commit artbox
8
      /**

4e55ce81   Yarik   Another one admin...
9
10
       * ProductVariantSearch represents the model behind the search form about

       * `common\modules\product\models\ProductVariant`.

d8c1a2e0   Yarik   Big commit artbox
11
       */

4e55ce81   Yarik   Another one admin...
12
      class ProductVariantSearch extends ProductVariant

d8c1a2e0   Yarik   Big commit artbox
13
      {

4e55ce81   Yarik   Another one admin...
14
15
16
17
18
19
          

          public $variant_name;

          

          public function behaviors()

          {

              return [];

d8c1a2e0   Yarik   Big commit artbox
20
          }

4e55ce81   Yarik   Another one admin...
21
22
23
24
25
26
27
28
29
30
31
32
33
          

          /**

           * @inheritdoc

           */

          public function rules()

          {

              return [

                  [

                      [

                          'variant_name',

                          'sku',

                      ],

                      'safe',

d8c1a2e0   Yarik   Big commit artbox
34
                  ],

4e55ce81   Yarik   Another one admin...
35
36
37
38
39
40
                  [

                      [

                          'product_variant_id',

                          'stock',

                      ],

                      'integer',

d8c1a2e0   Yarik   Big commit artbox
41
                  ],

4e55ce81   Yarik   Another one admin...
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
                  [

                      [

                          'price',

                          'price_old',

                      ],

                      'number',

                  ],

              ];

          }

          

          /**

           * @inheritdoc

           */

          public function scenarios()

          {

              // bypass scenarios() implementation in the parent class

              return Model::scenarios();

d8c1a2e0   Yarik   Big commit artbox
59
          }

4e55ce81   Yarik   Another one admin...
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
          

          /**

           * Creates data provider instance with search query applied

           *

           * @param array $params

           *

           * @return ActiveDataProvider

           */

          public function search($params)

          {

              $query = ProductVariant::find()

                                     ->joinWith('lang');

              

              // 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' => [

                      'product_variant_id',

                      'sku',

                      'variant_name' => [

                          'asc'  => [ 'product_variant_lang.name' => SORT_ASC ],

                          'desc' => [ 'product_variant_lang.name' => SORT_DESC ],

                      ],

                      'price',

                      'price_old',

                      'stock',

                  ],

              ]);

              

d8c1a2e0   Yarik   Big commit artbox
101
              $query->andFilterWhere([

4e55ce81   Yarik   Another one admin...
102
103
104
                  'price'     => $this->price,

                  'price_old' => $this->price_old,

                  'stock'     => $this->stock,

d8c1a2e0   Yarik   Big commit artbox
105
              ]);

4e55ce81   Yarik   Another one admin...
106
              

d8c1a2e0   Yarik   Big commit artbox
107
              $query->andFilterWhere([

4e55ce81   Yarik   Another one admin...
108
109
110
111
112
113
114
115
116
117
118
119
120
                  'ilike',

                  'product_variant_lang.name',

                  $this->variant_name,

              ])

                    ->andFilterWhere([

                        'ilike',

                        'sku',

                        $this->sku,

                    ]);

              

              $query->groupBy([

                  'product_variant.product_variant_id',

                  'product_variant_lang.name',

d8c1a2e0   Yarik   Big commit artbox
121
              ]);

4e55ce81   Yarik   Another one admin...
122
123
              

              return $dataProvider;

d8c1a2e0   Yarik   Big commit artbox
124
          }

4e55ce81   Yarik   Another one admin...
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
          

          /**

           * @param string $sku

           *

           * @return ProductVariant|null

           */

          public static function findBySku($sku)

          {

              /**

               * @var ProductVariant|null $result

               */

              $result = ProductVariant::find()

                                      ->andWhere([ 'sku' => $sku ])

                                      ->one();

              return $result;

d8c1a2e0   Yarik   Big commit artbox
140
          }

d8c1a2e0   Yarik   Big commit artbox
141
      }