OrdersController.php 4.16 KB
<?php

namespace app\modules\admin\controllers;

use Yii;
use yii\web\Controller;
use yii\filters\AccessControl;
use yii\filters\VerbFilter;
use yii\data\ActiveDataProvider;
use yii\web\HttpException;
use app\modules\admin\models\Orders;
use app\modules\admin\models\OrdersProducts;
use app\modules\admin\models\Mod;


class OrdersController extends Controller
{
    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                //'only' => ['logout','index'],
                'rules' => [
                    [
                        'actions' => ['index','save','delete','show','add','delete_product'],
                        'allow' => true,
                        'roles' => ['admin'],
                    ],					
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],
                ],
            ],
        ];
    }
	
    public function actionIndex()
    {        
                $searchModel = new Orders;
                $searchModel->load(Yii::$app->request->queryParams);
                $query = Orders::find();
		if(!empty($searchModel->phone))$query->andFilterWhere(['like', 'phone', $searchModel->phone]);
                if(!empty($searchModel->name))$query->andFilterWhere(['like', 'name', $searchModel->name]);
                if(!empty($searchModel->surname))$query->andFilterWhere(['like', 'surname', $searchModel->surname]);
                if(!empty($searchModel->total))$query->andFilterWhere(['like', 'total', $searchModel->total]);
                if(!empty($searchModel->reserve))$query->andFilterWhere(['like', 'reserve', $searchModel->reserve]);
                if(!empty($searchModel->status))$query->andFilterWhere(['like', 'status', $searchModel->status]);
                $dataProvider = new ActiveDataProvider([
			'query' =>$query,
                        'sort'=> ['defaultOrder' => ['id'=>SORT_DESC]],
			'pagination' => [
				'pageSize' => 20,
			],
		]);
                
        return $this->render('index',['dataProvider'=>$dataProvider,'searchModel'=>$searchModel]);
    }
	
    public function actionShow()
    {
		$model = (!empty($_GET['id'])) ? Orders::findOne($_GET['id']) : new Orders;
                

		if ($model->load(Yii::$app->request->post()) && $model->save()) {
		
			return Yii::$app->response->redirect(['/admin/orders/show','id'=>$model->id,'success'=>1]);
		}
                
                $dataProvider = new ActiveDataProvider([
			'query' => OrdersProducts::find()->where(['order_id'=>$_GET['id']]),
			'pagination' => [
				'pageSize' => 20,
			],
		]);
        return $this->render('show',['model'=>$model,'dataProvider'=>$dataProvider]);
    }

	public function actionDelete(){
		$model = Orders::findOne($_GET['id']);
		$model->delete();
		return Yii::$app->response->redirect(['/admin/orders/index']);
	}
        
        
        public function actionAdd(){
            $model = new OrdersProducts;
            
		if ($model->load(Yii::$app->request->post())) {
                        if(!$modelMod = Mod::find()->with(['product'])->where(['art'=>$model->art])->one())
                                throw new HttpException(404, 'Данного артикля не существует!');
                        $model->product_name = $modelMod->product->name;
                        $model->name = $modelMod->name;
                        $model->art = $modelMod->art;
                        $model->cost = $modelMod->cost;
                        $model->sum_cost = $model->count*$modelMod->cost;
                        $model->save();
			return Yii::$app->response->redirect(['/admin/orders/show','id'=>$_GET['order_id']]);
		}            
            
            return $this->render('add',['model'=>$model]);
        }
        
	public function actionDelete_product(){
		$model = OrdersProducts::findOne($_GET['id']);
		$model->delete();
		return Yii::$app->response->redirect(['/admin/orders/show','id'=>$_GET['order_id']]);
	}        
}