Blame view

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