예제 #1
0
 /**
  * @Route("/teacher/quiz/question/{question}", name="editQuestion")
  */
 public function editQuestionAction(Request $request, $question)
 {
     $em = $this->getDoctrine()->getManager();
     $question = $em->getRepository('AppBundle:Question')->find($question);
     $answers = $em->getRepository('AppBundle:Answer')->createQueryBuilder('a');
     $answers = $answers->where('a.question=' . $question->getId())->andWhere('a.enabled = 1')->getQuery()->getResult();
     $quiz = $question->getQuiz();
     $questions = $em->getRepository('AppBundle:Question')->findByQuiz($quiz);
     $image = $em->getRepository('AppBundle:QuestionImage')->findOneByQuestion($question);
     if ($image) {
         $image = $image->getWebPath();
     }
     $correct = $em->getRepository('AppBundle:Answer')->createQueryBuilder('c');
     $correct = $correct->where('c.points > 0')->andWhere('c.question=' . $question->getId())->andWhere('c.enabled = 1')->getQuery()->getResult();
     $answer = new Answer();
     $answer->setEnabled(1);
     $answer->setQuestion($question);
     $form = $this->get('form.factory')->createNamedBuilder('answer', FormType::class, $answer)->add('answer')->add('points')->add('save', SubmitType::class, array('label' => "Dodaj odpowiedź"))->getForm();
     $form->handleRequest($request);
     //		if($form->isValid()){
     //			if($answer->getPoints()>=1 && $correct){
     //				$this->addFlash('notice','W tym pytaniu istnieje już poprawna odpowiedź!');
     //				return $this->render('teacher/edit_question.html.twig', array(
     //					'question' => $question,
     //					'questions' => $questions,
     //					'quiz' => $quiz,
     //					'answers'=>$answers,
     //					'add_answer'=>$form->createView(),
     //					'add_question'=>$formq->createView(),
     //					'add_image'=>$formfile->createView(),
     //					'image'=>$image,
     //				));
     //			}
     //			$em->persist($answer);
     //			$em->flush();
     //			$answers = $em->getRepository('AppBundle:Answer')->findByQuestion($question);
     //		}
     $question_new = new Question();
     $formq = $this->get('form.factory')->createNamedBuilder('question', FormType::class, $question_new)->add('question', TextareaType::class)->add('save', SubmitType::class, array('label' => 'Dodaj'))->getForm();
     $formq->handleRequest($request);
     if ($formq->isValid()) {
         $question_new->setEnabled(1);
         $question_new->setQuiz($quiz);
         $em->persist($question_new);
         $em->flush();
         return $this->redirectToRoute('editQuestion', array('question' => $question_new->getId()));
     }
     $file = new QuestionImage();
     $formfile = $this->get('form.factory')->createNamedBuilder('image', FormType::class, $file)->add('file')->getForm();
     $file->setQuestion($question);
     if ($request->request->has('image')) {
         $formfile->handleRequest($request);
     }
     if ($formfile->isValid()) {
         $file->upload();
         $em->persist($file);
         $em->flush();
         $this->addFlash('notice', 'Pomyślnie dodano obrazek do pytania.');
     }
     if ($form->isValid()) {
         if ($answer->getPoints() >= 1 && $correct) {
             $this->addFlash('notice', 'W tym pytaniu istnieje już poprawna odpowiedź!');
             return $this->render('teacher/edit_question.html.twig', array('question' => $question, 'questions' => $questions, 'quiz' => $quiz, 'answers' => $answers, 'add_answer' => $form->createView(), 'add_question' => $formq->createView(), 'add_image' => $formfile->createView(), 'image' => $image));
         }
         $em->persist($answer);
         $em->flush();
         $answers = $em->getRepository('AppBundle:Answer')->createQueryBuilder('a');
         $answers = $answers->where('a.question=' . $question->getId())->andWhere('a.enabled = 1')->getQuery()->getResult();
     }
     return $this->render('teacher/edit_question.html.twig', array('question' => $question, 'questions' => $questions, 'quiz' => $quiz, 'answers' => $answers, 'add_answer' => $form->createView(), 'add_question' => $formq->createView(), 'add_image' => $formfile->createView(), 'image' => $image));
 }