Blame view

models/Order.php 7.77 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
64
65
66
67
68
          
          public static function tableName()
          {
              return 'order';
          }
          
2b29877e   Alexey Boroda   -Added time colum...
69
70
71
72
73
74
75
76
77
          public function behaviors()
          {
              return [
                  [
                      'class' => TimestampBehavior::className(),
                  ],
              ];
          }
          
8a7e6ecf   Yarik   Namespaces
78
79
80
81
          public function rules()
          {
              return [
                  [
ccfc5763   Alexey Boroda   -Order in process 3
82
                      [ 'pay' ],
bb962a6d   Alexey Boroda   -Order in process
83
84
85
                      'boolean',
                  ],
                  [
8a7e6ecf   Yarik   Namespaces
86
                      [
2b29877e   Alexey Boroda   -Added time colum...
87
88
89
                          'created_at',
                          'updated_at',
                          'deleted_at',
ccfc5763   Alexey Boroda   -Order in process 3
90
91
92
                          'payment',
                          'reason',
                          'label',
01185786   Alexey Boroda   -Sms in process
93
                          'manager_id',
2b29877e   Alexey Boroda   -Added time colum...
94
95
96
97
                      ],
                      'integer',
                  ],
                  [
01185786   Alexey Boroda   -Sms in process
98
99
100
101
                      [ 'total' ],
                      'double',
                  ],
                  [
2b29877e   Alexey Boroda   -Added time colum...
102
                      [
8a7e6ecf   Yarik   Namespaces
103
104
105
106
107
108
                          'phone',
                      ],
                      'required',
                  ],
                  [
                      [ 'comment' ],
bb962a6d   Alexey Boroda   -Order in process
109
                      'string',
8a7e6ecf   Yarik   Namespaces
110
111
112
113
114
115
                  ],
                  [
                      [ 'email' ],
                      'email',
                  ],
                  [
bb962a6d   Alexey Boroda   -Order in process
116
117
118
119
                      [
                          'phone',
                          'phone2',
                      ],
8a7e6ecf   Yarik   Namespaces
120
121
                      'match',
                      'pattern' => '/^\+38\(\d{3}\)\d{3}-\d{2}-\d{2}$/',
8a7e6ecf   Yarik   Namespaces
122
123
124
                  ],
                  [
                      [
ccfc5763   Alexey Boroda   -Order in process 3
125
                          'deadline',
8a7e6ecf   Yarik   Namespaces
126
                          'name',
8a7e6ecf   Yarik   Namespaces
127
128
129
130
131
                          'numbercard',
                          'body',
                          'declaration',
                          'stock',
                          'consignment',
8a7e6ecf   Yarik   Namespaces
132
133
134
135
136
                          'insurance',
                          'amount_imposed',
                          'shipping_by',
                          'city',
                          'adress',
8a7e6ecf   Yarik   Namespaces
137
                          'status',
ccfc5763   Alexey Boroda   -Order in process 3
138
139
                          'check',
                          'sms',
8a7e6ecf   Yarik   Namespaces
140
141
142
143
                      ],
                      'string',
                      'max' => 255,
                  ],
8a7e6ecf   Yarik   Namespaces
144
145
146
              ];
          }
          
ccfc5763   Alexey Boroda   -Order in process 3
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
          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
176
177
178
          public function attributeLabels()
          {
              return [
01185786   Alexey Boroda   -Sms in process
179
180
181
182
183
184
185
186
187
188
189
190
191
                  '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
192
193
194
              ];
          }
          
8a7e6ecf   Yarik   Namespaces
195
196
197
198
          public function getUser()
          {
              return $this->hasOne(Customer::className(), [ 'id' => 'user_id' ]);
          }
ccfc5763   Alexey Boroda   -Order in process 3
199
          
25b21043   Administrator   add create_item t...
200
201
202
          /**
           * @return \yii\db\ActiveQuery
           */
8a7e6ecf   Yarik   Namespaces
203
204
205
206
          public function getProducts()
          {
              return $this->hasMany(OrderProduct::className(), [ 'order_id' => 'id' ]);
          }
ccfc5763   Alexey Boroda   -Order in process 3
207
          
25b21043   Administrator   add create_item t...
208
209
210
          /**
           * @return \yii\db\ActiveQuery
           */
ccfc5763   Alexey Boroda   -Order in process 3
211
212
213
          public function getOrderDelivery()
          {
              return $this->hasOne(Delivery::className(), [ 'id' => 'delivery' ]);
25b21043   Administrator   add create_item t...
214
          }
ccfc5763   Alexey Boroda   -Order in process 3
215
          
25b21043   Administrator   add create_item t...
216
217
218
          /**
           * @return \yii\db\ActiveQuery
           */
ccfc5763   Alexey Boroda   -Order in process 3
219
220
          public function getOrderLabel()
          {
ce75bc1d   Alexey Boroda   -Grid view half w...
221
              return $this->hasOne(Label::className(), [ 'id' => 'label' ]);
25b21043   Administrator   add create_item t...
222
          }
ccfc5763   Alexey Boroda   -Order in process 3
223
          
25b21043   Administrator   add create_item t...
224
225
226
          /**
           * @return \yii\db\ActiveQuery
           */
ccfc5763   Alexey Boroda   -Order in process 3
227
228
229
          public function getOrderPayment()
          {
              return $this->hasOne(OrderPayment::className(), [ 'id' => 'payment' ]);
25b21043   Administrator   add create_item t...
230
          }
ccfc5763   Alexey Boroda   -Order in process 3
231
          
25b21043   Administrator   add create_item t...
232
233
234
          /**
           * @return string
           */
ccfc5763   Alexey Boroda   -Order in process 3
235
236
237
238
239
          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...
240
                  } else {
fbfae870   Administrator   add create_item t...
241
                      return $this->orderDelivery->lang->title;
25b21043   Administrator   add create_item t...
242
243
244
245
246
                  }
              } else {
                  return '';
              }
          }
01185786   Alexey Boroda   -Sms in process
247
          
ce75bc1d   Alexey Boroda   -Grid view half w...
248
249
250
          /**
           * If deadline is fucked up returns true,
           * if deadline is not setted return false, like everything is ok
01185786   Alexey Boroda   -Sms in process
251
           *
ce75bc1d   Alexey Boroda   -Grid view half w...
252
253
254
255
           * @return bool
           */
          public function getWasted()
          {
01185786   Alexey Boroda   -Sms in process
256
              if (empty( $this->deadline )) {
ce75bc1d   Alexey Boroda   -Grid view half w...
257
258
                  return false;
              } else {
eb15a89c   Alexey Boroda   -Dancing with com...
259
                  return time() > strtotime($this->deadline);
ce75bc1d   Alexey Boroda   -Grid view half w...
260
261
              }
          }
01185786   Alexey Boroda   -Sms in process
262
263
264
265
266
267
268
269
          
          /**
           *
           */
          public function getManager()
          {
              $this->hasOne(User::className(), [ 'id' => 'manager_id' ]);
          }
8a7e6ecf   Yarik   Namespaces
270
      }