/** * Процесс отправки формы * @return array */ public function actionShopPersonTypeSubmit() { $rr = new RequestResponse(); try { if (\Yii::$app->request->isAjax && !\Yii::$app->request->isPjax) { if (\Yii::$app->request->post('shop_person_type_id')) { $shop_person_type_id = \Yii::$app->request->post('shop_person_type_id'); $shop_buyer_id = \Yii::$app->request->post('shop_buyer_id'); /** * @var $shopPersonType ShopPersonType */ $modelBuyer = ShopBuyer::findOne($shop_buyer_id); $shopPersonType = ShopPersonType::find()->active()->andWhere(['id' => $shop_person_type_id])->one(); if (!$shopPersonType) { throw new Exception(\skeeks\cms\shop\Module::t('app', 'This payer is disabled or deleted. Refresh the page.')); } if (!$modelBuyer) { $modelBuyer = $shopPersonType->createModelShopBuyer(); } $validateModel = $modelBuyer->relatedPropertiesModel; if ($validateModel->load(\Yii::$app->request->post()) && $validateModel->validate()) { $modelBuyerName = []; //Проверка свойств foreach ($validateModel->attributeValues() as $code => $value) { /** * @var $property ShopPersonTypeProperty */ $property = $validateModel->getRelatedProperty($code); if ($property->is_buyer_name == Cms::BOOL_Y) { $modelBuyerName[] = $value; } if ($property->is_user_email == Cms::BOOL_Y) { $userEmail = $value; } if ($property->is_user_name == Cms::BOOL_Y) { $userName = $value; } if ($property->is_user_username == Cms::BOOL_Y) { $userUsername = $value; } if ($property->is_user_phone == Cms::BOOL_Y) { $userPhone = $value; } } //Нужно создать польозвателя if (\Yii::$app->user->isGuest) { if (!$userEmail) { throw new Exception(\skeeks\cms\shop\Module::t('app', 'Unknown email address user')); } $newUser = new SignupForm(); $newUser->scenario = SignupForm::SCENARION_ONLYEMAIL; $newUser->email = $userEmail; if (!($user = $newUser->signup())) { throw new Exception(\skeeks\cms\shop\Module::t('app', 'Do not create a user profile.')); } //Авторизация пользователя \Yii::$app->user->login($user, 0); } $modelBuyer->name = $modelBuyerName ? implode(", ", $modelBuyerName) : $shopPersonType->name . " от (" . \Yii::$app->formatter->asDate(time(), 'medium') . ")"; $modelBuyer->cms_user_id = \Yii::$app->user->identity->id; $modelBuyer->shop_person_type_id = $shopPersonType->id; if (!$modelBuyer->save()) { throw new Exception(\skeeks\cms\shop\Module::t('app', 'The data for the buyer are not saved.')); } $validateModel->save(); \Yii::$app->shop->shopFuser->buyer_id = $modelBuyer->id; \Yii::$app->shop->shopFuser->person_type_id = $modelBuyer->shopPersonType->id; \Yii::$app->shop->shopFuser->save(); $rr->success = true; $rr->message = \skeeks\cms\shop\Module::t('app', 'Successfully sent'); } else { throw new Exception(\skeeks\cms\shop\Module::t('app', 'Check the correctness of filling the form fields')); } } } } catch (\Exception $e) { $rr->success = false; $rr->message = $e->getMessage(); } return (array) $rr; }
/** * @return null|\skeeks\cms\models\User * @throws Exception */ protected function _createCmsUser() { $newUser = new SignupForm(); $newUser->scenario = SignupForm::SCENARION_ONLYEMAIL; $newUser->email = $this->email; if (!($user = $newUser->signup())) { throw new Exception(\Yii::t('skeeks/shop/app', 'Do not create a user profile.')); } $user->name = $this->name; $user->save(); return $user; }