Blame view

controllers/OrderController.php 21.2 KB
e0906f08   Alexey Boroda   -Fixing existing ...
1
2
3
4
  <?php
      
      namespace artweb\artbox\ecommerce\controllers;
      
db3040d3   Alexey Boroda   -Order module alm...
5
      use artweb\artbox\components\SmsSender;
3bee3445   Alexey Boroda   -Order history ready
6
      use artweb\artbox\ecommerce\models\OrderLabelHistory;
d3406983   Alexey Boroda   -Order history ha...
7
      use artweb\artbox\ecommerce\models\OrderLog;
e0906f08   Alexey Boroda   -Fixing existing ...
8
      use artweb\artbox\ecommerce\models\OrderSearch;
03c7b7bc   Yarik   Credit v2
9
      use common\components\CreditHelper;
1f2fdc61   Alexey Boroda   -Product carousel...
10
      use common\models\User;
e0906f08   Alexey Boroda   -Fixing existing ...
11
      use Yii;
41f0c492   Yarik   Print and email
12
      use yii\data\ArrayDataProvider;
3bee3445   Alexey Boroda   -Order history ready
13
      use yii\db\ActiveQuery;
7520dc0e   Alexey Boroda   -Grid with input ...
14
      use yii\helpers\Json;
622a985a   Alexey Boroda   -Feed in process
15
      use yii\helpers\VarDumper;
03c7b7bc   Yarik   Credit v2
16
      use yii\validators\NumberValidator;
e0906f08   Alexey Boroda   -Fixing existing ...
17
18
19
      use yii\web\Controller;
      use yii\filters\VerbFilter;
      use yii\data\ActiveDataProvider;
d57c8c00   Alexey Boroda   -Blocking in process
20
      use yii\web\ForbiddenHttpException;
e0906f08   Alexey Boroda   -Fixing existing ...
21
22
23
24
25
      use artweb\artbox\ecommerce\models\Order;
      use artweb\artbox\ecommerce\models\OrderProduct;
      use artweb\artbox\ecommerce\models\ProductVariant;
      use yii\web\NotFoundHttpException;
      use developeruz\db_rbac\behaviors\AccessBehavior;
d57c8c00   Alexey Boroda   -Blocking in process
26
      use yii\web\Response;
