Blame view

frontend/controllers/BasketController.php 7.43 KB
ecf49b1b   Administrator   second
1
2
  <?php
  
90a6ed1a   Administrator   basket
3
  namespace frontend\controllers;
ecf49b1b   Administrator   second
4
  
90a6ed1a   Administrator   basket
5
6
7
  
  use common\models\Customer;
  use common\models\OrdersProducts;
ecf49b1b   Administrator   second
8
  use Yii;
91b45094   Administrator   29.06.16
9
  use yii\helpers\ArrayHelper;
ecf49b1b   Administrator   second
10
  use yii\web\Controller;
90a6ed1a   Administrator   basket
11
12
  use common\modules\product\models\ProductVariant;
  use common\models\Orders;
d9a2909b   Dmytry Fedorchuk   Mail Order save ...
13
  use common\widgets\Mailer;
90a6ed1a   Administrator   basket
14
15
  //use app\models\User;
  //use app\models\OrdersProducts;
ecf49b1b   Administrator   second
16
17
18
19
20
21
  use yii\web\HttpException;
  
  class BasketController extends Controller
  {
  
      public function actionIndex(){ 
90a6ed1a   Administrator   basket
22
23
              $modelMod = new ProductVariant;
              $modelOrder = new Orders;
ecf49b1b   Administrator   second
24
25
  
              if(!empty($_GET['deleteID'])){
90a6ed1a   Administrator   basket
26
                  $modelOrder->deleteBasketMod($_GET['deleteID']);
ecf49b1b   Administrator   second
27
28
                  return Yii::$app->response->redirect(['basket/index']);
              }
3a7e43ce   Administrator   20.07.16
29
  
5b353122   Administrator   image size
30
31
              if(isset($_POST['update']) && isset($_POST['ProductVariant'])){
  
8df8067a   Administrator   basket
32
                  foreach ($_POST['ProductVariant'] as $index=>$row) {
90a6ed1a   Administrator   basket
33
                      $modelOrder->updateBasket($row);
ecf49b1b   Administrator   second
34
                  }
8df8067a   Administrator   basket
35
36
              }elseif(isset($_POST['ProductVariant'])){
  //                die(print_r($_POST));
ecf49b1b   Administrator   second
37
                  $body = '';
8df8067a   Administrator   basket
38
                  foreach ($_POST['ProductVariant'] as $index=>$row) {
ecf49b1b   Administrator   second
39
40
41
42
                    $body .= $row['product_name'].' '.$row['name'].' Кол:'.$row['count'].' Цена:'.$row['sum_cost'];
                    $body .= "\n\r";
                  }
                  $body .= "\n\r";
3a7e43ce   Administrator   20.07.16
43
  
71ef7261   Administrator   14.06.16
44
                      if ($modelOrder->load(Yii::$app->request->post()) && $modelOrder->save()) {
fed9ec18   Administrator   image size
45
46
                          $productV = $_POST['ProductVariant'];
  
5b78178b   Dmytry Fedorchuk   product
47
                          foreach ($productV as $index=>$row) {
fed9ec18   Administrator   image size
48
                              $modelOrdersProducts = new OrdersProducts();
ecf49b1b   Administrator   second
49
                              $mod_id = $row['id'];
eb74a2bf   Administrator   14.06.16
50
  
fed9ec18   Administrator   image size
51
                              $data['OrdersProducts'] = $row;
ecf49b1b   Administrator   second
52
                              $data['OrdersProducts']['mod_id'] = $mod_id;
fed9ec18   Administrator   image size
53
                              $data['OrdersProducts']['order_id'] = $modelOrder->id;
eb74a2bf   Administrator   14.06.16
54
55
56
57
                              $product = ProductVariant::findOne($mod_id);
                              /**
                               * Проверяем товар на наличие
                               */
71ef7261   Administrator   14.06.16
58
59
60
61
62
63
  
                              if(!$product->stock > 0 || !$product->price > 0 ){
  
                                  /**
                                   * Добавляем сообщение об ошибке
                                   */
eb74a2bf   Administrator   14.06.16
64
                                  \Yii::$app->getSession()->setFlash('error', 'К сожалению товара '.$product->name . ' нет в наличии');
71ef7261   Administrator   14.06.16
65
66
67
68
                                  /**
                                   * Удаляем заказ
                                   */
                                  $modelOrder->delete();
eb74a2bf   Administrator   14.06.16
69
70
  
                                  $basket_mods = $modelOrder->getBasketMods();
71ef7261   Administrator   14.06.16
71
  
eb74a2bf   Administrator   14.06.16
72
73
74
75
76
77
78
79
80
81
82
83
84
                                  return $this->render('index',[
                                      'modelMod'=>$modelMod,
                                      'basket_mods'=>$basket_mods,
                                      'modelOrder'=>$modelOrder,
                                  ]);
                              }else {
  
                                  /**
                                   * Удаляем товар с массива и сохраняем в заказ
                                   */
                                  unset($row['id']);
                                  $productV[$index]['img'] =  \common\components\artboximage\ArtboxImageHelper::getImageSrc($product->image->imageUrl, 'list');
                                  $modelOrdersProducts->load($data);
71ef7261   Administrator   14.06.16
85
                                  $modelOrdersProducts->validate();
eb74a2bf   Administrator   14.06.16
86
87
88
                                  $modelOrdersProducts->save();
                              }
  
ecf49b1b   Administrator   second
89
                          }
eb74a2bf   Administrator   14.06.16
90
91
92
93
94
  
                          /**
                           * Сохраняем заказ
                           */
  
71ef7261   Administrator   14.06.16
95
  
eb74a2bf   Administrator   14.06.16
96
  
84b2aead   Administrator   add active menu
97
                          if(!Yii::$app->user->id && !empty($modelOrder->email)){
fed9ec18   Administrator   image size
98
99
100
101
102
103
104
105
                              $modelUser = new Customer();
                              $modelUser->role = 'person';
                              $modelUser->username = $modelOrder->email;
                              $modelUser->name = $modelOrder->name;
                              $modelUser->phone = $modelOrder->phone;
                              $modelUser->password = Yii::$app->getSecurity()->generateRandomString(10);
                              $modelUser->group_id = 2;
                              $modelUser->save();
ecf49b1b   Administrator   second
106
                          }
fed9ec18   Administrator   image size
107
                          $order = clone $modelOrder;
eb74a2bf   Administrator   14.06.16
108
109
110
111
                          /**
                           * Чистим сессию корзины
                           */
  
8df8067a   Administrator   basket
112
                          $modelOrder->clearBasket();
fed9ec18   Administrator   image size
113
  
d9a2909b   Dmytry Fedorchuk   Mail Order save ...
114
115
                          Mailer::widget(
                              ['type' => 'order',
b044ffe3   Dmytry Fedorchuk   Mail Order save ...
116
117
                                  'subject'=> 'Спасибо за покупку',
                                  'email' => $modelOrder->email,
d9a2909b   Dmytry Fedorchuk   Mail Order save ...
118
                                  'params' => [
d9a2909b   Dmytry Fedorchuk   Mail Order save ...
119
                                      'order' => $order,
72909570   Dmytry Fedorchuk   images
120
                                      'variants' => $productV,
d9a2909b   Dmytry Fedorchuk   Mail Order save ...
121
122
123
                                  ]
                              ]);
  
001d6ecf   Alex Savenko   slider fix
124
                          $text = "# zakaz: ". $order->id .". V blijayshee vremya menedjer svyajetsya s Vami.";
40366ecb   Dmytry Fedorchuk   All seo
125
126
                          Yii::$app->sms->send($order->phone, $text);
  
91b45094   Administrator   29.06.16
127
                          Yii::$app->session['order_data']= ['order' => $order,'variants'=>$productV];
e57b5eaf   Administrator   29.06.16
128
  
91b45094   Administrator   29.06.16
129
                          return $this->redirect(['basket/success',
fed9ec18   Administrator   image size
130
                          ]);
ecf49b1b   Administrator   second
131
                      }
3a7e43ce   Administrator   20.07.16
132
133
                  }
  
90a6ed1a   Administrator   basket
134
              $basket_mods = $modelOrder->getBasketMods();
ecf49b1b   Administrator   second
135
136
  
              if(!empty(Yii::$app->user->id)){
90a6ed1a   Administrator   basket
137
                  $user = Customer::findOne(Yii::$app->user->id);
ecf49b1b   Administrator   second
138
139
140
                  $modelOrder->email = $user->username;
                  $modelOrder->phone = $user->phone;
                  $modelOrder->name = $user->name;
ecf49b1b   Administrator   second
141
              }
d9a2909b   Dmytry Fedorchuk   Mail Order save ...
142
143
  
  
3a7e43ce   Administrator   20.07.16
144
  
ecf49b1b   Administrator   second
145
146
147
148
              return $this->render('index', [
                      'modelMod'=>$modelMod,
                      'basket_mods'=>$basket_mods,
                      'modelOrder'=>$modelOrder,
3a7e43ce   Administrator   20.07.16
149
              ]);
ecf49b1b   Administrator   second
150
151
152
      }
  
      public function actionItems(){
90a6ed1a   Administrator   basket
153
          $modelMod = new Orders;
030aa37f   Administrator   image size
154
155
  
  
ecf49b1b   Administrator   second
156
157
158
159
          if(!empty($_GET['deleteID'])){
              $modelMod->deleteBasketMod($_GET['deleteID']);
          }
  
5f509693   Administrator   image size
160
161
          if(isset($_POST['ProductVariant'])){
              foreach ($_POST['ProductVariant'] as $index=>$row) {
ecf49b1b   Administrator   second
162
163
164
165
166
167
168
169
170
                  $modelMod->updateBasket($row);
              }
          }
          $basket_mods = $modelMod->getBasketMods();
          return $this->renderAjax('ajax_items', [
              'modelMod'=>$modelMod,
              'basket_mods'=>$basket_mods,
          ]);
      }
3a7e43ce   Administrator   20.07.16
171
  
ecf49b1b   Administrator   second
172
173
      public function actionInfo()
      {
90a6ed1a   Administrator   basket
174
              $modelMod = new Orders();
ecf49b1b   Administrator   second
175
176
177
178
              $info = $modelMod->rowBasket();
              return $this->renderAjax('ajax_info', [
                      'info'=>$info,
              ]);
3a7e43ce   Administrator   20.07.16
179
180
      }
  
ecf49b1b   Administrator   second
181
          public function actionAdd(){
90a6ed1a   Administrator   basket
182
  		$modelOrders = new Orders();
ecf49b1b   Administrator   second
183
                  if(isset($_GET['mod_id'],$_GET['count']) && $_GET['mod_id']>0 && $_GET['count']>0){
90a6ed1a   Administrator   basket
184
                      $modelOrders->addBasket($_GET['mod_id'],$_GET['count']);
ecf49b1b   Administrator   second
185
186
187
188
189
190
191
  		}
                  
                  Yii::$app->end();
          }
          
          
          public function actionSuccess(){
91b45094   Administrator   29.06.16
192
193
194
195
196
197
198
199
  
              $orderData = Yii::$app->session->get('order_data');
              unset($_SESSION['order_data']);
              return $this->render('success',[
  
                  'order' => $orderData['order'],
                  'variants' => $orderData['variants'],
              ]);
ecf49b1b   Administrator   second
200
201
202
203
204
          }
          
          
      
  }