deleteBasketMod($_GET['deleteID']); return Yii::$app->response->redirect(['basket/index']); } if(isset($_POST['update']) && isset($_POST['ProductVariant'])){ foreach ($_POST['ProductVariant'] as $index=>$row) { $modelOrder->updateBasket($row); } }elseif(isset($_POST['ProductVariant'])){ // die(print_r($_POST)); $body = ''; foreach ($_POST['ProductVariant'] as $index=>$row) { $body .= $row['product_name'].' '.$row['name'].' Кол:'.$row['count'].' Цена:'.$row['sum_cost']; $body .= "\n\r"; } $body .= "\n\r"; if ($modelOrder->load(Yii::$app->request->post()) && $modelOrder->save()) { $productV = $_POST['ProductVariant']; foreach ($productV as $index=>$row) { $modelOrdersProducts = new OrdersProducts(); $mod_id = $row['id']; $data['OrdersProducts'] = $row; $data['OrdersProducts']['mod_id'] = $mod_id; $data['OrdersProducts']['order_id'] = $modelOrder->id; $product = ProductVariant::findOne($mod_id); /** * Проверяем товар на наличие */ if(!$product->stock > 0 || !$product->price > 0 ){ /** * Добавляем сообщение об ошибке */ \Yii::$app->getSession()->setFlash('error', 'К сожалению товара '.$product->name . ' нет в наличии'); /** * Удаляем заказ */ $modelOrder->delete(); $basket_mods = $modelOrder->getBasketMods(); 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); $modelOrdersProducts->validate(); $modelOrdersProducts->save(); } } /** * Сохраняем заказ */ if(!Yii::$app->user->id && !empty($modelOrder->email)){ $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(); } $order = clone $modelOrder; /** * Чистим сессию корзины */ $modelOrder->clearBasket(); Mailer::widget( ['type' => 'order', 'subject'=> 'Спасибо за покупку', 'email' => $modelOrder->email, 'params' => [ 'order' => $order, 'variants' => $productV, ] ]); $text = "# zakaz: ". $order->id .". V blijayshee vremya menedjer svyajetsya s Vami. (044) 303 90 15"; Yii::$app->sms->send($order->phone, $text); Yii::$app->session['order_data']= ['order' => $order,'variants'=>$productV]; return $this->redirect(['basket/success', ]); } } $basket_mods = $modelOrder->getBasketMods(); if(!empty(Yii::$app->user->id)){ $user = Customer::findOne(Yii::$app->user->id); $modelOrder->email = $user->username; $modelOrder->phone = $user->phone; $modelOrder->name = $user->name; } return $this->render('index', [ 'modelMod'=>$modelMod, 'basket_mods'=>$basket_mods, 'modelOrder'=>$modelOrder, ]); } public function actionItems(){ $modelMod = new Orders; if(!empty($_GET['deleteID'])){ $modelMod->deleteBasketMod($_GET['deleteID']); } if(isset($_POST['ProductVariant'])){ foreach ($_POST['ProductVariant'] as $index=>$row) { $modelMod->updateBasket($row); } } $basket_mods = $modelMod->getBasketMods(); return $this->renderAjax('ajax_items', [ 'modelMod'=>$modelMod, 'basket_mods'=>$basket_mods, ]); } public function actionInfo() { $modelMod = new Orders(); $info = $modelMod->rowBasket(); return $this->renderAjax('ajax_info', [ 'info'=>$info, ]); } public function actionAdd(){ $modelOrders = new Orders(); if(isset($_GET['mod_id'],$_GET['count']) && $_GET['mod_id']>0 && $_GET['count']>0){ $modelOrders->addBasket($_GET['mod_id'],$_GET['count']); } Yii::$app->end(); } public function actionSuccess(){ $orderData = Yii::$app->session->get('order_data'); unset($_SESSION['order_data']); return $this->render('success',[ 'order' => $orderData['order'], 'variants' => $orderData['variants'], ]); } }