コード例 #1
0
ファイル: UserController.php プロジェクト: Quiss/Evrika
 /**
  * Обрабатывает форму опроса
  *
  * @Route("/submit-survey/{surveyId}", name = "submit_survey", requirements = {"surveyId" = "\d+"})
  * @Secure(roles = "IS_AUTHENTICATED_REMEMBERED")
  */
 public function submitSurveyAction($surveyId)
 {
     $em = $this->getDoctrine()->getManager();
     $completed = $em->getRepository('EvrikaMainBundle:Poll')->didUserAnswer($this->getUser(), $surveyId);
     if (!$completed) {
         $answersArray = $this->getRequest()->request->get('survey');
         $survey = $em->find('EvrikaMainBundle:Poll', $surveyId);
         $questions = $survey->getQuestions();
         $gotAllAnswers = true;
         foreach ($questions as $question) {
             $answer = new PollAnswer();
             if (isset($answersArray[$question->getId()])) {
                 foreach ($question->getChoices() as $choice) {
                     if ($answersArray[$question->getId()] == $choice->getId()) {
                         if ($choice->isCustomTextAllowed()) {
                             if (!empty($answersArray['custom_text_' . $choice->getId()])) {
                                 $answer->setCustomText($answersArray['custom_text_' . $choice->getId()]);
                             } else {
                                 $gotAllAnswers = false;
                             }
                         }
                         $answer->setChoice($choice);
                         break;
                     }
                 }
             } else {
                 $gotAllAnswers = false;
             }
             if (!$gotAllAnswers) {
                 return $this->render('EvrikaMainBundle:User:survey.html.twig', array('survey' => $survey, 'answersArray' => $answersArray, 'error' => 'Пожалуйста, ответьте на все вопросы'));
             }
             $answer->setUser($this->getUser());
             $answer->setPoll($survey);
             $answer->setQuestion($question);
             $em->persist($answer);
         }
         $em->flush();
     }
     return $this->redirect($this->generateUrl('survey', array('surveyId' => $surveyId)));
 }