Blame view

controllers/OrderController.php 23 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
416
417
418
419
420
              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
421
              
7520dc0e   Alexey Boroda   -Grid with input ...
422
423
              $dataProvider = new ActiveDataProvider(
                  [
0893579c   Alexey Boroda   -Bug fixed
424
                      'query' => $model->getProducts()
42883b83   Alexey Boroda   -Order form beta ...
425
426
                                       ->joinWith('productVariant.product.brand')
                                       ->with('productVariant.variantStocks'),
52c27888   Alexey Boroda   -Order module tas...
427
                      'sort'  => [ 'defaultOrder' => [ 'id' => SORT_ASC ] ],
7520dc0e   Alexey Boroda   -Grid with input ...
428
429
430
                  ]
              );
              
3bee3445   Alexey Boroda   -Order history ready
431
              if (empty($model->manager_id)) {
d57c8c00   Alexey Boroda   -Blocking in process
432
433
                  $model->manager_id = \Yii::$app->user->id;
              }
d57c8c00   Alexey Boroda   -Blocking in process
434
              
793ad526   Alexey Boroda   -Brain fuck! with...
435
436
              $headers = \Yii::$app->response->headers;
              $headers->set('Access-Control-Allow-Origin', '*');
41f0c492   Yarik   Print and email
437
              
6f14188b   Alexey Boroda   -Product card fixed
438
              if ($model->load(Yii::$app->request->post()) && $model->save()) {
17569d93   Alexey Boroda   -Order product lo...
439
                  
52e22ec2   Administrator   add similar products
440
441
442
443
444
445
                  if ($model->published != true) {
                      $model->published = true;
                      $model->save();
                      /**
                       * @var SmsSender $sender
                       */
17569d93   Alexey Boroda   -Order product lo...
446
                      
52e22ec2   Administrator   add similar products
447
448
449
450
451
452
453
454
455
456
457
                      $sender = \Yii::$app->sender;
                      $sender->send(
                          $model->phone,
                          $this->renderPartial(
                              '@common/mail/smsorder',
                              [
                                  'order_id' => $model->id,
                              ]
                          )
                      );
                  }
17569d93   Alexey Boroda   -Order product lo...
458
                  
d57c8c00   Alexey Boroda   -Blocking in process
459
                  $this->unblockOrder($model->id);
b0c7d586   Alexey Boroda   -Bykov fixes
460
461
462
463
464
                  return $this->render(
                      'update',
                      [
                          'model'        => $model,
                          'dataProvider' => $dataProvider,
287e356d   Alexey Boroda   -Permissions read...
465
                          'permissions' => $permissions,
b0c7d586   Alexey Boroda   -Bykov fixes
466
467
                      ]
                  );
6f14188b   Alexey Boroda   -Product card fixed
468
469
470
471
              } else {
                  return $this->render(
                      'update',
                      [
7520dc0e   Alexey Boroda   -Grid with input ...
472
473
                          'model'        => $model,
                          'dataProvider' => $dataProvider,
287e356d   Alexey Boroda   -Permissions read...
474
                          'permissions' => $permissions,
6f14188b   Alexey Boroda   -Product card fixed
475
476
477
478
479
                      ]
                  );
              }
          }
          
3bee3445   Alexey Boroda   -Order history ready
480
          public function actionFindProduct($q = NULL, $id = NULL)
e0906f08   Alexey Boroda   -Fixing existing ...
481
          {
e2af367e   Alexey Boroda   -Order product lo...
482
              \Yii::$app->response->format = Response::FORMAT_JSON;
2ad65823   Alexey Boroda   -Added date range...
483
484
              $out = [
                  'results' => [
0893579c   Alexey Boroda   -Bug fixed
485
486
                      'id'  => '',
                      'sku' => '',
2ad65823   Alexey Boroda   -Added date range...
487
                  ],
6f14188b   Alexey Boroda   -Product card fixed
488
              ];
2ad65823   Alexey Boroda   -Added date range...
489
              if (!is_null($q)) {
e2af367e   Alexey Boroda   -Order product lo...
490
                  $result = ProductVariant::find()
0893579c   Alexey Boroda   -Bug fixed
491
                                          ->joinWith('product.lang')
2ad65823   Alexey Boroda   -Added date range...
492
493
494
495
496
497
498
499
500
501
502
503
504
                                          ->where(
                                              [
                                                  'like',
                                                  'sku',
                                                  $q,
                                              ]
                                          )
                                          ->limit(20)
                                          ->asArray()
                                          ->all();
                  
                  $out[ 'results' ] = $result;
              }
2ad65823   Alexey Boroda   -Added date range...
505
              return $out;
e0906f08   Alexey Boroda   -Fixing existing ...
506
507
          }
          
