Blame view

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