Blame view

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