e0906f08   Alexey Boroda   -Fixing existing ...
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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
101
102
103
104
105
106
107
108
      
      class OrderController extends Controller
      {
          /**
           * @inheritdoc
           */
          public function behaviors()
          {
              return [
                  'access' => [
                      'class' => AccessBehavior::className(),
                      'rules' => [
                          'site' => [
                              [
                                  'actions' => [
                                      'login',
                                      'error',
                                  ],
                                  'allow'   => true,
                              ],
                          ],
                      ],
                  ],
                  'verbs'  => [
                      'class'   => VerbFilter::className(),
                      'actions' => [
                          'delete' => [ 'POST' ],
                      ],
                  ],
              ];
          }
          
          public function actionIndex()
          {
              $searchModel = new OrderSearch();
              $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
              
              return $this->render(
                  'index',
                  [
                      'dataProvider' => $dataProvider,
                      'searchModel'  => $searchModel,
                  ]
              );
          }
          
          public function actionShow($id)
          {
              
              $model = $this->findModel((int) $id);
              $dataProvider = new ActiveDataProvider(
                  [
                      'query'      => OrderProduct::find()
                                                  ->where([ 'order_id' => (int) $id ]),
                      'pagination' => [
                          'pageSize' => 20,
                      ],
                  ]
              );
              if ($model->load(Yii::$app->request->post()) && $model->save()) {
                  return $this->redirect([ 'index' ]);
              } else {
                  $model_orderproduct = new OrderProduct();
                  
                  return $this->renderAjax(
                      'show',
                      [
                          'model'              => $model,
                          'model_orderproduct' => $model_orderproduct,
                          'dataProvider'       => $dataProvider,
                      ]
                  );
              }
          }
          
          public function actionLabelUpdate()
          {
              $model = Order::findOne($_POST[ 'order_id' ]);
              $model->label = $_POST[ 'label_id' ];
              $model->save();
          }
          
db3040d3   Alexey Boroda   -Order module alm...
109
110
111
          public function actionView($id)
          {
              $model = $this->findModel($id);
17569d93   Alexey Boroda   -Order product lo...
112
              
d3406983   Alexey Boroda   -Order history ha...
113
114
115
116
117
118
              $historyData = new ActiveDataProvider(
                  [
                      'query' => $model->getLabelsHistory()
                                       ->with('order', 'label', 'user'),
                  ]
              );
17569d93   Alexey Boroda   -Order product lo...
119
              
d57c8c00   Alexey Boroda   -Blocking in process
120
121
122
123
124
              $dataProvider = new ActiveDataProvider(
                  [
                      'query' => $model->getProducts(),
                  ]
              );
db3040d3   Alexey Boroda   -Order module alm...
125
126
127
              return $this->render(
                  'view',
                  [
d3406983   Alexey Boroda   -Order history ha...
128
129
                      'model'       => $model,
                      'products'    => $dataProvider,
3bee3445   Alexey Boroda   -Order history ready
130
                      'historyData' => $historyData,
db3040d3   Alexey Boroda   -Order module alm...
131
132
133
134
                  ]
              );
          }
          
e0906f08   Alexey Boroda   -Fixing existing ...
135
136
137
138
139
140
141
          public function actionPayUpdate()
          {
              $model = Order::findOne($_POST[ 'order_id' ]);
              $model->pay = $_POST[ 'pay_id' ];
              $model->save();
          }
          
d3406983   Alexey Boroda   -Order history ha...
142
143
144
          public function actionLog($id)
          {
              $model = Order::findOne($id);
17569d93   Alexey Boroda   -Order product lo...
145
              
d3406983   Alexey Boroda   -Order history ha...
146
147
148
149
150
              $logData = new ActiveDataProvider(
                  [
                      'query' => $model->getLogs(),
                  ]
              );
17569d93   Alexey Boroda   -Order product lo...
151
152
153
154
155
156
157
              
              $productLogData = new ActiveDataProvider(
                  [
                      'query' => $model->getProductLogs(),
                  ]
              );
              
d3406983   Alexey Boroda   -Order history ha...
158
159
160
              return $this->render(
                  'log',
                  [
17569d93   Alexey Boroda   -Order product lo...
161
162
163
                      'model'          => $model,
                      'logData'        => $logData,
                      'productLogData' => $productLogData,
d3406983   Alexey Boroda   -Order history ha...
164
165
166
                  ]
              );
          }
17569d93   Alexey Boroda   -Order product lo...
167
          
2ad65823   Alexey Boroda   -Added date range...
168
          public function actionDelete($id)
e0906f08   Alexey Boroda   -Fixing existing ...
169
          {
3e703aac   Alexey Boroda   -Order form fixes
170
171
172
173
174
175
176
177
              if (\Yii::$app->user->identity->isAdmin()) {
                  $this->findModel($id)
                       ->delete();
              }
              
              return $this->redirect([ 'index' ]);
          }
          
42883b83   Alexey Boroda   -Order form beta ...
178
179
180
181
182
183
184
185
186
187
          //        public function actionDeleteProduct($id)
          //        {
          //            $model = OrderProduct::findOne($id);
          //            $model->removed = true;
          //            $orderId = $model->order_id;
          //            if ($model->save()) {
          //                $model->order->totalRecount();
          //                return $this->actionUpdate($orderId);
          //            }
          //        }
e0906f08   Alexey Boroda   -Fixing existing ...
188
189
190
          
          public function actionAdd()
          {
3bee3445   Alexey Boroda   -Order history ready
191
              if (!empty(\Yii::$app->request->post())) {
2ad65823   Alexey Boroda   -Added date range...
192
193
                  $id = \Yii::$app->request->post('OrderProduct')[ 'id' ];
                  $order_id = \Yii::$app->request->post('OrderProduct')[ 'order_id' ];
3bee3445   Alexey Boroda   -Order history ready
194
                  if (!empty(\Yii::$app->request->post('OrderProduct')[ 'count' ])) {
2ad65823   Alexey Boroda   -Added date range...
195
                      $count = \Yii::$app->request->post('OrderProduct')[ 'count' ];
0893579c   Alexey Boroda   -Bug fixed
196
                  } else {
2ad65823   Alexey Boroda   -Added date range...
197
198
199
                      $count = 1;
                  }
                  $productVariant = ProductVariant::findOne($id);
eb190b1f   Alexey Boroda   -Order form add p...
200
                  
2ad65823   Alexey Boroda   -Added date range...
201
202
203
204
205
206
207
208
209
210
211
212
213
                  $model = OrderProduct::find()
                                       ->where(
                                           [
                                               'order_id' => $order_id,
                                           ]
                                       )
                                       ->andWhere(
                                           [
                                               'product_variant_id' => $id,
                                           ]
                                       )
                                       ->one();
                  
3bee3445   Alexey Boroda   -Order history ready
214
                  if (!empty($model)) {
2ad65823   Alexey Boroda   -Added date range...
215
                      $model->count += $count;
9e6e9086   Administrator   add similar products
216
                      $model->removed = false;
2ad65823   Alexey Boroda   -Added date range...
217
218
219
220
221
222
223
224
225
226
                  } else {
                      $model = new OrderProduct();
                      
                      $model->order_id = $order_id;
                      $model->product_variant_id = $productVariant->id;
                      $model->product_name = $productVariant->product->lang->title;
                      $model->name = $productVariant->lang->title;
                      $model->sku = $productVariant->sku;
                      $model->price = $productVariant->price;
                      $model->count = $count;
9e6e9086   Administrator   add similar products
227
                      $model->removed = false;
e0906f08   Alexey Boroda   -Fixing existing ...
228
                  }
2ad65823   Alexey Boroda   -Added date range...
229
230
231
                  \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
                  
                  if ($model->save()) {
28b51b30   Alexey Boroda   -Order module bug...
232
                      $model->order->totalRecount();
2ad65823   Alexey Boroda   -Added date range...
233
234
235
236
237
238
239
                      return [ 'status' => 'success' ];
                  } else {
                      return [ 'status' => 'fail' ];
                  }
                  
              } else {
                  throw new NotFoundHttpException();
e0906f08   Alexey Boroda   -Fixing existing ...
240
              }
e0906f08   Alexey Boroda   -Fixing existing ...
241
242
243
244
          }
          
          public function actionCreate()
          {
2ad65823   Alexey Boroda   -Added date range...
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
              if (\Yii::$app->request->post('hasEditable')) {
                  $orderProductId = \Yii::$app->request->post('editableKey');
                  $orderProduct = OrderProduct::findOne($orderProductId);
                  $out = Json::encode(
                      [
                          'output'  => '',
                          'message' => '',
                      ]
                  );
                  
                  $posted = current(\Yii::$app->request->post('OrderProduct'));
                  $post = [ 'OrderProduct' => $posted ];
                  
                  if ($orderProduct->load($post)) {
                      $orderProduct->save();
                      $output = '';
3bee3445   Alexey Boroda   -Order history ready
261
                      if (isset($posted[ 'count' ])) {
2ad65823   Alexey Boroda   -Added date range...
262
263
264
265
266
267
268
269
270
271
272
273
274
                          $output = Yii::$app->formatter->asDecimal($orderProduct->count, 0);
                      }
                      $out = Json::encode(
                          [
                              'output'  => $output,
                              'message' => '',
                          ]
                      );
                  }
                  
                  return $out;
              }
              
e0906f08   Alexey Boroda   -Fixing existing ...
275
              $model = new Order();
b0c7d586   Alexey Boroda   -Bykov fixes
276
277
              $model->phone = '+38(000)000-00-00';
              $model->name = \Yii::t('app', 'Новый заказ');
eb190b1f   Alexey Boroda   -Order form add p...
278
              $model->published = false;
b0c7d586   Alexey Boroda   -Bykov fixes
279
              $model->save();
e0906f08   Alexey Boroda   -Fixing existing ...
280
              
7c536875   Yarik   Sms send
281
282
283
284
285
286
              return $this->redirect(
                  [
                      'update',
                      'id' => $model->id,
                  ]
              );
4ee1bc37   Alexey Boroda   -Before dev
287
              
7520dc0e   Alexey Boroda   -Grid with input ...
288
289
              $dataProvider = new ActiveDataProvider(
                  [
0893579c   Alexey Boroda   -Bug fixed
290
291
                      'query' => $model->getProducts()
                                       ->joinWith('productVariant'),
7520dc0e   Alexey Boroda   -Grid with input ...
292
293
294
                  ]
              );
              
e0906f08   Alexey Boroda   -Fixing existing ...
295
              if ($model->load(Yii::$app->request->post()) && $model->save()) {
eb190b1f   Alexey Boroda   -Order form add p...
296
297
                  $model->published = true;
                  $model->save();
e0906f08   Alexey Boroda   -Fixing existing ...
298
299
300
301
302
                  return $this->redirect([ 'index' ]);
              } else {
                  return $this->render(
                      'create',
                      [
7520dc0e   Alexey Boroda   -Grid with input ...
303
304
                          'model'        => $model,
                          'dataProvider' => $dataProvider,
e0906f08   Alexey Boroda   -Fixing existing ...
305
306
307
308
                      ]
                  );
              }
          }
0893579c   Alexey Boroda   -Bug fixed
309
          
41f0c492   Yarik   Print and email
310
          public function actionPrint($order_id)
0893579c   Alexey Boroda   -Bug fixed
311
          {
41f0c492   Yarik   Print and email
312
313
314
315
316
317
318
319
320
321
322
              $order = $this->findModel($order_id);
              $dataProvider = new ArrayDataProvider(
                  [
                      'allModels'  => $order->products,
                      'pagination' => false,
                      'sort'       => false,
                  ]
              );
              return $this->renderPartial(
                  'print',
                  [
3bee3445   Alexey Boroda   -Order history ready
323
                      'order'        => $order,
41f0c492   Yarik   Print and email
324
325
326
                      'dataProvider' => $dataProvider,
                  ]
              );
0893579c   Alexey Boroda   -Bug fixed
327
              
54e2e678   Administrator   slider
328
          }
0893579c   Alexey Boroda   -Bug fixed
329
          
6f14188b   Alexey Boroda   -Product card fixed
330
331
          public function actionUpdate($id)
          {
2ad65823   Alexey Boroda   -Added date range...
332
              if (\Yii::$app->request->post('hasEditable')) {
7520dc0e   Alexey Boroda   -Grid with input ...
333
334
                  $orderProductId = \Yii::$app->request->post('editableKey');
                  $orderProduct = OrderProduct::findOne($orderProductId);
2ad65823   Alexey Boroda   -Added date range...
335
336
337
338
339
340
341
                  $out = Json::encode(
                      [
                          'output'  => '',
                          'message' => '',
                      ]
                  );
                  
7520dc0e   Alexey Boroda   -Grid with input ...
342
                  $posted = current(\Yii::$app->request->post('OrderProduct'));
2ad65823   Alexey Boroda   -Added date range...
343
                  $post = [ 'OrderProduct' => $posted ];
7520dc0e   Alexey Boroda   -Grid with input ...
344
                  
2ad65823   Alexey Boroda   -Added date range...
345
                  if ($orderProduct->load($post)) {
7520dc0e   Alexey Boroda   -Grid with input ...
346
                      $orderProduct->save();
793ad526   Alexey Boroda   -Brain fuck! with...
347
                      $orderProduct->order->totalRecount();
7520dc0e   Alexey Boroda   -Grid with input ...
348
                      $output = '';
3bee3445   Alexey Boroda   -Order history ready
349
                      if (isset($posted[ 'count' ])) {
7520dc0e   Alexey Boroda   -Grid with input ...
350
351
                          $output = Yii::$app->formatter->asDecimal($orderProduct->count, 0);
                      }
2ad65823   Alexey Boroda   -Added date range...
352
353
354
355
356
357
                      $out = Json::encode(
                          [
                              'output'  => $output,
                              'message' => '',
                          ]
                      );
7520dc0e   Alexey Boroda   -Grid with input ...
358
                  }
2ad65823   Alexey Boroda   -Added date range...
359
                  
7520dc0e   Alexey Boroda   -Grid with input ...
360
361
                  return $out;
              }
7520dc0e   Alexey Boroda   -Grid with input ...
362
              
7520dc0e   Alexey Boroda   -Grid with input ...
363
              $model = $this->findModel($id);
17569d93   Alexey Boroda   -Order product lo...
364
              
03c7b7bc   Yarik   Credit v2
365
366
367
368
369
370
371
372
373
374
375
              if ($model->payment == 10) {
                  $model->validators->append(
                      new NumberValidator(
                          [
                              'attributes' => 'credit_sum',
                              'max'        => $model->total - CreditHelper::MIN_CREDIT_SUM,
                              'min'        => $model->total - CreditHelper::MAX_CREDIT_SUM,
                          ]
                      )
                  );
              }
17569d93   Alexey Boroda   -Order product lo...
376
              
1f2fdc61   Alexey Boroda   -Product carousel...
377
378
379
380
              /**
               * @var User $user
               */
              $user = \Yii::$app->user->identity;
d57c8c00   Alexey Boroda   -Blocking in process
381
              if ($model->isBlocked() && $model->edit_id !== \Yii::$app->user->id) {
1f2fdc61   Alexey Boroda   -Product carousel...
382
                  if (!$user->isAdmin()) {
99de237f   Alexey Boroda   -Order block core...
383
384
                      throw new ForbiddenHttpException();
                  }
d57c8c00   Alexey Boroda   -Blocking in process
385
              }
d57c8c00   Alexey Boroda   -Blocking in process
386
              
7520dc0e   Alexey Boroda   -Grid with input ...
387
388
              $dataProvider = new ActiveDataProvider(
                  [
0893579c   Alexey Boroda   -Bug fixed
389
                      'query' => $model->getProducts()
42883b83   Alexey Boroda   -Order form beta ...
390
391
                                       ->joinWith('productVariant.product.brand')
                                       ->with('productVariant.variantStocks'),
52c27888   Alexey Boroda   -Order module tas...
392
                      'sort'  => [ 'defaultOrder' => [ 'id' => SORT_ASC ] ],
7520dc0e   Alexey Boroda   -Grid with input ...
393
394
395
                  ]
              );
              
3bee3445   Alexey Boroda   -Order history ready
396
              if (empty($model->manager_id)) {
d57c8c00   Alexey Boroda   -Blocking in process
397
398
                  $model->manager_id = \Yii::$app->user->id;
              }
d57c8c00   Alexey Boroda   -Blocking in process
399
              
793ad526   Alexey Boroda   -Brain fuck! with...
400
401
              $headers = \Yii::$app->response->headers;
              $headers->set('Access-Control-Allow-Origin', '*');
41f0c492   Yarik   Print and email
402
              
6f14188b   Alexey Boroda   -Product card fixed
403
              if ($model->load(Yii::$app->request->post()) && $model->save()) {
17569d93   Alexey Boroda   -Order product lo...
404
                  
52e22ec2   Administrator   add similar products
405
406
407
408
409
410
                  if ($model->published != true) {
                      $model->published = true;
                      $model->save();
                      /**
                       * @var SmsSender $sender
                       */
17569d93   Alexey Boroda   -Order product lo...
411
                      
52e22ec2   Administrator   add similar products
412
413
414
415
416
417
418
419
420
421
422
                      $sender = \Yii::$app->sender;
                      $sender->send(
                          $model->phone,
                          $this->renderPartial(
                              '@common/mail/smsorder',
                              [
                                  'order_id' => $model->id,
                              ]
                          )
                      );
                  }
17569d93   Alexey Boroda   -Order product lo...
423
                  
d57c8c00   Alexey Boroda   -Blocking in process
424
                  $this->unblockOrder($model->id);
b0c7d586   Alexey Boroda   -Bykov fixes
425
426
427
428
429
430
431
                  return $this->render(
                      'update',
                      [
                          'model'        => $model,
                          'dataProvider' => $dataProvider,
                      ]
                  );
6f14188b   Alexey Boroda   -Product card fixed
432
433
434
435
              } else {
                  return $this->render(
                      'update',
                      [
7520dc0e   Alexey Boroda   -Grid with input ...
436
437
                          'model'        => $model,
                          'dataProvider' => $dataProvider,
6f14188b   Alexey Boroda   -Product card fixed
438
439
440
441
442
                      ]
                  );
              }
          }
          
3bee3445   Alexey Boroda   -Order history ready
443
          public function actionFindProduct($q = NULL, $id = NULL)
e0906f08   Alexey Boroda   -Fixing existing ...
444
          {
6f14188b   Alexey Boroda   -Product card fixed
445
              \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
2ad65823   Alexey Boroda   -Added date range...
446
447
              $out = [
                  'results' => [
0893579c   Alexey Boroda   -Bug fixed
448
449
                      'id'  => '',
                      'sku' => '',
2ad65823   Alexey Boroda   -Added date range...
450
                  ],
6f14188b   Alexey Boroda   -Product card fixed
451
              ];
2ad65823   Alexey Boroda   -Added date range...
452
              if (!is_null($q)) {
db3040d3   Alexey Boroda   -Order module alm...
453
                  $result = ProductVariant::find()//                                        ->select(
d57c8c00   Alexey Boroda   -Blocking in process
454
455
456
457
458
459
                  //                                            [
                  //                                                'id',
                  //                                                'sku',
                  //                                                'product_lang.title AS name'
                  //                                            ]
                  //                                        )
0893579c   Alexey Boroda   -Bug fixed
460
                                          ->joinWith('product.lang')
2ad65823   Alexey Boroda   -Added date range...
461
462
463
464
465
466
467
468
469
470
471
472
473
                                          ->where(
                                              [
                                                  'like',
                                                  'sku',
                                                  $q,
                                              ]
                                          )
                                          ->limit(20)
                                          ->asArray()
                                          ->all();
                  
                  $out[ 'results' ] = $result;
              }
2ad65823   Alexey Boroda   -Added date range...
474
              return $out;
e0906f08   Alexey Boroda   -Fixing existing ...
475
476
          }
          
db3040d3   Alexey Boroda   -Order module alm...
477
478
479
480
481
482
483
484
485
          public function actionSendSms()
          {
              $phone = \Yii::$app->request->post('phone');
              $content = \Yii::$app->request->post('content');
              $sender = \Yii::$app->sender;
              $result = $sender->send($phone, $content);
              return $phone . $content . $result;
          }
          
42883b83   Alexey Boroda   -Order form beta ...
486
487
488
489
          public function actionDeleteProduct($id, $order_id)
          {
              $model = OrderProduct::findOne($id);
              $model->removed = true;
9e6e9086   Administrator   add similar products
490
              $model->count = 0;
42883b83   Alexey Boroda   -Order form beta ...
491
492
493
494
495
496
497
498
499
              $model->save();
              $order = Order::findOne($order_id);
              $order->totalRecount();
              \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
              return [
                  'status' => 'success',
                  'id'     => $id,
              ];
          }
2ad65823   Alexey Boroda   -Added date range...
500
          
e0906f08   Alexey Boroda   -Fixing existing ...
501
502
          protected function findModel($id)
          {
3bee3445   Alexey Boroda   -Order history ready
503
              if (( $model = Order::findOne($id) ) !== NULL) {
e0906f08   Alexey Boroda   -Fixing existing ...
504
505
506
507
508
                  return $model;
              } else {
                  throw new NotFoundHttpException('The requested page does not exist.');
              }
          }
e861ae92   Alexey Boroda   -Add column to pa...
509
          
793ad526   Alexey Boroda   -Brain fuck! with...
510
          public function actionExitOrder()
99de237f   Alexey Boroda   -Order block core...
511
          {
eb190b1f   Alexey Boroda   -Order form add p...
512
              try {
793ad526   Alexey Boroda   -Brain fuck! with...
513
                  $model = Order::findOne(\Yii::$app->request->post('id'));
eb190b1f   Alexey Boroda   -Order form add p...
514
515
516
              } catch (NotFoundHttpException $e) {
                  return $this->redirect('index');
              }
b0c7d586   Alexey Boroda   -Bykov fixes
517
              if ($model->edit_id == \Yii::$app->user->id) {
793ad526   Alexey Boroda   -Brain fuck! with...
518
                  $this->unblockOrder(\Yii::$app->request->post('id'));
b0c7d586   Alexey Boroda   -Bykov fixes
519
              }
eb190b1f   Alexey Boroda   -Order form add p...
520
              
eb190b1f   Alexey Boroda   -Order form add p...
521
522
523
              if (!$model->published) {
                  $model->deleteUnpublished();
              }
41f0c492   Yarik   Print and email
524
              //            return $this->redirect('index');
793ad526   Alexey Boroda   -Brain fuck! with...
525
          }
41f0c492   Yarik   Print and email
526
          
793ad526   Alexey Boroda   -Brain fuck! with...
527
528
529
530
531
532
533
534
535
536
          public function actionCloseOrder($id)
          {
              try {
                  $model = Order::findOne($id);
              } catch (NotFoundHttpException $e) {
                  return $this->redirect('index');
              }
              if ($model->edit_id == \Yii::$app->user->id) {
                  $this->unblockOrder($id);
              }
41f0c492   Yarik   Print and email
537
              
793ad526   Alexey Boroda   -Brain fuck! with...
538
539
540
              if (!$model->published) {
                  $model->deleteUnpublished();
              }
41f0c492   Yarik   Print and email
541
              return $this->redirect('index');
99de237f   Alexey Boroda   -Order block core...
542
          }
d57c8c00   Alexey Boroda   -Blocking in process
543
544
545
          
          public function actionBlockOrder()
          {
3bee3445   Alexey Boroda   -Order history ready
546
              if (!empty(\Yii::$app->request->post())) {
d57c8c00   Alexey Boroda   -Blocking in process
547
548
549
550
                  \Yii::$app->response->format = Response::FORMAT_JSON;
                  
                  $model = $this->findModel(\Yii::$app->request->post('id'));
                  
b0c7d586   Alexey Boroda   -Bykov fixes
551
552
553
                  $user = User::find()
                              ->where([ 'id' => $model->edit_id ])
                              ->one();
d57c8c00   Alexey Boroda   -Blocking in process
554
555
556
                  $model->edit_time = time();
                  $model->edit_id = \Yii::$app->user->id;
                  
99de237f   Alexey Boroda   -Order block core...
557
558
559
                  //$date = new \DateTime("NOW"/*date('D, d M Y H:i:s', $model->edit_time)*/, new \DateTimeZone('Europe/Kiev'));
                  $date = \Yii::$app->formatter->asDatetime($model->edit_time + 7200, 'php:G : i');
                  
d57c8c00   Alexey Boroda   -Blocking in process
560
                  if ($model->save()) {
99de237f   Alexey Boroda   -Order block core...
561
562
                      return [
                          'time' => $date,
3bee3445   Alexey Boroda   -Order history ready
563
                          'user' => !empty($user) ? $user->username : '',
99de237f   Alexey Boroda   -Order block core...
564
                      ];
d57c8c00   Alexey Boroda   -Blocking in process
565
                  } else {
e861ae92   Alexey Boroda   -Add column to pa...
566
567
568
569
                      return [
                          'success' => false,
                          'errors'  => $model->errors,
                      ];
d57c8c00   Alexey Boroda   -Blocking in process
570
571
572
573
574
575
576
577
578
579
580
581
                  }
              }
          }
          
          protected function unblockOrder($id)
          {
              $model = $this->findModel($id);
              
              $model->edit_time = 0;
              $model->edit_id = 0;
              $model->save();
          }
f36d238b   Alexey Boroda   -Order publish fi...
582
          
17569d93   Alexey Boroda   -Order product lo...
583
          public function actionPublishOrder($id, $phone)
7c536875   Yarik   Sms send
584
          {
f36d238b   Alexey Boroda   -Order publish fi...
585
              $model = Order::findOne($id);
00a6457b   Alexey Boroda   -Sms bug fixed
586
587
588
              if ($model->published == true) {
                  exit;
              }
f36d238b   Alexey Boroda   -Order publish fi...
589
590
              $model->published = true;
              $model->save();
17569d93   Alexey Boroda   -Order product lo...
591
              
3bee3445   Alexey Boroda   -Order history ready
592
593
594
595
              /**
               * Add order to history
               */
              $history = new OrderLabelHistory();
17569d93   Alexey Boroda   -Order product lo...
596
              
3bee3445   Alexey Boroda   -Order history ready
597
598
599
              $history->label_id = (integer) $model->label;
              $history->order_id = (integer) $model->id;
              $history->user_id = (integer) \Yii::$app->user->identity->id;
17569d93   Alexey Boroda   -Order product lo...
600
              
3bee3445   Alexey Boroda   -Order history ready
601
              $history->save();
17569d93   Alexey Boroda   -Order product lo...
602
              
7c536875   Yarik   Sms send
603
604
605
              /**
               * @var SmsSender $sender
               */
7c536875   Yarik   Sms send
606
              $sender = \Yii::$app->sender;
17569d93   Alexey Boroda   -Order product lo...
607
              if (!empty($phone)) {
52e22ec2   Administrator   add similar products
608
609
610
611
612
613
614
615
616
617
                  $sender->send(
                      $phone,
                      $this->renderPartial(
                          '@common/mail/smsorder',
                          [
                              'order_id' => $model->id,
                          ]
                      )
                  );
              }
17569d93   Alexey Boroda   -Order product lo...
618
              
f36d238b   Alexey Boroda   -Order publish fi...
619
          }
e0906f08   Alexey Boroda   -Fixing existing ...
620
      }