From d57c8c004b7569193dd17271644131a1370a21e1 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 28 Nov 2016 19:29:52 +0200 Subject: [PATCH] -Blocking in process --- controllers/OrderController.php | 58 +++++++++++++++++++++++++++++++++++++++++++++++++--------- models/Order.php | 18 ++++++++++++++++++ models/ProductVideo.php | 4 ++++ views/order/_form.php | 17 +++++++++++++++++ views/order/update.php | 15 +++++++++++++++ 5 files changed, 103 insertions(+), 9 deletions(-) diff --git a/controllers/OrderController.php b/controllers/OrderController.php index 963e7c7..24eff1d 100755 --- a/controllers/OrderController.php +++ b/controllers/OrderController.php @@ -11,12 +11,14 @@ use yii\web\Controller; use yii\filters\VerbFilter; use yii\data\ActiveDataProvider; + use yii\web\ForbiddenHttpException; use yii\web\HttpException; use artweb\artbox\ecommerce\models\Order; use artweb\artbox\ecommerce\models\OrderProduct; use artweb\artbox\ecommerce\models\ProductVariant; use yii\web\NotFoundHttpException; use developeruz\db_rbac\behaviors\AccessBehavior; + use yii\web\Response; class OrderController extends Controller { @@ -102,9 +104,11 @@ public function actionView($id) { $model = $this->findModel($id); - $dataProvider = new ActiveDataProvider([ - 'query' => $model->getProducts(), - ]); + $dataProvider = new ActiveDataProvider( + [ + 'query' => $model->getProducts(), + ] + ); return $this->render( 'view', [ @@ -286,6 +290,10 @@ $model = $this->findModel($id); + if ($model->isBlocked() && $model->edit_id !== \Yii::$app->user->id) { + throw new ForbiddenHttpException(); + } + $dataProvider = new ActiveDataProvider( [ 'query' => $model->getProducts() @@ -293,7 +301,12 @@ ] ); + if (empty( $model->manager_id )) { + $model->manager_id = \Yii::$app->user->id; + } + if ($model->load(Yii::$app->request->post()) && $model->save()) { + $this->unblockOrder($model->id); return $this->redirect([ 'index' ]); } else { return $this->render( @@ -317,12 +330,12 @@ ]; if (!is_null($q)) { $result = ProductVariant::find()// ->select( - // [ - // 'id', - // 'sku', - // 'product_lang.title AS name' - // ] - // ) + // [ + // 'id', + // 'sku', + // 'product_lang.title AS name' + // ] + // ) ->joinWith('product.lang') ->where( [ @@ -368,4 +381,31 @@ throw new NotFoundHttpException('The requested page does not exist.'); } } + + public function actionBlockOrder() + { + if (!empty( \Yii::$app->request->post() )) { + \Yii::$app->response->format = Response::FORMAT_JSON; + + $model = $this->findModel(\Yii::$app->request->post('id')); + + $model->edit_time = time(); + $model->edit_id = \Yii::$app->user->id; + + if ($model->save()) { + return [ 'success' => true ]; + } else { + return [ 'success' => false ]; + } + } + } + + protected function unblockOrder($id) + { + $model = $this->findModel($id); + + $model->edit_time = 0; + $model->edit_id = 0; + $model->save(); + } } diff --git a/models/Order.php b/models/Order.php index 6b88efd..3ed154f 100755 --- a/models/Order.php +++ b/models/Order.php @@ -21,6 +21,8 @@ * @property string $check * @property string $sms * @property int $id + * @property integer $edit_id + * @property integer $edit_time * @property integer $manager_id * @property int $user_id * @property string $name @@ -111,6 +113,8 @@ 'reason', 'label', 'manager_id', + 'edit_time', + 'edit_id', ], 'integer', ], @@ -287,4 +291,18 @@ { $this->hasOne(User::className(), [ 'id' => 'manager_id' ]); } + + public function isBlocked() + { + if ($this->edit_id === 0 ) { + return false; + } else { + if ( $this->edit_time + 7200 > time()) { + return true; + } + else { + return false; + } + } + } } \ No newline at end of file diff --git a/models/ProductVideo.php b/models/ProductVideo.php index 53ef4e9..6ad086e 100755 --- a/models/ProductVideo.php +++ b/models/ProductVideo.php @@ -42,6 +42,10 @@ 'max' => 255, ], [ + ['url'], + 'required', + ], + [ [ 'product_id' ], 'exist', 'skipOnError' => true, diff --git a/views/order/_form.php b/views/order/_form.php index 1a4f8b7..c14a0a3 100755 --- a/views/order/_form.php +++ b/views/order/_form.php @@ -5,6 +5,7 @@ use artweb\artbox\ecommerce\models\OrderPayment; use artweb\artbox\ecommerce\models\OrderProduct; use backend\models\SmsTemplate; + use common\models\User; use kartik\grid\GridView; use kartik\widgets\DatePicker; use kartik\widgets\Select2; @@ -181,6 +182,22 @@ JS; ), [ 'prompt' => \Yii::t('app', 'Выберите доставку ...') ] ) ?> + + user->identity->isAdmin()) { + echo $form->field($model, 'manager_id') + ->dropDownList( + ArrayHelper::map( + User::find() + ->asArray() + ->all(), + 'id', + 'username' + ), + [ 'prompt' => \Yii::t('app', 'Менеджер') ] + ) ; + } + ?>
diff --git a/views/order/update.php b/views/order/update.php index 701703e..4f59f94 100755 --- a/views/order/update.php +++ b/views/order/update.php @@ -16,6 +16,21 @@ 'label' => \Yii::t('app', 'Заказы'), ]; $this->params[ 'breadcrumbs' ][] = $this->title; + + $js = ' +$.ajax({ + type: "POST", + url: "/admin/ecommerce/order/block-order", + data: { + id: ' . $model->id . ' + }, + success: function() { + console.log("Ura"); + } +});'; + + $this->registerJs($js, View::POS_READY); + ?>

title) ?>

-- libgit2 0.21.4