Blame view

common/modules/rubrication/models/TaxGroup.php 6.77 KB
d8c1a2e0   Yarik   Big commit artbox
1
  <?php

36d1807a   Yarik   Big commit.
2
3
4
      

      namespace common\modules\rubrication\models;

      

d55d2fe0   Yarik   Multilanguage
5
      use common\modules\language\behaviors\LanguageBehavior;

96410438   Yarik   Project admin com...
6
      use common\modules\language\models\Language;

36d1807a   Yarik   Big commit.
7
      use common\modules\product\models\Category;

772a3ca4   Yarik   Big commit
8
      use yii\base\InvalidValueException;

d55d2fe0   Yarik   Multilanguage
9
10
11
      use yii\db\ActiveQuery;

      use yii\db\ActiveRecord;

      use yii\web\Request;

93c267f7   Yarik   Multilanguage big...
12
      

d8c1a2e0   Yarik   Big commit artbox
13
      /**

36d1807a   Yarik   Big commit.
14
       * This is the model class for table "{{%tax_group}}".

c70f24ea   Yarik   For Leha commit.
15
16
       *

       * @property integer        $id

93c267f7   Yarik   Multilanguage big...
17
18
19
20
21
       * @property boolean        $is_filter

       * @property integer        $level

       * @property integer        $sort

       * @property boolean        $display

       * @property boolean        $is_menu

5c2eb7c8   Yarik   Big commit almost...
22
       * @property string         $remote_id

93c267f7   Yarik   Multilanguage big...
23
24
25
       * @property TaxOption[]    $taxOptions

       * @property Category[]     $categories

       * @property TaxOption[]    $options

772a3ca4   Yarik   Big commit
26
27
       * @property TaxOption[]    $customOptions

       * @property string         $alias

d55d2fe0   Yarik   Multilanguage
28
       * * From language behavior *

93c267f7   Yarik   Multilanguage big...
29
30
       * @property TaxGroupLang   $lang

       * @property TaxGroupLang[] $langs

8af13427   Yarik   For leha commit.
31
       * @property TaxGroupLang   $objectLang

d55d2fe0   Yarik   Multilanguage
32
33
       * @property string         $ownerKey

       * @property string         $langKey

8af13427   Yarik   For leha commit.
34
       * @property TaxGroupLang[] $modelLangs

72a992f5   Yarik   Import browser v1.0
35
       * @property bool           $transactionStatus

d55d2fe0   Yarik   Multilanguage
36
       * @method string           getOwnerKey()

93c267f7   Yarik   Multilanguage big...
37
       * @method void             setOwnerKey( string $value )

d55d2fe0   Yarik   Multilanguage
38
       * @method string           getLangKey()

93c267f7   Yarik   Multilanguage big...
39
       * @method void             setLangKey( string $value )

d55d2fe0   Yarik   Multilanguage
40
41
42
       * @method ActiveQuery      getLangs()

       * @method ActiveQuery      getLang( integer $language_id )

       * @method TaxGroupLang[]    generateLangs()

72a992f5   Yarik   Import browser v1.0
43
44
45
46
       * @method void             loadLangs( Request $request )

       * @method bool             linkLangs()

       * @method bool             saveLangs()

       * @method bool             getTransactionStatus()

d55d2fe0   Yarik   Multilanguage
47
       * * End language behavior *

d8c1a2e0   Yarik   Big commit artbox
48
       */

72a992f5   Yarik   Import browser v1.0
49
      class TaxGroup extends ActiveRecord

