From 05875b7c4b8c7214049184ebd8ee92c1d1dcc3d3 Mon Sep 17 00:00:00 2001 From: Semenov Date: Wed, 15 Apr 2015 18:02:20 +0400 Subject: [PATCH] 1 --- controllers/BackendController.php | 33 +++++++++++++++++++++++++++++++++ models/ShopOrder.php | 11 ++++++----- widgets/order/OrderWidget.php | 41 +++++++++++++++++++++++++++++++++++++++++ widgets/orders/OrdersWidget.php | 21 +++++++++++++++++++++ 4 files changed, 101 insertions(+), 5 deletions(-) create mode 100644 widgets/order/OrderWidget.php diff --git a/controllers/BackendController.php b/controllers/BackendController.php index c026a89..5098cce 100644 --- a/controllers/BackendController.php +++ b/controllers/BackendController.php @@ -8,6 +8,8 @@ namespace skeeks\modules\cms\shop\controllers; use skeeks\cms\base\Controller; use skeeks\cms\helpers\RequestResponse; +use skeeks\cms\helpers\UrlHelper; +use skeeks\cms\models\forms\SignupForm; use skeeks\modules\cms\form\models\Form; use skeeks\modules\cms\form\models\FormField; use skeeks\modules\cms\form\models\FormSendMessage; @@ -97,6 +99,28 @@ class BackendController extends Controller //Пользователь авторизован или нет. if (\Yii::$app->user->isGuest) { + $registerForm = new SignupForm(); + $registerForm->setScenario(SignupForm::SCENARION_ONLYEMAIL); + $registerForm->email = $model->email; + + $user = $registerForm->signup(); + + //Проверим может что то можно заполнить в профиле пользователя. + if ($user) + { + foreach ($model->attributes as $code => $value) + { + if ($user->hasAttribute($code)) + { + $user->{$code} = $value; + } + } + + $user->save(false); + } else + { + throw new UserException("Не удалось зарегистрировать пользователя"); + } } else { @@ -159,6 +183,15 @@ class BackendController extends Controller } + $rr->success = true; + $rr->message = 'Заказ успешно создан'; + \Yii::$app->session->setFlash("success", 'Заказ успешно создан'); + + return $this->redirect( UrlHelper::construct('shop/order/view', [ + 'id' => $shopOrder->id, + 'sx-new' => '1' + ])->toString() ); + } else { $rr->message = 'Форма заполнена неправильно'; diff --git a/models/ShopOrder.php b/models/ShopOrder.php index d43f80f..4865a8f 100644 --- a/models/ShopOrder.php +++ b/models/ShopOrder.php @@ -6,6 +6,7 @@ * @date 02.04.2015 */ namespace skeeks\modules\cms\shop\models; +use skeeks\cms\models\User; use skeeks\cms\helpers\UrlHelper; use skeeks\cms\models\behaviors\HasStatus; use skeeks\cms\models\behaviors\HasStatusBoolean; @@ -51,8 +52,8 @@ use yii\helpers\ArrayHelper; * @property string $tax_value * * @property ShopBasket[] $shopBaskets - * @property CmsUser $user - * @property CmsUser $createdBy + * @property User $user + * @property User $createdBy * @property ShopPersonType $personType * @property CmsUser $updatedBy */ @@ -161,7 +162,7 @@ class ShopOrder extends Core */ public function getUser() { - return $this->hasOne(CmsUser::className(), ['id' => 'user_id']); + return $this->hasOne(User::className(), ['id' => 'user_id']); } /** @@ -169,7 +170,7 @@ class ShopOrder extends Core */ public function getCreatedBy() { - return $this->hasOne(CmsUser::className(), ['id' => 'created_by']); + return $this->hasOne(User::className(), ['id' => 'created_by']); } /** @@ -185,7 +186,7 @@ class ShopOrder extends Core */ public function getUpdatedBy() { - return $this->hasOne(CmsUser::className(), ['id' => 'updated_by']); + return $this->hasOne(User::className(), ['id' => 'updated_by']); } diff --git a/widgets/order/OrderWidget.php b/widgets/order/OrderWidget.php new file mode 100644 index 0000000..6b36776 --- /dev/null +++ b/widgets/order/OrderWidget.php @@ -0,0 +1,41 @@ + + * @link http://skeeks.com/ + * @copyright 2010 SkeekS (СкикС) + * @date 03.04.2015 + */ +namespace skeeks\modules\cms\shop\widgets\order; + +use skeeks\cms\widgets\base\hasModelsSmart\WidgetHasModelsSmart; +use skeeks\cms\widgets\base\hasTemplate\WidgetHasTemplate; +use skeeks\modules\cms\shop\assets\ShopAsset; +use skeeks\modules\cms\shop\models\ShopOrder; +use yii\helpers\Json; + +/** + * Class OrdersWidget + * @package skeeks\modules\cms\shop\widgets + */ +class OrderWidget extends WidgetHasTemplate +{ + public $modelClassName = '\skeeks\modules\cms\shop\models\ShopOrder'; + public $title = ''; + + /** + * @var ShopOrder + */ + public $model; + + public function rules() + { + return ArrayHelper::merge(parent::rules(), [ + ]); + } + + public function attributeLabels() + { + return ArrayHelper::merge(parent::attributeLabels(), [ + ]); + } +} diff --git a/widgets/orders/OrdersWidget.php b/widgets/orders/OrdersWidget.php index c24bfca..c940270 100644 --- a/widgets/orders/OrdersWidget.php +++ b/widgets/orders/OrdersWidget.php @@ -21,15 +21,36 @@ class OrdersWidget extends WidgetHasModelsSmart { public $modelClassName = '\skeeks\modules\cms\shop\models\ShopOrder'; public $title = ''; + public $user_id; + public function rules() { return ArrayHelper::merge(parent::rules(), [ + ['user_id', 'integer'] ]); } public function attributeLabels() { return ArrayHelper::merge(parent::attributeLabels(), [ + 'user_id' => 'Пользователь' ]); } + + /** + * Подготовка данных для шаблона + * @return $this + */ + public function bind() + { + parent::bind(); + + if ($this->user_id) + { + $query = $this->getSearch()->getDataProvider()->query; + $query->andWhere(['user_id' => $this->user_id]); + } + + return $this; + } } -- libgit2 0.26.0