Blame view

controllers/OrderController.php 20.8 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);
b1cc502f   Administrator   Merge branch 'sta...
112
  
d3406983   Alexey Boroda   -Order history ha...
113
114
115
116
117
118
              $historyData = new ActiveDataProvider(
                  [
                      'query' => $model->getLabelsHistory()
                                       ->with('order', 'label', 'user'),
                  ]
              );
b1cc502f   Administrator   Merge branch 'sta...
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);
b1cc502f   Administrator   Merge branch 'sta...
145
  
d3406983   Alexey Boroda   -Order history ha...
146
147
148
149
150
              $logData = new ActiveDataProvider(
                  [
                      'query' => $model->getLogs(),
                  ]
              );
b1cc502f   Administrator   Merge branch 'sta...
151
  
d3406983   Alexey Boroda   -Order history ha...
152
153
154
155
156
157
158
159
              return $this->render(
                  'log',
                  [
                      'model'   => $model,
                      'logData' => $logData,
                  ]
              );
          }
b1cc502f   Administrator   Merge branch 'sta...
160
  
2ad65823   Alexey Boroda   -Added date range...
161
          public function actionDelete($id)
e0906f08   Alexey Boroda   -Fixing existing ...
162
          {
3e703aac   Alexey Boroda   -Order form fixes
163
164
165
166
167
168
169
170
              if (\Yii::$app->user->identity->isAdmin()) {
                  $this->findModel($id)
                       ->delete();
              }
              
              return $this->redirect([ 'index' ]);
          }
          
42883b83   Alexey Boroda   -Order form beta ...
171
172
173
174
175
176
177
178
179
180
          //        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 ...
181
182
183
          
          public function actionAdd()
          {
3bee3445   Alexey Boroda   -Order history ready
184
              if (!empty(\Yii::$app->request->post())) {
2ad65823   Alexey Boroda   -Added date range...
185
186
                  $id = \Yii::$app->request->post('OrderProduct')[ 'id' ];
                  $order_id = \Yii::$app->request->post('OrderProduct')[ 'order_id' ];
3bee3445   Alexey Boroda   -Order history ready
187
                  if (!empty(\Yii::$app->request->post('OrderProduct')[ 'count' ])) {
2ad65823   Alexey Boroda   -Added date range...
188
                      $count = \Yii::$app->request->post('OrderProduct')[ 'count' ];
0893579c   Alexey Boroda   -Bug fixed
189
                  } else {
2ad65823   Alexey Boroda   -Added date range...
190
191
192
                      $count = 1;
                  }
                  $productVariant = ProductVariant::findOne($id);
eb190b1f   Alexey Boroda   -Order form add p...
193
                  
2ad65823   Alexey Boroda   -Added date range...
194
195
196
197
198
199
200
201
202
203
204
205
206
                  $model = OrderProduct::find()
                                       ->where(
                                           [
                                               'order_id' => $order_id,
                                           ]
                                       )
                                       ->andWhere(
                                           [
                                               'product_variant_id' => $id,
                                           ]
                                       )
                                       ->one();
                  
3bee3445   Alexey Boroda   -Order history ready
207
                  if (!empty($model)) {
2ad65823   Alexey Boroda   -Added date range...
208
                      $model->count += $count;
9e6e9086   Administrator   add similar products
209
                      $model->removed = false;
2ad65823   Alexey Boroda   -Added date range...
210
211
212
213
214
215
216
217
218
219
                  } 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
220
                      $model->removed = false;
e0906f08   Alexey Boroda   -Fixing existing ...
221
                  }
2ad65823   Alexey Boroda   -Added date range...
222
223
224
                  \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
                  
                  if ($model->save()) {
28b51b30   Alexey Boroda   -Order module bug...
225
                      $model->order->totalRecount();
2ad65823   Alexey Boroda   -Added date range...
226
227
228
229
230
231
232
                      return [ 'status' => 'success' ];
                  } else {
                      return [ 'status' => 'fail' ];
                  }
                  
              } else {
                  throw new NotFoundHttpException();
e0906f08   Alexey Boroda   -Fixing existing ...
233
              }
