OrdersController.php 5.04 KB
<?php

namespace backend\controllers;

use Yii;
use yii\web\Controller;
use yii\filters\AccessControl;
use yii\filters\VerbFilter;
use yii\data\ActiveDataProvider;
use yii\web\HttpException;
use backend\models\Orders;
use backend\models\OrdersProducts;
use common\modules\product\models\ProductVariant;



class OrdersController extends Controller
{
//    public $layout = 'update';
    /**
     * @inheritdoc
     */
    public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['POST'],
                ],
            ],
        ];
    }
	
    public function actionIndex()
    {        
                $searchModel = new Orders;
                $searchModel->load(Yii::$app->request->queryParams);
                $query = Orders::find(); 
                if(!empty($searchModel->labels))$query->andWhere(['label'=>$searchModel->labels]);
                //if(!empty($searchModel->date_time))$query->andFilterWhere(['like', 'date_time', $searchModel->date_time]);
                if(!empty($searchModel->username))$query->andFilterWhere(['like', 'username', $searchModel->username]);
                if(!empty($searchModel->id))$query->andFilterWhere(['like', 'id', $searchModel->id]);
		        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]);
                
// var_dump($searchModel->name);
// die;
                $dataProvider = new ActiveDataProvider([
			'query' =>$query,
                        'sort'=> ['defaultOrder' => ['id'=>SORT_DESC]],
			'pagination' => [
				'pageSize' => 20,
			],
		]);
                
        return $this->render('index', [
            'dataProvider'=>$dataProvider,
            'searchModel'=>$searchModel,
            ]);
    }
	
    public function actionShow($id)
    {

		$model = $this->findModel((int)$id);
        $dataProvider = new ActiveDataProvider([
            'query' => OrdersProducts::find()->where(['order_id'=>(int)$_GET['id']]),
            'pagination' => [
                'pageSize' => 20,
            ],
        ]);
        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['index']);
        } else {
            $model_orderproducts = new OrdersProducts;


            return $this->renderPartial('show', [
                'model' => $model,
                'model_orderproducts'=>$model_orderproducts,
                'dataProvider' => $dataProvider,
            ]);
        }
    }
    
    public function actionLabelupdate(){
        $model = Orders::findOne($_POST['order_id']);
        $model->label = $_POST['label_id'];
        $model->save();
        Yii::$app->and();
    }

    public function actionPayupdate(){
        $model = Orders::findOne($_POST['order_id']);
        $model->pay = $_POST['pay_id'];
        $model->save();
        Yii::$app->and();
    }

	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 = ProductVariant::find()->with(['product'])->where(['sku'=>$model->sku])->one())
                                throw new HttpException(404, 'Данного артикля не существует!');
                        $model->product_name = $modelMod->product->name;
                        $model->name = $modelMod->name;
                        $model->sku = $modelMod->sku;
                        $model->price = $modelMod->price;
                        $model->sum_cost = $model->count*$modelMod->price;
                        $model->mod_id = $modelMod->id;
                        $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']]);
	}  

    protected function findModel($id)
    {
        if (($model = Orders::findOne($id)) !== null) {
            return $model;
        } else {
            throw new NotFoundHttpException('The requested page does not exist.');
        }
    }      
}