/**
* Процесс отправки формы
* @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;
}