* @link http://skeeks.com/ * @copyright 2010 SkeekS (СкикС) * @date 03.04.2015 */ namespace skeeks\modules\cms\shop\controllers; use skeeks\cms\base\Controller; use skeeks\cms\helpers\RequestResponse; use skeeks\modules\cms\shop\models\ShopBasket; use skeeks\modules\cms\shop\models\ShopFuser; use skeeks\modules\cms\catalog\models\Product; /** * Class ShopController * @package skeeks\modules\cms\shop\controllers */ class BasketController extends Controller { /** * Добавление продукта в корзину. * * @return array|\yii\web\Response */ public function actionAddProduct() { $rr = new RequestResponse(); if ($rr->isRequestAjaxPost()) { $product_id = \Yii::$app->request->post('product_id'); $quantity = \Yii::$app->request->post('quantity'); $product = Product::find()->where(['id' => $product_id])->one(); if (!$product) { $rr->message = 'Товар не найден, возможно его только что удалили.'; return (array) $rr; } \Yii::$app->shop->cart->loadShopFuser(); $shopBasket = ShopBasket::find()->where([ 'fuser_id' => \Yii::$app->shop->cart->shopFuser->id, 'product_id' => $product_id, 'order_id' => null, ])->one(); if (!$shopBasket) { $shopBasket = new ShopBasket([ 'fuser_id' => \Yii::$app->shop->cart->shopFuser->id, 'name' => $product->name, 'product_id' => $product_id, 'quantity' => 0, ]); } $shopBasket->quantity = $shopBasket->quantity + $quantity; $shopBasket->save(); $shopBasket->recalculate(); $rr->success = true; $rr->message = 'Позиция добавлена в корзину'; return (array) $rr; } else { return $this->goBack(); } } public function actionRemoveBasket() { $rr = new RequestResponse(); if ($rr->isRequestAjaxPost()) { $basket_id = \Yii::$app->request->post('basket_id'); $shopBasket = ShopBasket::find()->where(['id' => $basket_id ])->one(); if ($shopBasket) { if ($shopBasket->delete()) { $rr->success = true; $rr->message = 'Позиция успешно удалена'; } } return (array) $rr; } else { return $this->goBack(); } } public function actionUpdateBasket() { $rr = new RequestResponse(); if ($rr->isRequestAjaxPost()) { $basket_id = (int) \Yii::$app->request->post('basket_id'); $quantity = (int) \Yii::$app->request->post('quantity'); $shopBasket = ShopBasket::find()->where(['id' => $basket_id ])->one(); if ($shopBasket) { if ($quantity > 0) { $shopBasket->quantity = $quantity; if ($shopBasket->save()) { $rr->success = true; $rr->message = 'Позиция успешно обновлена'; $shopBasket->recalculate(); } } else { if ($shopBasket->delete()) { $rr->success = true; $rr->message = 'Позиция успешно удалена'; } } } return (array) $rr; } else { return $this->goBack(); } } }