public function actionFeedback()
 {
     $form = new FeedbackForm('insert');
     $formName = get_class($form);
     $this->performAjaxValidation($form);
     // проверить не передан ли тип и присвоить его аттрибуту модели
     $module = Yii::app()->getModule('feedback');
     if (Yii::app()->getRequest()->getIsPostRequest() && !empty($_POST[$formName])) {
         $form->setAttributes(Yii::app()->getRequest()->getPost($formName));
         if ($form->validate()) {
             // обработка запроса
             $feedback = new Feedback();
             $feedback->setAttributes($form->getAttributes());
             if ($feedback->save()) {
                 Yii::app()->eventManager->fire(FeedbackEvents::SUCCESS_SEND_MESSAGE, new SendFeedbackMessageEvent($feedback));
                 if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                     Yii::app()->ajax->success(Yii::t('FeedbackModule.feedback', 'Your message sent! Thanks!'));
                 }
                 Yii::app()->getUser()->setFlash(YFlashMessages::SUCCESS_MESSAGE, Yii::t('FeedbackModule.feedback', 'Your message sent! Thanks!'));
                 $this->redirect($module->successPage ? [$module->successPage] : ['/feedback/contact/index/']);
             } else {
                 if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                     Yii::app()->ajax->failure(Yii::t('FeedbackModule.feedback', 'It is not possible to send message!'));
                 }
                 Yii::app()->user->setFlash(YFlashMessages::ERROR_MESSAGE, Yii::t('FeedbackModule.feedback', 'It is not possible to send message!'));
             }
         } else {
             if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                 Yii::app()->ajax->rawText(CActiveForm::validate($form));
             }
         }
     }
     $this->render('index', ['model' => $form, 'module' => $module]);
 }
