Blame view

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