Blame view

frontend/controllers/BasketController.php 3.06 KB
fe7b6960   Yarik   Basket
1
  <?php
8ec69373   Yarik   Orders.
2
3
4
5
6
7
8
9
10
11
12
      
      namespace frontend\controllers;
      
      use common\models\Basket;
      use yii\web\Response;
      
      class BasketController extends \yii\web\Controller
      {
          
          public $enableCsrfValidation = false;
          
076b9c96   Administrator   big commti
13
          public function actionMain()
8ec69373   Yarik   Orders.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
          {
              $response = \Yii::$app->response;
              $response->format = Response::FORMAT_JSON;
              /**
               * @var Basket $basket
               */
              $basket = \Yii::$app->basket;
              $result = [
                  'basket' => $basket->getData(),
                  'modal'  => $this->getModal($basket),
                  'cart'   => $this->getCart($basket),
              ];
              return $result;
          }
          
          public function actionAdd(int $product_variant_id, int $count)
          {
              $response = \Yii::$app->response;
              $response->format = Response::FORMAT_JSON;
              /**
               * @var Basket $basket
               */
              $basket = \Yii::$app->basket;
              $basket->add($product_variant_id, $count);
              $result = [
                  'basket' => $basket->getData(),
                  'modal'  => $this->getModal($basket),
                  'cart'   => $this->getCart($basket),
              ];
              return $result;
          }
          
          public function actionSet(int $product_variant_id, int $count)
          {
              $response = \Yii::$app->response;
              $response->format = Response::FORMAT_JSON;
              /**
               * @var Basket $basket
               */
              $basket = \Yii::$app->basket;
              $basket->set($product_variant_id, $count);
              $result = [
                  'basket' => $basket->getData(),
                  'modal'  => $this->getModal($basket),
                  'cart'   => $this->getCart($basket),
              ];
              return $result;
          }
          
          public function actionTest()
          {
              /**
               * @var Basket $basket
               */
              $basket = \Yii::$app->basket;
              $modal = $this->getModal($basket);
              return $modal;
          }
          
fe7b6960   Yarik   Basket
73
          /**
8ec69373   Yarik   Orders.
74
75
           * @var $basket \common\models\Basket
           * @return string modal_items
fe7b6960   Yarik   Basket
76
           */
8ec69373   Yarik   Orders.
77
78
79
80
81
82
83
84
85
86
87
88
89
90
          public function getModal($basket): string
          {
              $output = '';
              $data = $basket->getData();
              $models = $basket->findModels(array_keys($data));
              if(!empty( $models )) {
                  $output = $this->renderAjax('modal_items', [
                      'models' => $models,
                      'basket' => $basket,
                  ]);
              }
              return $output;
          }
          
fe7b6960   Yarik   Basket
91
          /**
8ec69373   Yarik   Orders.
92
93
94
           * @param Basket $basket
           *
           * @return string
fe7b6960   Yarik   Basket
95
           */
8ec69373   Yarik   Orders.
96
97
98
99
100
101
102
          public function getCart($basket): string
          {
              $count = $basket->getCount();
              $sum = $basket->getSum();
              $output = $this->renderPartial('cart', [
                  'count' => $count,
                  'sum'   => $sum,
d09f430f   Administrator   big commti
103
              ]);
8ec69373   Yarik   Orders.
104
              return $output;
d09f430f   Administrator   big commti
105
          }
d09f430f   Administrator   big commti
106
      }