e0906f08   Alexey Boroda   -Fixing existing ...
234
235
236
237
          }
          
          public function actionCreate()
          {
2ad65823   Alexey Boroda   -Added date range...
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
              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
254
                      if (isset($posted[ 'count' ])) {
2ad65823   Alexey Boroda   -Added date range...
255
256
257
258
259
260
261
262
263
264
265
266
267
                          $output = Yii::$app->formatter->asDecimal($orderProduct->count, 0);
                      }
                      $out = Json::encode(
                          [
                              'output'  => $output,
                              'message' => '',
                          ]
                      );
                  }
                  
                  return $out;
              }
              
e0906f08   Alexey Boroda   -Fixing existing ...
268
              $model = new Order();
b0c7d586   Alexey Boroda   -Bykov fixes
269
270
              $model->phone = '+38(000)000-00-00';
              $model->name = \Yii::t('app', 'Новый заказ');
eb190b1f   Alexey Boroda   -Order form add p...
271
              $model->published = false;
b0c7d586   Alexey Boroda   -Bykov fixes
272
              $model->save();
e0906f08   Alexey Boroda   -Fixing existing ...
273
              
7c536875   Yarik   Sms send
274
275
276
277
278
279
              return $this->redirect(
                  [
                      'update',
                      'id' => $model->id,
                  ]
              );
4ee1bc37   Alexey Boroda   -Before dev
280
              
7520dc0e   Alexey Boroda   -Grid with input ...
281
282
              $dataProvider = new ActiveDataProvider(
                  [
0893579c   Alexey Boroda   -Bug fixed
283
284
                      'query' => $model->getProducts()
                                       ->joinWith('productVariant'),
7520dc0e   Alexey Boroda   -Grid with input ...
285
286
287
                  ]
              );
              
e0906f08   Alexey Boroda   -Fixing existing ...
288
              if ($model->load(Yii::$app->request->post()) && $model->save()) {
eb190b1f   Alexey Boroda   -Order form add p...
289
290
                  $model->published = true;
                  $model->save();
e0906f08   Alexey Boroda   -Fixing existing ...
291
292
293
294
295
                  return $this->redirect([ 'index' ]);
              } else {
                  return $this->render(
                      'create',
                      [
7520dc0e   Alexey Boroda   -Grid with input ...
296
297
                          'model'        => $model,
                          'dataProvider' => $dataProvider,
e0906f08   Alexey Boroda   -Fixing existing ...
298
299
300
301
                      ]
                  );
              }
          }
0893579c   Alexey Boroda   -Bug fixed
302
          
41f0c492   Yarik   Print and email
303
          public function actionPrint($order_id)
0893579c   Alexey Boroda   -Bug fixed
304
          {
41f0c492   Yarik   Print and email
305
306
307
308
309
310
311
312
313
314
315
              $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
316
                      'order'        => $order,
41f0c492   Yarik   Print and email
317
318
319
                      'dataProvider' => $dataProvider,
                  ]
              );
0893579c   Alexey Boroda   -Bug fixed
320
              
54e2e678   Administrator   slider
321
          }
0893579c   Alexey Boroda   -Bug fixed
322
          
6f14188b   Alexey Boroda   -Product card fixed
323
324
          public function actionUpdate($id)
          {
2ad65823   Alexey Boroda   -Added date range...
325
              if (\Yii::$app->request->post('hasEditable')) {
7520dc0e   Alexey Boroda   -Grid with input ...
326
327
                  $orderProductId = \Yii::$app->request->post('editableKey');
                  $orderProduct = OrderProduct::findOne($orderProductId);
2ad65823   Alexey Boroda   -Added date range...
328
329
330
331
332
333
334
                  $out = Json::encode(
                      [
                          'output'  => '',
                          'message' => '',
                      ]
                  );
                  
7520dc0e   Alexey Boroda   -Grid with input ...
335
                  $posted = current(\Yii::$app->request->post('OrderProduct'));
2ad65823   Alexey Boroda   -Added date range...
336
                  $post = [ 'OrderProduct' => $posted ];
7520dc0e   Alexey Boroda   -Grid with input ...
337
                  
2ad65823   Alexey Boroda   -Added date range...
338
                  if ($orderProduct->load($post)) {
7520dc0e   Alexey Boroda   -Grid with input ...
339
                      $orderProduct->save();
793ad526   Alexey Boroda   -Brain fuck! with...
340
                      $orderProduct->order->totalRecount();
7520dc0e   Alexey Boroda   -Grid with input ...
341
                      $output = '';
3bee3445   Alexey Boroda   -Order history ready
342
                      if (isset($posted[ 'count' ])) {
7520dc0e   Alexey Boroda   -Grid with input ...
343
344
                          $output = Yii::$app->formatter->asDecimal($orderProduct->count, 0);
                      }
2ad65823   Alexey Boroda   -Added date range...
345
346
347
348
349
350
                      $out = Json::encode(
                          [
                              'output'  => $output,
                              'message' => '',
                          ]
                      );
7520dc0e   Alexey Boroda   -Grid with input ...
351
                  }
2ad65823   Alexey Boroda   -Added date range...
352
                  
7520dc0e   Alexey Boroda   -Grid with input ...
353
354
                  return $out;
              }
7520dc0e   Alexey Boroda   -Grid with input ...
355
              
7520dc0e   Alexey Boroda   -Grid with input ...
356
              $model = $this->findModel($id);
52e22ec2   Administrator   add similar products
357
  
03c7b7bc   Yarik   Credit v2
358
359
360
361
362
363
364
365
366
367
368
              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,
                          ]
                      )
                  );
              }
