Blame view

models/Order.php 6.85 KB
8a7e6ecf   Yarik   Namespaces
1
2
3
4
5
  <?php
      namespace artweb\artbox\ecommerce\models;
      
      use artweb\artbox\models\Customer;
      use Yii;
2b29877e   Alexey Boroda   -Added time colum...
6
      use yii\behaviors\TimestampBehavior;
8a7e6ecf   Yarik   Namespaces
7
      use yii\db\ActiveRecord;
8a7e6ecf   Yarik   Namespaces
8
9
10
11
12
13
      
      /**
       * Class Order
       *
       * @todo    Write docs and refactor
       * @package artweb\artbox\ecommerce\models
2b29877e   Alexey Boroda   -Added time colum...
14
15
16
       * @property integer $created_at
       * @property integer $updated_at
       * @property integer $deleted_at
ccfc5763   Alexey Boroda   -Order in process 3
17
18
19
20
       * @property integer $deadline
       * @property integer $reason
       * @property string  $check
       * @property string  $sms
2b29877e   Alexey Boroda   -Added time colum...
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
       * @property int     $id
       * @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...
47
       * @property string  $deliveryString
8a7e6ecf   Yarik   Namespaces
48
49
50
       */
      class Order extends ActiveRecord
      {
bb962a6d   Alexey Boroda   -Order in process
51
52
53
54
55
56
57
58
59
          
          const SHIPPING_BY = [
              1 => [
                  'label' => 'Отправитель',
              ],
              2 => [
                  'label' => 'Получатель',
              ],
          ];
8a7e6ecf   Yarik   Namespaces
60
61
62
63
64
65
          
          public static function tableName()
          {
              return 'order';
          }
          
2b29877e   Alexey Boroda   -Added time colum...
66
67
68
69
70
71
72
73
74
          public function behaviors()
          {
              return [
                  [
                      'class' => TimestampBehavior::className(),
                  ],
              ];
          }
          
8a7e6ecf   Yarik   Namespaces
75
76
77
78
          public function rules()
          {
              return [
                  [
ccfc5763   Alexey Boroda   -Order in process 3
79
                      [ 'pay' ],
bb962a6d   Alexey Boroda   -Order in process
80
81
82
                      'boolean',
                  ],
                  [
8a7e6ecf   Yarik   Namespaces
83
                      [
2b29877e   Alexey Boroda   -Added time colum...
84
85
86
                          'created_at',
                          'updated_at',
                          'deleted_at',
ccfc5763   Alexey Boroda   -Order in process 3
87
88
89
                          'payment',
                          'reason',
                          'label',
2b29877e   Alexey Boroda   -Added time colum...
90
91
92
93
94
                      ],
                      'integer',
                  ],
                  [
                      [
8a7e6ecf   Yarik   Namespaces
95
96
97
98
99
100
                          'phone',
                      ],
                      'required',
                  ],
                  [
                      [ 'comment' ],
bb962a6d   Alexey Boroda   -Order in process
101
                      'string',
8a7e6ecf   Yarik   Namespaces
102
103
104
105
106
107
                  ],
                  [
                      [ 'email' ],
                      'email',
                  ],
                  [
bb962a6d   Alexey Boroda   -Order in process
108
109
110
111
                      [
                          'phone',
                          'phone2',
                      ],
8a7e6ecf   Yarik   Namespaces
112
113
                      'match',
                      'pattern' => '/^\+38\(\d{3}\)\d{3}-\d{2}-\d{2}$/',
8a7e6ecf   Yarik   Namespaces
114
115
116
                  ],
                  [
                      [
ccfc5763   Alexey Boroda   -Order in process 3
117
                          'deadline',
8a7e6ecf   Yarik   Namespaces
118
                          'name',
8a7e6ecf   Yarik   Namespaces
119
120
121
122
123
                          'numbercard',
                          'body',
                          'declaration',
                          'stock',
                          'consignment',
8a7e6ecf   Yarik   Namespaces
124
125
126
127
128
129
130
                          'insurance',
                          'amount_imposed',
                          'shipping_by',
                          'city',
                          'adress',
                          'total',
                          'status',
ccfc5763   Alexey Boroda   -Order in process 3
131
132
                          'check',
                          'sms',
8a7e6ecf   Yarik   Namespaces
133
134
135
136
                      ],
                      'string',
                      'max' => 255,
                  ],
8a7e6ecf   Yarik   Namespaces
137
138
139
              ];
          }
          
ccfc5763   Alexey Boroda   -Order in process 3
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
          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
169
170
171
          public function attributeLabels()
          {
              return [
2b29877e   Alexey Boroda   -Added time colum...
172
173
174
175
176
177
178
                  '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', 'Дата удаления'),
ccfc5763   Alexey Boroda   -Order in process 3
179
180
181
182
                  'deadline'   => Yii::t('app', 'Дедлайн'),
                  'reason'     => Yii::t('app', 'Причина'),
                  'check'      => Yii::t('app', 'Чек'),
                  'sms'        => Yii::t('app', 'СМС'),
8a7e6ecf   Yarik   Namespaces
183
184
185
              ];
          }
          
8a7e6ecf   Yarik   Namespaces
186
187
188
189
          public function getUser()
          {
              return $this->hasOne(Customer::className(), [ 'id' => 'user_id' ]);
          }
ccfc5763   Alexey Boroda   -Order in process 3
190
          
25b21043   Administrator   add create_item t...
191
192
193
          /**
           * @return \yii\db\ActiveQuery
           */
8a7e6ecf   Yarik   Namespaces
194
195
196
197
          public function getProducts()
          {
              return $this->hasMany(OrderProduct::className(), [ 'order_id' => 'id' ]);
          }
ccfc5763   Alexey Boroda   -Order in process 3
198
          
25b21043   Administrator   add create_item t...
199
200
201
          /**
           * @return \yii\db\ActiveQuery
           */
ccfc5763   Alexey Boroda   -Order in process 3
202
203
204
          public function getOrderDelivery()
          {
              return $this->hasOne(Delivery::className(), [ 'id' => 'delivery' ]);
25b21043   Administrator   add create_item t...
205
          }
ccfc5763   Alexey Boroda   -Order in process 3
206
          
25b21043   Administrator   add create_item t...
207
208
209
          /**
           * @return \yii\db\ActiveQuery
           */
ccfc5763   Alexey Boroda   -Order in process 3
210
211
212
          public function getOrderLabel()
          {
              return $this->hasOne(Label::className(), [ 'id' => 'status' ]);
25b21043   Administrator   add create_item t...
213
          }
ccfc5763   Alexey Boroda   -Order in process 3
214
          
25b21043   Administrator   add create_item t...
215
216
217
          /**
           * @return \yii\db\ActiveQuery
           */
ccfc5763   Alexey Boroda   -Order in process 3
218
219
220
          public function getOrderPayment()
          {
              return $this->hasOne(OrderPayment::className(), [ 'id' => 'payment' ]);
25b21043   Administrator   add create_item t...
221
          }
ccfc5763   Alexey Boroda   -Order in process 3
222
          
25b21043   Administrator   add create_item t...
223
224
225
          /**
           * @return string
           */
ccfc5763   Alexey Boroda   -Order in process 3
226
227
228
229
230
          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...
231
                  } else {
fbfae870   Administrator   add create_item t...
232
                      return $this->orderDelivery->lang->title;
25b21043   Administrator   add create_item t...
233
234
235
236
237
                  }
              } else {
                  return '';
              }
          }
ccfc5763   Alexey Boroda   -Order in process 3
238
          
8a7e6ecf   Yarik   Namespaces
239
      }