d8c1a2e0   Yarik   Big commit artbox
50
      {

93c267f7   Yarik   Multilanguage big...
51
          

c70f24ea   Yarik   For Leha commit.
52
53
54
          const GROUP_PRODUCT = 0;

          const GROUP_VARIANT = 1;

          

cc658b4c   Yarik   Big commit
55
          /**

8af13427   Yarik   For leha commit.
56
           * @var TaxOption[] $options

cc658b4c   Yarik   Big commit
57
           */

772a3ca4   Yarik   Big commit
58
          protected $customOptions = [];

36d1807a   Yarik   Big commit.
59
60
61
62
63
64
65
          

          /**

           * @inheritdoc

           */

          public function behaviors()

          {

              return [

d55d2fe0   Yarik   Multilanguage
66
67
68
                  'language' => [

                      'class' => LanguageBehavior::className(),

                  ],

36d1807a   Yarik   Big commit.
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
              ];

          }

          

          /**

           * @inheritdoc

           */

          public static function tableName()

          {

              return 'tax_group';

          }

          

          /**

           * @inheritdoc

           */

          public function rules()

          {

              return [

                  [

                      [

36d1807a   Yarik   Big commit.
88
89
90
91
92
93
94
95
96
97
98
99
100
101
                          'is_filter',

                          'display',

                          'is_menu',

                      ],

                      'boolean',

                  ],

                  [

                      [

                          'level',

                          'sort',

                      ],

                      'integer',

                  ],

                  [

36d1807a   Yarik   Big commit.
102
103
104
105
106
107
108
109
110
111
112
113
                      [ 'categories' ],

                      'safe',

                  ],

              ];

          }

          

          /**

           * @inheritdoc

           */

          public function attributeLabels()

          {

              return [

c70f24ea   Yarik   For Leha commit.
114
115
116
117
118
                  'id'        => 'Tax Group ID',

                  'is_filter' => 'Use in filter',

                  'sort'      => 'Sort',

                  'display'   => 'Display',

                  'is_menu'   => 'Отображать в меню',

36d1807a   Yarik   Big commit.
119
120
121
              ];

          }

          

772a3ca4   Yarik   Big commit
122
123
124
          /**

           * @return ActiveQuery

           */

36d1807a   Yarik   Big commit.
125
126
          public function getCategories()

          {

8af13427   Yarik   For leha commit.
127
              return $this->hasMany(Category::className(), [ 'id' => 'category_id' ])

c70f24ea   Yarik   For Leha commit.
128
                          ->viaTable('tax_group_to_category', [ 'tax_group_id' => 'id' ]);

36d1807a   Yarik   Big commit.
129
130
          }

          

772a3ca4   Yarik   Big commit
131
132
133
134
135
136
          /**

           * Set categories to override tax_group_to_category table data

           *

           * @param int[] $values

           */

          public function setCategories(array $values)

36d1807a   Yarik   Big commit.
137
138
139
140
          {

              $this->categories = $values;

          }

          

772a3ca4   Yarik   Big commit
141
142
143
          /**

           * @inheritdoc

           */

36d1807a   Yarik   Big commit.
144
145
          public function afterSave($insert, $changedAttributes)

          {

424ec7e0   Yarik   Import browser be...
146
              parent::afterSave($insert, $changedAttributes);

36d1807a   Yarik   Big commit.
147
148
              $this->unlinkAll('categories', true);

              $categories = [];

c70f24ea   Yarik   For Leha commit.
149
              if (!empty( $this->categories )) {

36d1807a   Yarik   Big commit.
150
151
                  $categories = Category::findAll($this->categories);

              }

c70f24ea   Yarik   For Leha commit.
152
              foreach ($categories as $category) {

36d1807a   Yarik   Big commit.
153
154
155
156
157
                  $this->link('categories', $category);

              }

          }

          

          /**

772a3ca4   Yarik   Big commit
158
159
160
161
162
163
164
165
166
167
168
169
           * @return ActiveQuery

           */

          public function getTaxOptions()

          {

              return $this->hasMany(TaxOption::className(), [ 'tax_group_id' => 'id' ])

                          ->inverseOf('taxGroup');

          }

          

          /**

           * Synonim for getTaxOptions()

           *

           * @see TaxGroup::getTaxOptions()

36d1807a   Yarik   Big commit.
170
171
172
173
174
175
176
           * @return \yii\db\ActiveQuery

           */

          public function getOptions()

          {

              return $this->getTaxOptions();

          }

          

772a3ca4   Yarik   Big commit
177
178
179
180
181
182
183
184
185
          /**

           * Get customOptins that were filled dynamically.

           * If $fillDefault is true then fill $customOptions with TaxOptions for current TaxGroup

           *

           * @param bool $fillDefault

           *

           * @return TaxOption[]

           */

          public function getCustomOptions(bool $fillDefault = false): array

36d1807a   Yarik   Big commit.
186
          {

772a3ca4   Yarik   Big commit
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
              if ($fillDefault && empty( $this->custom_options )) {

                  $this->customOptions = $this->getTaxOptions()

                                              ->with('lang')

                                              ->all();

              }

              return $this->customOptions;

          }

          

          /**

           * Set customOptions

           *

           * @param TaxOption[] $value

           */

          public function setCustomOptions(array $value)

          {

              foreach ($value as $item) {

                  if (!( $item instanceof TaxOption )) {

                      throw new InvalidValueException('All elements must be instances of ' . TaxOption::className());

                  }

              }

              $this->customOptions = $value;

d8c1a2e0   Yarik   Big commit artbox
208
          }

96410438   Yarik   Project admin com...
209
          

772a3ca4   Yarik   Big commit
210
211
212
213
214
          /**

           * Get default lang alias

           *

           * @return string

           */

72a992f5   Yarik   Import browser v1.0
215
216
          public function getAlias()

          {

96410438   Yarik   Project admin com...
217
218
219
220
              $default_lang = Language::getDefaultLanguage();

              /**

               * @var TaxGroupLang $lang

               */

8af13427   Yarik   For leha commit.
221
              $lang = $this->getLang($default_lang->id)

72a992f5   Yarik   Import browser v1.0
222
                           ->one();

96410438   Yarik   Project admin com...
223
224
              return $lang->alias;

          }

d8c1a2e0   Yarik   Big commit artbox
225
      }