b1cc502f   Administrator   Merge branch 'sta...
369
  
1f2fdc61   Alexey Boroda   -Product carousel...
370
371
372
373
              /**
               * @var User $user
               */
              $user = \Yii::$app->user->identity;
d57c8c00   Alexey Boroda   -Blocking in process
374
              if ($model->isBlocked() && $model->edit_id !== \Yii::$app->user->id) {
1f2fdc61   Alexey Boroda   -Product carousel...
375
                  if (!$user->isAdmin()) {
99de237f   Alexey Boroda   -Order block core...
376
377
                      throw new ForbiddenHttpException();
                  }
d57c8c00   Alexey Boroda   -Blocking in process
378
              }
d57c8c00   Alexey Boroda   -Blocking in process
379
              
7520dc0e   Alexey Boroda   -Grid with input ...
380
381
              $dataProvider = new ActiveDataProvider(
                  [
0893579c   Alexey Boroda   -Bug fixed
382
                      'query' => $model->getProducts()
42883b83   Alexey Boroda   -Order form beta ...
383
384
                                       ->joinWith('productVariant.product.brand')
                                       ->with('productVariant.variantStocks'),
52c27888   Alexey Boroda   -Order module tas...
385
                      'sort'  => [ 'defaultOrder' => [ 'id' => SORT_ASC ] ],
7520dc0e   Alexey Boroda   -Grid with input ...
386
387
388
                  ]
              );
              
3bee3445   Alexey Boroda   -Order history ready
389
              if (empty($model->manager_id)) {
d57c8c00   Alexey Boroda   -Blocking in process
390
391
                  $model->manager_id = \Yii::$app->user->id;
              }
d57c8c00   Alexey Boroda   -Blocking in process
392
              
793ad526   Alexey Boroda   -Brain fuck! with...
393
394
              $headers = \Yii::$app->response->headers;
              $headers->set('Access-Control-Allow-Origin', '*');
41f0c492   Yarik   Print and email
395
              
6f14188b   Alexey Boroda   -Product card fixed
396
              if ($model->load(Yii::$app->request->post()) && $model->save()) {
52e22ec2   Administrator   add similar products
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
  
                  if ($model->published != true) {
                      $model->published = true;
                      $model->save();
                      /**
                       * @var SmsSender $sender
                       */
  
                      $sender = \Yii::$app->sender;
                      $sender->send(
                          $model->phone,
                          $this->renderPartial(
                              '@common/mail/smsorder',
                              [
                                  'order_id' => $model->id,
                              ]
                          )
                      );
                  }
  
  
d57c8c00   Alexey Boroda   -Blocking in process
418
                  $this->unblockOrder($model->id);
b0c7d586   Alexey Boroda   -Bykov fixes
419
420
421
422
423
424
425
                  return $this->render(
                      'update',
                      [
                          'model'        => $model,
                          'dataProvider' => $dataProvider,
                      ]
                  );
6f14188b   Alexey Boroda   -Product card fixed
426
427
428
429
              } else {
                  return $this->render(
                      'update',
                      [
7520dc0e   Alexey Boroda   -Grid with input ...
430
431
                          'model'        => $model,
                          'dataProvider' => $dataProvider,
6f14188b   Alexey Boroda   -Product card fixed
432
433
434
435
436
                      ]
                  );
              }
          }
          
