Blame view

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