BasketController.php 4.74 KB
<?php

namespace frontend\controllers;


use common\models\Customer;
use common\models\OrdersProducts;
use Yii;
use yii\web\Controller;
use common\modules\product\models\ProductVariant;
use common\models\Orders;
//use app\models\User;
//use app\models\OrdersProducts;
use yii\web\HttpException;

class BasketController extends Controller
{

    public function actionIndex(){ 
            $modelMod = new ProductVariant;
            $modelOrder = new Orders;

            if(!empty($_GET['deleteID'])){
                $modelOrder->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 ($_POST['ProductVariant'] as $index=>$row) {
                            $modelOrdersProducts = new OrdersProducts();
                            $mod_id = $row['id'];
                            unset($row['id']);
                            $data['OrdersProducts'] = $row;
                            $data['OrdersProducts']['mod_id'] = $mod_id;
                            $data['OrdersProducts']['order_id'] = $modelOrder->id;

                            $modelOrdersProducts->load($data);
                            $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();

                        return $this->render('success',[
                            'order' => $order,
                            'variants' => $productV,
                        ]);
                    }
                }            
            
            $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(){
            return $this->render('success');            
        }
        
        
    
}