db3040d3   Alexey Boroda   -Order module alm...
508
509
510
511
          public function actionSendSms()
          {
              $phone = \Yii::$app->request->post('phone');
              $content = \Yii::$app->request->post('content');
3f7ce0d0   Alexey Boroda   -Feedback extende...
512
513
514
515
516
517
518
519
520
      
              $smsLog = new SmsLog();
      
              $smsLog->type = 1;
              $smsLog->text = $content;
              $smsLog->number = $phone;
      
              $smsLog->save();
              
db3040d3   Alexey Boroda   -Order module alm...
521
522
523
524
525
              $sender = \Yii::$app->sender;
              $result = $sender->send($phone, $content);
              return $phone . $content . $result;
          }
          
42883b83   Alexey Boroda   -Order form beta ...
526
527
528
529
          public function actionDeleteProduct($id, $order_id)
          {
              $model = OrderProduct::findOne($id);
              $model->removed = true;
9e6e9086   Administrator   add similar products
530
              $model->count = 0;
42883b83   Alexey Boroda   -Order form beta ...
531
532
533
              $model->save();
              $order = Order::findOne($order_id);
              $order->totalRecount();
e2af367e   Alexey Boroda   -Order product lo...
534
              \Yii::$app->response->format = Response::FORMAT_JSON;
42883b83   Alexey Boroda   -Order form beta ...
535
536
537
538
539
              return [
                  'status' => 'success',
                  'id'     => $id,
              ];
          }
2ad65823   Alexey Boroda   -Added date range...
540
          
e0906f08   Alexey Boroda   -Fixing existing ...
541
542
          protected function findModel($id)
          {
3bee3445   Alexey Boroda   -Order history ready
543
              if (( $model = Order::findOne($id) ) !== NULL) {
e0906f08   Alexey Boroda   -Fixing existing ...
544
545
546
547
548
                  return $model;
              } else {
                  throw new NotFoundHttpException('The requested page does not exist.');
              }
          }
e861ae92   Alexey Boroda   -Add column to pa...
549
          
793ad526   Alexey Boroda   -Brain fuck! with...
550
          public function actionExitOrder()
99de237f   Alexey Boroda   -Order block core...
551
          {
eb190b1f   Alexey Boroda   -Order form add p...
552
              try {
793ad526   Alexey Boroda   -Brain fuck! with...
553
                  $model = Order::findOne(\Yii::$app->request->post('id'));
eb190b1f   Alexey Boroda   -Order form add p...
554
555
556
              } catch (NotFoundHttpException $e) {
                  return $this->redirect('index');
              }
b0c7d586   Alexey Boroda   -Bykov fixes
557
              if ($model->edit_id == \Yii::$app->user->id) {
793ad526   Alexey Boroda   -Brain fuck! with...
558
                  $this->unblockOrder(\Yii::$app->request->post('id'));
b0c7d586   Alexey Boroda   -Bykov fixes
559
              }
eb190b1f   Alexey Boroda   -Order form add p...
560
              
eb190b1f   Alexey Boroda   -Order form add p...
561
562
563
              if (!$model->published) {
                  $model->deleteUnpublished();
              }
793ad526   Alexey Boroda   -Brain fuck! with...
564
          }
41f0c492   Yarik   Print and email
565
          
793ad526   Alexey Boroda   -Brain fuck! with...
566
567
568
569
570
571
572
573
574
575
          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
576
              