3bee3445   Alexey Boroda   -Order history ready
437
          public function actionFindProduct($q = NULL, $id = NULL)
e0906f08   Alexey Boroda   -Fixing existing ...
438
          {
6f14188b   Alexey Boroda   -Product card fixed
439
              \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
2ad65823   Alexey Boroda   -Added date range...
440
441
              $out = [
                  'results' => [
0893579c   Alexey Boroda   -Bug fixed
442
443
                      'id'  => '',
                      'sku' => '',
2ad65823   Alexey Boroda   -Added date range...
444
                  ],
6f14188b   Alexey Boroda   -Product card fixed
445
              ];
2ad65823   Alexey Boroda   -Added date range...
446
              if (!is_null($q)) {
db3040d3   Alexey Boroda   -Order module alm...
447
                  $result = ProductVariant::find()//                                        ->select(
d57c8c00   Alexey Boroda   -Blocking in process
448
449
450
451
452
453
                  //                                            [
                  //                                                'id',
                  //                                                'sku',
                  //                                                'product_lang.title AS name'
                  //                                            ]
                  //                                        )
0893579c   Alexey Boroda   -Bug fixed
454
                                          ->joinWith('product.lang')
2ad65823   Alexey Boroda   -Added date range...
455
456
457
458
459
460
461
462
463
464
465
466
467
                                          ->where(
                                              [
                                                  'like',
                                                  'sku',
                                                  $q,
                                              ]
                                          )
                                          ->limit(20)
                                          ->asArray()
                                          ->all();
                  
                  $out[ 'results' ] = $result;
              }
2ad65823   Alexey Boroda   -Added date range...
468
              return $out;
e0906f08   Alexey Boroda   -Fixing existing ...
469
470
          }
          
db3040d3   Alexey Boroda   -Order module alm...
471
472
473
474
475
476
477
478
479
          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 ...
480
481
482
483
          public function actionDeleteProduct($id, $order_id)
          {
              $model = OrderProduct::findOne($id);
              $model->removed = true;
9e6e9086   Administrator   add similar products
484
              $model->count = 0;
42883b83   Alexey Boroda   -Order form beta ...
485
486
487
488
489
490
491
492
493
              $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...
494
          
e0906f08   Alexey Boroda   -Fixing existing ...
495
496
          protected function findModel($id)
          {
3bee3445   Alexey Boroda   -Order history ready
497
              if (( $model = Order::findOne($id) ) !== NULL) {
e0906f08   Alexey Boroda   -Fixing existing ...
498
499
500
501
502
                  return $model;
              } else {
                  throw new NotFoundHttpException('The requested page does not exist.');
              }
          }
e861ae92   Alexey Boroda   -Add column to pa...
503
          
793ad526   Alexey Boroda   -Brain fuck! with...
504
          public function actionExitOrder()
99de237f   Alexey Boroda   -Order block core...
505
          {
eb190b1f   Alexey Boroda   -Order form add p...
506
              try {
793ad526   Alexey Boroda   -Brain fuck! with...
507
                  $model = Order::findOne(\Yii::$app->request->post('id'));
eb190b1f   Alexey Boroda   -Order form add p...
508
509
510
              } catch (NotFoundHttpException $e) {
                  return $this->redirect('index');
              }
b0c7d586   Alexey Boroda   -Bykov fixes
511
              if ($model->edit_id == \Yii::$app->user->id) {
793ad526   Alexey Boroda   -Brain fuck! with...
512
                  $this->unblockOrder(\Yii::$app->request->post('id'));
b0c7d586   Alexey Boroda   -Bykov fixes
513
              }
eb190b1f   Alexey Boroda   -Order form add p...
514
              
eb190b1f   Alexey Boroda   -Order form add p...
515
516
517
              if (!$model->published) {
                  $model->deleteUnpublished();
              }
41f0c492   Yarik   Print and email
518
              //            return $this->redirect('index');
793ad526   Alexey Boroda   -Brain fuck! with...
519
          }
41f0c492   Yarik   Print and email
520
          
793ad526   Alexey Boroda   -Brain fuck! with...
521
522
523
524
525
526
527
528
529
530
          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
531
              
793ad526   Alexey Boroda   -Brain fuck! with...
532
533
534
              if (!$model->published) {
                  $model->deleteUnpublished();
              }
41f0c492   Yarik   Print and email
535
              return $this->redirect('index');
99de237f   Alexey Boroda   -Order block core...
536
          }
