/** * Shows the given survey. * @param Request $request * @param Survey $survey * @return \Symfony\Component\HttpFoundation\Response */ public function showAction(Request $request, Survey $survey) { $surveyTaken = new SurveyTaken(); $surveyTaken->setSurvey($survey); foreach ($survey->getSurveyQuestions() as $surveyQuestion) { $answer = new SurveyAnswer(); $answer->setSurveyQuestion($surveyQuestion); $answer->setSurveyTaken($surveyTaken); $surveyTaken->addSurveyAnswer($answer); } $form = $this->createForm(new SurveyExecuteType(), $surveyTaken); $form->handleRequest($request); if ($form->isValid()) { $surveyTaken->removeNullAnswers(); $em = $this->getDoctrine()->getEntityManager(); $em->persist($surveyTaken); $em->flush(); $new_answer = true; if ($new_answer) { $this->addFlash('undersokelse-notice', 'Tusen takk for ditt svar!'); //New form without previous answers return $this->redirect($this->generateUrl('survey_show', array('id' => $survey->getId()))); } } return $this->render('survey/takeSurvey.html.twig', array('form' => $form->createView())); }
public function showAdminAction(Request $request, Survey $survey) { $em = $this->getDoctrine()->getEntityManager(); $surveyTaken = new SurveyTaken(); $surveyTaken->setSurvey($survey); foreach ($survey->getSurveyQuestions() as $surveyQuestion) { $answer = new SurveyAnswer(); $answer->setSurveyQuestion($surveyQuestion); $answer->setSurveyTaken($surveyTaken); $surveyTaken->addSurveyAnswer($answer); } $form = $this->createForm(new SurveyExecuteType(), $surveyTaken); $form->handleRequest($request); if ($form->isValid()) { $surveyTaken->removeNullAnswers(); $em->persist($surveyTaken); $em->flush(); $new_answer = true; if ($new_answer) { $this->addFlash('undersokelse-notice', 'Mottatt svar!'); //New form without previous answers return $this->redirect($this->generateUrl('survey_show_admin', array('id' => $survey->getId()))); } } $allTakenSurveys = $em->getRepository('AppBundle:SurveyTaken')->findAllTakenBySurvey($survey); if (count($allTakenSurveys)) { $countAnswer = array(); foreach ($allTakenSurveys as $takenSurvey) { foreach ($takenSurvey->getSurveyAnswers() as $answer) { if (!($answer->getSurveyQuestion()->getType() == 'radio' || $answer->getSurveyQuestion()->getType() == 'list') || $answer->getSurveyQuestion()->getOptional()) { continue; } if (!isset($countAnswer[$answer->getSurveyQuestion()->getId()])) { $countAnswer[$answer->getSurveyQuestion()->getId()] = array(); } if (!isset($countAnswer[$answer->getSurveyQuestion()->getId()][$answer->getAnswer()])) { $countAnswer[$answer->getSurveyQuestion()->getId()][$answer->getAnswer()] = 0; } $countAnswer[$answer->getSurveyQuestion()->getId()][$answer->getAnswer()]++; } } foreach ($surveyTaken->getSurveyAnswers() as $answer) { if (!($answer->getSurveyQuestion()->getType() == 'radio' || $answer->getSurveyQuestion()->getType() == 'list') || $answer->getSurveyQuestion()->getOptional()) { continue; } $answer->setAnswer(array_keys($countAnswer[$answer->getSurveyQuestion()->getId()], max($countAnswer[$answer->getSurveyQuestion()->getId()]))[0]); } $surveyTaken->setSchool($em->getRepository('AppBundle:SurveyTaken')->findBy(array('survey' => $survey), array('id' => 'DESC'), 1)[0]->getSchool()); $form = $this->createForm(new SurveyExecuteType(), $surveyTaken); } return $this->render('survey/takeSurvey.html.twig', array('form' => $form->createView())); }
/** * @param Request $request * @return \Symfony\Component\HttpFoundation\Response * @Route("/new", name="admin_survey_new") */ public function newAction(Request $request) { $survey = new Survey(); $em = $this->getDoctrine()->getManager(); $form = $this->createForm(SurveyType::class, $survey); $form->handleRequest($request); if ($form->isValid()) { for ($i = 1; $i <= 5; $i++) { $formAnswer = $form['answer' . $i]->getData(); if ($formAnswer != "") { $answer = new SurveyAnswer(); $answer->setAnswer($formAnswer); $answer->setCount(0); $answer->setSurvey($survey); $em->persist($answer); } } $em->persist($survey); $em->flush(); return $this->redirectToRoute('admin_survey_index'); } return $this->render('@App/Admin/Survey/new.html.twig', ['form' => $form->createView()]); }
/** * @param SurveyAnswer $answer * @return \Symfony\Component\Form\Form */ private function createAnswerForm($answer) { return $this->createFormBuilder()->setAction($this->generateUrl('survey_result', ['id' => $answer->getId()]))->setMethod('POST')->add('submit', SubmitType::class, ['label' => $answer->getanswer(), 'attr' => ['class' => 'btn btn-sm btn-success']])->getForm(); }