render('backoffice/season.html.twig', [ 'season' => $season, ]); } #[Route('/backoffice/season/{seasonCode}/add_candidate', name: 'app_backoffice_add_candidates', priority: 10)] #[IsGranted(SeasonVoter::EDIT, subject: 'season')] public function addCandidates(Season $season, Request $request): Response { $form = $this->createForm(AddCandidatesFormType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $candidates = $form->get('candidates')->getData(); foreach (explode("\r\n", (string) $candidates) as $candidate) { $season->addCandidate(new Candidate($candidate)); } $this->em->flush(); return $this->redirectToRoute('app_backoffice_season', ['seasonCode' => $season->getSeasonCode()]); } return $this->render('backoffice/season_add_candidates.html.twig', ['form' => $form]); } #[Route('/backoffice/season/{seasonCode}/add', name: 'app_backoffice_quiz_add', priority: 10)] #[IsGranted(SeasonVoter::EDIT, subject: 'season')] public function addQuiz(Request $request, Season $season, QuizSpreadsheetService $quizSpreadsheet): Response { $quiz = new Quiz(); $form = $this->createForm(UploadQuizFormType::class, $quiz); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { /* @var UploadedFile $sheet */ $sheet = $form->get('sheet')->getData(); $quizSpreadsheet->xlsxToQuiz($quiz, $sheet); $quiz->setSeason($season); $this->em->persist($quiz); $this->em->flush(); $this->addFlash(FlashType::Success, $this->translator->trans('Quiz Added!')); return $this->redirectToRoute('app_backoffice_season', ['seasonCode' => $season->getSeasonCode()]); } return $this->render('/backoffice/quiz_add.html.twig', ['form' => $form, 'season' => $season]); } }