Exemple #2
0
 public function addFeedback($attr)
 {
     if (is_array($attr)) {
         $model = new Feedback();
         $model->created_at = time();
         $model->updated_at = time();
         $model->setAttributes($attr);
         if ($model->save(FALSE)) {
             return $model;
         }
     }
     return FALSE;
 }
 /**
  * Сохраняем данные в СУБД, при наявности POST-запросаЖ
  * 
  * @param AnswerForm $form  - форма ответа
  * @param Feedback   $model - модель
  * 
  * @return mixed
  */
 public function saveAnswer(AnswerForm $form, Feedback $model)
 {
     if (Yii::app()->getRequest()->getIsPostRequest() && ($data = Yii::app()->getRequest()->getPost('AnswerForm')) !== null) {
         $form->setAttributes($data);
         if ($form->validate()) {
             $model->setAttributes(array('answer' => $form->answer, 'status' => Feedback::STATUS_FINISHED));
             if ($model->save(true, array('answer', 'status'))) {
                 //отправка ответа
                 $mail = Yii::createComponent('yupe\\components\\Mail');
                 $body = $this->renderPartial('answerEmail', array('model' => $model), true);
                 $mail->send(Yii::app()->getModule('feedback')->notifyEmailFrom, $model->email, 'RE: ' . $model->theme, $body, Yii::app()->getModule('yupe')->siteName);
                 Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('FeedbackModule.feedback', 'Reply on message was sent!'));
                 $this->redirect($this->createUrl('view', array('id' => $model->id)));
             } else {
                 return array($form, $model);
             }
         }
     }
     return array($form, $model);
 }
 /**
  * Обратный звонок
  */
 public function actionFeedback()
 {
     $form = new FeedbackForm('insert');
     $formName = get_class($form);
     $this->performAjaxValidation($form);
     if (Yii::app()->getRequest()->getIsPostRequest() && !empty($_POST[$formName])) {
         $form->setAttributes($_POST[$formName]);
         // Проверка
         if ($form->validate()) {
             $feedback = new Feedback();
             $feedback->setAttributes($form->getAttributes());
             //var_dump($feedback->getAttributes());
             //exit();
             // Сохранение
             if ($feedback->save()) {
                 // Отправка уведомления
                 $this->_feedbackConfirmationEmail($feedback);
                 if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                     Yii::app()->ajax->success(Yii::t('FeedbackModule.feedback', 'Ваше сообщение отправлено. Спасибо!'));
                 } else {
                     Yii::app()->getUser()->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('FeedbackModule.feedback', 'Ваше сообщение отправлено. Спасибо!'));
                 }
                 // Обновляем страницу
                 $this->refresh();
             } else {
                 // Ошибка сохранения
                 if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                     Yii::app()->ajax->failure(Yii::t('FeedbackModule.feedback', 'There is an error when trying to send message! Please try later!'));
                 } else {
                     Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, Yii::t('FeedbackModule.feedback', 'There is an error when trying to send message! Please try later!'));
                 }
             }
         } else {
             if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                 echo CActiveForm::validate($form);
                 Yii::app()->end();
             }
         }
     }
     $this->render('feedback', array('model' => $form));
 }
 /**
  * Сохраняем данные в СУБД, при наявности POST-запроса
  *
  * @param AnswerForm $form - форма ответа
  * @param Feedback $model - модель
  *
  * @return mixed
  */
 public function saveAnswer(AnswerForm $form, Feedback $model)
 {
     if (Yii::app()->getRequest()->getIsPostRequest() && ($data = Yii::app()->getRequest()->getPost('AnswerForm')) !== null) {
         $form->setAttributes($data);
         if ($form->validate()) {
             $model->setAttributes(['answer' => $form->answer, 'answer_user' => Yii::app()->user->getId(), 'answer_time' => new CDbExpression('NOW()'), 'status' => Feedback::STATUS_ANSWER_SENDED]);
             if ($model->save()) {
                 //отправка ответа
                 $body = $this->renderPartial('answerEmail', ['model' => $model], true);
                 Yii::app()->mail->send(Yii::app()->getModule('feedback')->notifyEmailFrom, $model->email, 'RE: ' . $model->theme, $body);
                 if (Yii::app()->getRequest()->getIsAjaxRequest() == false) {
                     Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('FeedbackModule.feedback', 'Reply on message was sent!'));
                     $this->redirect(['/feedback/feedbackBackend/view/', 'id' => $model->id]);
                 } else {
                     Yii::app()->ajax->success(['message' => Yii::t('FeedbackModule.feedback', 'Reply on message was sent!')]);
                     return true;
                 }
             } else {
                 return [$form, $model];
             }
         }
     }
     return [$form, $model];
 }
 /**
  * Отправление подтверждения пользователю и уведомления админу
  * @param DictionaryData $type
  * @return FeedbackForm $feedbackForm
  */
 protected function _processForm($type)
 {
     if ($type->id == Feedback::TYPE_CALLBACK) {
         $feedbackForm = new CallbackForm('insert');
     } elseif ($type->id == Feedback::TYPE_ORDER) {
         $feedbackForm = new OrderForm('insert');
     } elseif ($type->id == Feedback::TYPE_REVIEW) {
         $feedbackForm = new ReviewForm('insert');
     } else {
         $feedbackForm = new FeedbackForm('insert');
     }
     $formName = get_class($feedbackForm);
     $this->performAjaxValidation($feedbackForm);
     if (Yii::app()->getRequest()->getIsPostRequest() && !empty($_POST[$formName])) {
         $feedbackForm->setAttributes($_POST[$formName]);
         // Проверка
         if ($feedbackForm->validate()) {
             $feedback = new Feedback();
             $feedback->type_id = $type->id;
             $feedback->type = $type;
             $feedback->setAttributes($feedbackForm->getAttributes());
             if ($type->id == Feedback::TYPE_ORDER && isset($_POST['productId']) && !empty($_POST['productId'])) {
                 Yii::import("application.modules.catalog.models.Product");
                 $product = Product::model()->findByPk((int) $_POST['productId']);
                 if (is_null($product)) {
                     throw new CHttpException('404');
                 }
                 $feedback->theme = 'Заявка на товар "' . $product->title . '"';
                 $feedback->text = '<p>Ссылка на товар: ' . CHtml::link($product->title, $product->getPermaLink()) . '</p>';
             }
             // Сохранение
             if ($feedback->save()) {
                 // Отправка уведомлений
                 if (Yii::app()->getModule('feedback')->sendConfirmation) {
                     $this->_feedbackConfirmationEmail($feedback);
                 }
                 $successMessage = $type->id == Feedback::TYPE_ORDER ? 'Ваше сообщение отправлено! Спасибо! В ближайшее время наши менеджеры свяжутся с Вами!' : 'Ваше сообщение отправлено! Спасибо!';
                 if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                     Yii::app()->ajax->success($successMessage);
                 } else {
                     Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, $successMessage);
                 }
             } else {
                 // Ошибка сохранения
                 if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                     Yii::app()->ajax->failure(Yii::t('FeedbackModule.feedback', 'There is an error when trying to send message! Please try later!'));
                 } else {
                     Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, Yii::t('FeedbackModule.feedback', 'There is an error when trying to send message! Please try later!'));
                 }
             }
             // Обновляем страницу
             $this->refresh();
         } else {
             // Ошибка валидации
             if (Yii::app()->getRequest()->getIsAjaxRequest()) {
                 Yii::app()->ajax->failure('Пожалуйста, проверьте правильность заполнения формы');
             }
         }
     }
     return $feedbackForm;
 }
 /**
  * Manages FAQ.
  *
  * @return void
  */
 public function actionFaq()
 {
     $model = new Feedback('search');
     $model->unsetAttributes();
     // clear any default values
     $model->setAttributes(Yii::app()->getRequest()->getParam('Feedback', array()));
     // Фильтрация по типу сообщения (отзывы)
     $type = DictionaryData::model()->findByCode('feedback-faq');
     if ($type === null) {
         $this->redirect($this->createUrl('/backend'));
     }
     $model->type_id = $type->id;
     Yii::app()->user->setState('prevUrl', Yii::app()->request->url);
     $this->render('index', array('model' => $model));
 }