security->isGranted('ROLE_ADMIN') ? $this->seasonRepository->findAll() : $this->seasonRepository->getSeasonsForUser($this->authenticatedUser); return $this->render('backoffice/index.html.twig', [ 'seasons' => $seasons, ]); } #[Route('/backoffice/season/add', name: 'tvdt_backoffice_season_add', priority: 10)] public function addSeason(Request $request): Response { $season = new Season(); $form = $this->createForm(CreateSeasonFormType::class, $season); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $season->addOwner($this->authenticatedUser); $season->generateSeasonCode(); $this->em->persist($season); $this->em->flush(); return $this->redirectToRoute('tvdt_backoffice_season', ['seasonCode' => $season->seasonCode]); } return $this->render('backoffice/season_add.html.twig', ['form' => $form]); } #[Route('/backoffice/template', name: 'tvdt_backoffice_template', priority: 10)] public function getTemplate(): StreamedResponse { $response = new StreamedResponse($this->excel->generateTemplate()); $response->headers->set('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); $response->headers->set('Content-Disposition', 'attachment; filename="template.xlsx"'); return $response; } #[IsGranted(SeasonVoter::EDIT, subject: 'quiz')] #[Route( '/backoffice/quiz/{quiz}/export', name: 'tvdt_backoffice_quiz_export', requirements: ['quiz' => Requirement::UUID], methods: ['GET'], )] public function exportQuiz(Quiz $quiz): Response { if (!$this->authenticatedUser->isVerified) { $this->addFlash(FlashType::Warning, $this->translator->trans('Please confirm your email address before exporting a quiz.')); return $this->redirectToRoute('tvdt_backoffice_season', ['seasonCode' => $quiz->season->seasonCode]); } $response = new StreamedResponse($this->excel->quizToXlsx($quiz)); $response->headers->set('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); $response->headers->set('Content-Disposition', HeaderUtils::makeDisposition(HeaderUtils::DISPOSITION_ATTACHMENT, FilenameSanitizer::sanitize($quiz->name).'.xlsx')); return $response; } }