d57c8c00   Alexey Boroda   -Blocking in process
537
538
539
          
          public function actionBlockOrder()
          {
3bee3445   Alexey Boroda   -Order history ready
540
              if (!empty(\Yii::$app->request->post())) {
d57c8c00   Alexey Boroda   -Blocking in process
541
542
543
544
                  \Yii::$app->response->format = Response::FORMAT_JSON;
                  
                  $model = $this->findModel(\Yii::$app->request->post('id'));
                  
b0c7d586   Alexey Boroda   -Bykov fixes
545
546
547
                  $user = User::find()
                              ->where([ 'id' => $model->edit_id ])
                              ->one();
d57c8c00   Alexey Boroda   -Blocking in process
548
549
550
                  $model->edit_time = time();
                  $model->edit_id = \Yii::$app->user->id;
                  
99de237f   Alexey Boroda   -Order block core...
551
552
553
                  //$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
554
                  if ($model->save()) {
99de237f   Alexey Boroda   -Order block core...
555
556
                      return [
                          'time' => $date,
3bee3445   Alexey Boroda   -Order history ready
557
                          'user' => !empty($user) ? $user->username : '',
99de237f   Alexey Boroda   -Order block core...
558
                      ];
d57c8c00   Alexey Boroda   -Blocking in process
559
                  } else {
e861ae92   Alexey Boroda   -Add column to pa...
560
561
562
563
                      return [
                          'success' => false,
                          'errors'  => $model->errors,
                      ];
d57c8c00   Alexey Boroda   -Blocking in process
564
565
566
567
568
569
570
571
572
573
574
575
                  }
              }
          }
          
          protected function unblockOrder($id)
          {
              $model = $this->findModel($id);
              
              $model->edit_time = 0;
              $model->edit_id = 0;
              $model->save();
          }
f36d238b   Alexey Boroda   -Order publish fi...
576
          
52e22ec2   Administrator   add similar products
577
          public function actionPublishOrder($id,$phone)
7c536875   Yarik   Sms send
578
          {
f36d238b   Alexey Boroda   -Order publish fi...
579
              $model = Order::findOne($id);
00a6457b   Alexey Boroda   -Sms bug fixed
580
581
582
              if ($model->published == true) {
                  exit;
              }
f36d238b   Alexey Boroda   -Order publish fi...
583
584
              $model->published = true;
              $model->save();
b1cc502f   Administrator   Merge branch 'sta...
585
  
3bee3445   Alexey Boroda   -Order history ready
586
587
588
589
              /**
               * Add order to history
               */
              $history = new OrderLabelHistory();
b1cc502f   Administrator   Merge branch 'sta...
590
  
3bee3445   Alexey Boroda   -Order history ready
591
592
593
              $history->label_id = (integer) $model->label;
              $history->order_id = (integer) $model->id;
              $history->user_id = (integer) \Yii::$app->user->identity->id;
b1cc502f   Administrator   Merge branch 'sta...
594
  
3bee3445   Alexey Boroda   -Order history ready
595
              $history->save();
b1cc502f   Administrator   Merge branch 'sta...
596
  
7c536875   Yarik   Sms send
597
598
599
              /**
               * @var SmsSender $sender
               */
7c536875   Yarik   Sms send
600
              $sender = \Yii::$app->sender;
52e22ec2   Administrator   add similar products
601
602
603
604
605
606
607
608
609
610
611
612
              if(!empty($phone)){
                  $sender->send(
                      $phone,
                      $this->renderPartial(
                          '@common/mail/smsorder',
                          [
                              'order_id' => $model->id,
                          ]
                      )
                  );
              }
  
f36d238b   Alexey Boroda   -Order publish fi...
613
          }
e0906f08   Alexey Boroda   -Fixing existing ...
614
      }