/** * Обрабатывает форму опроса * * @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))); }