793ad526   Alexey Boroda   -Brain fuck! with...
577
578
579
              if (!$model->published) {
                  $model->deleteUnpublished();
              }
41f0c492   Yarik   Print and email
580
              return $this->redirect('index');
99de237f   Alexey Boroda   -Order block core...
581
          }
d57c8c00   Alexey Boroda   -Blocking in process
582
583
584
          
          public function actionBlockOrder()
          {
3bee3445   Alexey Boroda   -Order history ready
585
              if (!empty(\Yii::$app->request->post())) {
d57c8c00   Alexey Boroda   -Blocking in process
586
587
588
589
                  \Yii::$app->response->format = Response::FORMAT_JSON;
                  
                  $model = $this->findModel(\Yii::$app->request->post('id'));
                  
b0c7d586   Alexey Boroda   -Bykov fixes
590
591
592
                  $user = User::find()
                              ->where([ 'id' => $model->edit_id ])
                              ->one();
d57c8c00   Alexey Boroda   -Blocking in process
593
594
595
                  $model->edit_time = time();
                  $model->edit_id = \Yii::$app->user->id;
                  
99de237f   Alexey Boroda   -Order block core...
596
597
598
                  //$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
599
                  if ($model->save(false, ['edit_time', 'edit_id'])) {
99de237f   Alexey Boroda   -Order block core...
600
601
                      return [
                          'time' => $date,
3bee3445   Alexey Boroda   -Order history ready
602
                          'user' => !empty($user) ? $user->username : '',
99de237f   Alexey Boroda   -Order block core...
603
                      ];
d57c8c00   Alexey Boroda   -Blocking in process
604
                  } else {
e861ae92   Alexey Boroda   -Add column to pa...
605
606
607
608
                      return [
                          'success' => false,
                          'errors'  => $model->errors,
                      ];
d57c8c00   Alexey Boroda   -Blocking in process
609
610
611
612
613
614
615
616
617
618
                  }
              }
          }
          
          protected function unblockOrder($id)
          {
              $model = $this->findModel($id);
              
              $model->edit_time = 0;
              $model->edit_id = 0;
394807ff   Alexey Boroda   -Exit order fix
619
              $model->save(false, ['edit_time', 'edit_id']);
d57c8c00   Alexey Boroda   -Blocking in process
620
          }
f36d238b   Alexey Boroda   -Order publish fi...
621
          
17569d93   Alexey Boroda   -Order product lo...
622
          public function actionPublishOrder($id, $phone)
7c536875   Yarik   Sms send
623
          {
f36d238b   Alexey Boroda   -Order publish fi...
624
              $model = Order::findOne($id);
00a6457b   Alexey Boroda   -Sms bug fixed
625
626
627
              if ($model->published == true) {
                  exit;
              }
f36d238b   Alexey Boroda   -Order publish fi...
628
629
              $model->published = true;
              $model->save();
17569d93   Alexey Boroda   -Order product lo...
630
              
3bee3445   Alexey Boroda   -Order history ready
631
632
633
634
              /**
               * Add order to history
               */
              $history = new OrderLabelHistory();
17569d93   Alexey Boroda   -Order product lo...
635
              
3bee3445   Alexey Boroda   -Order history ready
636
637
638
              $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...
639
              
3bee3445   Alexey Boroda   -Order history ready
640
              $history->save();
17569d93   Alexey Boroda   -Order product lo...
641
              
7c536875   Yarik   Sms send
642
643
644
              /**
               * @var SmsSender $sender
               */
7c536875   Yarik   Sms send
645
              $sender = \Yii::$app->sender;
17569d93   Alexey Boroda   -Order product lo...
646
              if (!empty($phone)) {
52e22ec2   Administrator   add similar products
647
648
649
650
651
652
653
654
655
656
                  $sender->send(
                      $phone,
                      $this->renderPartial(
                          '@common/mail/smsorder',
                          [
                              'order_id' => $model->id,
                          ]
                      )
                  );
              }
17569d93   Alexey Boroda   -Order product lo...
657
              
f36d238b   Alexey Boroda   -Order publish fi...
658
          }
e0906f08   Alexey Boroda   -Fixing existing ...
659
      }