Blame view

models/Order.php 8.67 KB
8a7e6ecf   Yarik   Namespaces
1
2
3
4
  <?php
      namespace artweb\artbox\ecommerce\models;
      
      use artweb\artbox\models\Customer;
01185786   Alexey Boroda   -Sms in process
5
      use common\models\User;
8a7e6ecf   Yarik   Namespaces
6
      use Yii;
2b29877e   Alexey Boroda   -Added time colum...
7
      use yii\behaviors\TimestampBehavior;
8a7e6ecf   Yarik   Namespaces
8
      use yii\db\ActiveRecord;
8a7e6ecf   Yarik   Namespaces
9
10
11
12
13
14
      
      /**
       * Class Order
       *
       * @todo    Write docs and refactor
       * @package artweb\artbox\ecommerce\models
2b29877e   Alexey Boroda   -Added time colum...
15
16
17
       * @property integer $created_at
       * @property integer $updated_at
       * @property integer $deleted_at
ccfc5763   Alexey Boroda   -Order in process 3
18
       * @property integer $deadline
ce75bc1d   Alexey Boroda   -Grid view half w...
19
       * @property boolean $wasted
ccfc5763   Alexey Boroda   -Order in process 3
20
21
22
       * @property integer $reason
       * @property string  $check
       * @property string  $sms
2b29877e   Alexey Boroda   -Added time colum...
23
       * @property int     $id
01185786   Alexey Boroda   -Sms in process
24
       * @property integer $manager_id
2b29877e   Alexey Boroda   -Added time colum...
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
       * @property int     $user_id
       * @property string  $name
       * @property string  $phone
       * @property string  $phone2
       * @property string  $email
       * @property string  $adress
       * @property string  $body
       * @property double  $total
       * @property string  $date_time
       * @property string  $date_dedline
       * @property string  $reserve
       * @property string  $status
       * @property string  $comment
       * @property int     $label
       * @property int     $pay
       * @property int     $numbercard
       * @property int     $delivery
       * @property string  $declaration
       * @property string  $stock
       * @property string  $consignment
       * @property string  $payment
       * @property string  $insurance
       * @property double  $amount_imposed
       * @property string  $shipping_by
       * @property string  $city
25b21043   Administrator   add create_item t...
50
       * @property string  $deliveryString
8a7e6ecf   Yarik   Namespaces
51
52
53
       */
      class Order extends ActiveRecord
      {
bb962a6d   Alexey Boroda   -Order in process
54
55
56
57
58
59
60
61
62
          
          const SHIPPING_BY = [
              1 => [
                  'label' => 'Отправитель',
              ],
              2 => [
                  'label' => 'Получатель',
              ],
          ];
8a7e6ecf   Yarik   Namespaces
63
          
db3040d3   Alexey Boroda   -Order module alm...
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
          const REASONS = [
              1  => 'Нет товара',
              2  => 'Нет оплаты',
              3  => 'Передумал',
              4  => ' - Купил в другом месте',
              5  => ' - Не подошли условия доставки',
              6  => ' - Не подошел срок доставки',
              7  => ' - Нет денег',
              8  => ' - Купит позже',
              9  => 'Купил в другом месте',
              10 => 'Подьедет в маг.',
              11 => 'Дубль заказа.',
              12 => 'Другое',
              13 => 'Брак',
              14 => 'Отказался от Самовывоза',
              15 => 'Не приехал за Самовывозом',
              16 => 'Отменил заказ',
              17 => 'Не берет трубку',
          ];
          
8a7e6ecf   Yarik   Namespaces
84
85
86
87
88
          public static function tableName()
          {
              return 'order';
          }
          
2b29877e   Alexey Boroda   -Added time colum...
89
90
91
92
93
94
95
96
97
          public function behaviors()
          {
              return [
                  [
                      'class' => TimestampBehavior::className(),
                  ],
              ];
          }
          
8a7e6ecf   Yarik   Namespaces
98
99
100
101
          public function rules()
          {
              return [
                  [
ccfc5763   Alexey Boroda   -Order in process 3
102
                      [ 'pay' ],
bb962a6d   Alexey Boroda   -Order in process
103
104
105
                      'boolean',
                  ],
                  [
8a7e6ecf   Yarik   Namespaces
106
                      [
2b29877e   Alexey Boroda   -Added time colum...
107
108
109
                          'created_at',
                          'updated_at',
                          'deleted_at',
ccfc5763   Alexey Boroda   -Order in process 3
110
111
112
                          'payment',
                          'reason',
                          'label',
01185786   Alexey Boroda   -Sms in process
113
                          'manager_id',
2b29877e   Alexey Boroda   -Added time colum...
114
115
116
117
                      ],
                      'integer',
                  ],
                  [
01185786   Alexey Boroda   -Sms in process
118
119
120
121
                      [ 'total' ],
                      'double',
                  ],
                  [
2b29877e   Alexey Boroda   -Added time colum...
122
                      [
8a7e6ecf   Yarik   Namespaces
123
124
125
126
127
128
                          'phone',
                      ],
                      'required',
                  ],
                  [
                      [ 'comment' ],
bb962a6d   Alexey Boroda   -Order in process
129
                      'string',
8a7e6ecf   Yarik   Namespaces
130
131
132
133
134
135
                  ],
                  [
                      [ 'email' ],
                      'email',
                  ],
                  [
bb962a6d   Alexey Boroda   -Order in process
136
137
138
139
                      [
                          'phone',
                          'phone2',
                      ],
8a7e6ecf   Yarik   Namespaces
140
141
                      'match',
                      'pattern' => '/^\+38\(\d{3}\)\d{3}-\d{2}-\d{2}$/',
8a7e6ecf   Yarik   Namespaces
142
143
144
                  ],
                  [
                      [
ccfc5763   Alexey Boroda   -Order in process 3
145
                          'deadline',
8a7e6ecf   Yarik   Namespaces
146
                          'name',
8a7e6ecf   Yarik   Namespaces
147
148
149
150
151
                          'numbercard',
                          'body',
                          'declaration',
                          'stock',
                          'consignment',
8a7e6ecf   Yarik   Namespaces
152
153
154
155
156
                          'insurance',
                          'amount_imposed',
                          'shipping_by',
                          'city',
                          'adress',
8a7e6ecf   Yarik   Namespaces
157
                          'status',
ccfc5763   Alexey Boroda   -Order in process 3
158
159
                          'check',
                          'sms',
8a7e6ecf   Yarik   Namespaces
160
161
162
163
                      ],
                      'string',
                      'max' => 255,
                  ],
8a7e6ecf   Yarik   Namespaces
164
165
166
              ];
          }
          
ccfc5763   Alexey Boroda   -Order in process 3
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
          public function afterFind()
          {
              parent::afterFind();
              $this->deadline = !empty( $this->deadline ) ? date('d.m.Y', $this->deadline) : '';
              
          }
          
          public function beforeSave($insert)
          {
              if (parent::beforeSave($insert)) {
                  
                  $this->convertDate();
                  return true;
              }
              return false;
              
          }
          
          protected function convertDate()
          {
              if (!empty( $this->deadline )) {
                  $date = new \DateTime($this->deadline);
                  $date->format("d.m.Y");
                  $this->deadline = $date->getTimestamp();
                  
              }
              
          }
          
8a7e6ecf   Yarik   Namespaces
196
197
198
          public function attributeLabels()
          {
              return [
01185786   Alexey Boroda   -Sms in process
199
200
201
202
203
204
205
206
207
208
209
210
211
                  'name'        => Yii::t('app', 'order_name'),
                  'phone'       => Yii::t('app', 'order_phone'),
                  'email'       => Yii::t('app', 'order_email'),
                  'comment'     => Yii::t('app', 'order_comment'),
                  'created_at'  => Yii::t('app', 'Дата добавления'),
                  'updated_at'  => Yii::t('app', 'Дата обновления'),
                  'deleted_at'  => Yii::t('app', 'Дата удаления'),
                  'deadline'    => Yii::t('app', 'Дедлайн'),
                  'reason'      => Yii::t('app', 'Причина'),
                  'check'       => Yii::t('app', 'Чек'),
                  'sms'         => Yii::t('app', 'СМС'),
                  'consignment' => Yii::t('app', 'Номер накладной'),
                  'manager_id'  => Yii::t('app', 'Менеджер'),
8a7e6ecf   Yarik   Namespaces
212
213
214
              ];
          }
          
8a7e6ecf   Yarik   Namespaces
215
216
217
218
          public function getUser()
          {
              return $this->hasOne(Customer::className(), [ 'id' => 'user_id' ]);
          }
ccfc5763   Alexey Boroda   -Order in process 3
219
          
25b21043   Administrator   add create_item t...
220
221
222
          /**
           * @return \yii\db\ActiveQuery
           */
8a7e6ecf   Yarik   Namespaces
223
224
225
226
          public function getProducts()
          {
              return $this->hasMany(OrderProduct::className(), [ 'order_id' => 'id' ]);
          }
ccfc5763   Alexey Boroda   -Order in process 3
227
          
25b21043   Administrator   add create_item t...
228
229
230
          /**
           * @return \yii\db\ActiveQuery
           */
ccfc5763   Alexey Boroda   -Order in process 3
231
232
233
          public function getOrderDelivery()
          {
              return $this->hasOne(Delivery::className(), [ 'id' => 'delivery' ]);
25b21043   Administrator   add create_item t...
234
          }
ccfc5763   Alexey Boroda   -Order in process 3
235
          
25b21043   Administrator   add create_item t...
236
237
238
          /**
           * @return \yii\db\ActiveQuery
           */
ccfc5763   Alexey Boroda   -Order in process 3
239
240
          public function getOrderLabel()
          {
ce75bc1d   Alexey Boroda   -Grid view half w...
241
              return $this->hasOne(Label::className(), [ 'id' => 'label' ]);
25b21043   Administrator   add create_item t...
242
          }
ccfc5763   Alexey Boroda   -Order in process 3
243
          
25b21043   Administrator   add create_item t...
244
245
246
          /**
           * @return \yii\db\ActiveQuery
           */
ccfc5763   Alexey Boroda   -Order in process 3
247
248
249
          public function getOrderPayment()
          {
              return $this->hasOne(OrderPayment::className(), [ 'id' => 'payment' ]);
25b21043   Administrator   add create_item t...
250
          }
ccfc5763   Alexey Boroda   -Order in process 3
251
          
25b21043   Administrator   add create_item t...
252
253
254
          /**
           * @return string
           */
ccfc5763   Alexey Boroda   -Order in process 3
255
256
257
258
259
          public function getDeliveryString()
          {
              if (!empty( $this->orderDelivery )) {
                  if (!empty( $this->orderDelivery->parent )) {
                      return $this->orderDelivery->parent->lang->title . ': ' . $this->orderDelivery->lang->title;
25b21043   Administrator   add create_item t...
260
                  } else {
fbfae870   Administrator   add create_item t...
261
                      return $this->orderDelivery->lang->title;
25b21043   Administrator   add create_item t...
262
263
264
265
266
                  }
              } else {
                  return '';
              }
          }
01185786   Alexey Boroda   -Sms in process
267
          
ce75bc1d   Alexey Boroda   -Grid view half w...
268
269
270
          /**
           * If deadline is fucked up returns true,
           * if deadline is not setted return false, like everything is ok
01185786   Alexey Boroda   -Sms in process
271
           *
ce75bc1d   Alexey Boroda   -Grid view half w...
272
273
274
275
           * @return bool
           */
          public function getWasted()
          {
01185786   Alexey Boroda   -Sms in process
276
              if (empty( $this->deadline )) {
ce75bc1d   Alexey Boroda   -Grid view half w...
277
278
                  return false;
              } else {
eb15a89c   Alexey Boroda   -Dancing with com...
279
                  return time() > strtotime($this->deadline);
ce75bc1d   Alexey Boroda   -Grid view half w...
280
281
              }
          }
01185786   Alexey Boroda   -Sms in process
282
283
284
285
286
287
288
289
          
          /**
           *
           */
          public function getManager()
          {
              $this->hasOne(User::className(), [ 'id' => 'manager_id' ]);
          }
8a7e6ecf   Yarik   Namespaces
290
      }