src/Controller/SequenceController.php line 117

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Evaluation;
  4. use App\Entity\Sequence;
  5. use App\Form\SequenceType;
  6. use App\Repository\SequenceRepository;
  7. use App\Repository\SchoolYearRepository;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Knp\Component\Pager\PaginatorInterface;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  14. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  15. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  16. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  17. use App\Service\SchoolYearService;
  18. /**
  19. * Sequence controller.
  20. *
  21. * @Route("/admin/sequences")
  22. */
  23. class SequenceController extends AbstractController
  24. {
  25. private EntityManagerInterface $em;
  26. private SchoolYearRepository $scRepo;
  27. private SequenceRepository $repo;
  28. private SchoolYearService $schoolYearService;
  29. public function __construct(SchoolYearService $schoolYearService,EntityManagerInterface $em, SchoolYearRepository $scRepo, SequenceRepository $repo)
  30. {
  31. $this->em = $em;
  32. $this->repo = $repo;
  33. $this->scRepo = $scRepo;
  34. $this->schoolYearService = $schoolYearService;
  35. }
  36. /**
  37. * Lists all Sequenceme entities.
  38. *
  39. * @Route("/", name="admin_sequences")
  40. * @Method("GET")
  41. * @Template()
  42. */
  43. public function indexAction()
  44. {
  45. $year = $this->schoolYearService->sessionYearById();
  46. $sequences = $this->repo->findSequenceThisYear($year);
  47. return $this->render('sequence/index.html.twig', compact("sequences"));
  48. }
  49. /**
  50. * Finds and displays a Sequenceme entity.
  51. *
  52. * @Route("/{id}/show", name="admin_sequences_show", requirements={"id"="\d+"})
  53. * @Method("GET")
  54. * @Template()
  55. */
  56. public function showAction(Sequence $sequence, Request $request, PaginatorInterface $paginator)
  57. {
  58. $evaluations = $paginator->paginate($sequence->getEvaluations(), $request->query->get('page', 1), Evaluation::NUM_ITEMS_PER_PAGE);
  59. $evaluations->setCustomParameters([
  60. 'position' => 'centered',
  61. 'size' => 'large',
  62. 'rounded' => true,
  63. ]);
  64. return $this->render('sequence/show.html.twig', ['pagination' => $evaluations, 'sequence' => $sequence]);
  65. }
  66. /**
  67. * @Route("/create",name= "admin_sequences_new", methods={"GET","POST"})
  68. */
  69. public function create(Request $request, SequenceRepository $sequenceRepository): Response
  70. {
  71. $schoolyear = new Sequence();
  72. $form = $this->createForm(SequenceType::class, $schoolyear);
  73. $form->handleRequest($request);
  74. if ($form->isSubmitted() && $form->isValid()) {
  75. $em = $this->getDoctrine()->getManager();
  76. // Désactiver toutes les séquences existantes pour cette année scolaire
  77. $allSequences = $sequenceRepository->findAll();
  78. foreach ($allSequences as $sequence) {
  79. $sequence->setActivated(false);
  80. $em->persist($sequence);
  81. }
  82. // Activer la séquence créée
  83. $schoolyear->setActivated(true);
  84. $em->persist($schoolyear);
  85. $em->flush();
  86. $this->addFlash('success', 'Sequence successfully created');
  87. return $this->redirectToRoute('admin_sequences');
  88. }
  89. return $this->render(
  90. 'sequence/new.html.twig',
  91. ['form' => $form->createView()]
  92. );
  93. }
  94. /**
  95. * Displays a form to edit an existing Sequenceme entity.
  96. *
  97. * @Route("/{id}/edt", name="admin_sequences_edit", requirements={"id"="\d+"}, methods={"GET","PUT"})
  98. * @Template()
  99. */
  100. public function edit(Request $request, Sequence $sequence, SequenceRepository $sequenceRepository): Response
  101. {
  102. $form = $this->createForm(SequenceType::class, $sequence, [
  103. 'method' => 'GET',
  104. ]);
  105. $form->handleRequest($request);
  106. if ($form->isSubmitted() && $form->isValid()) {
  107. $em = $this->getDoctrine()->getManager();
  108. if ($sequence->getActivated()) {
  109. $allSequences = $sequenceRepository->findAll();
  110. foreach ($allSequences as $seq) {
  111. if (($seq->getId() != $sequence->getId()) && ($seq->getActivated())) {
  112. $seq->setActivated(false);
  113. $em->persist($seq);
  114. }
  115. }
  116. }
  117. $em->flush();
  118. $this->addFlash('success', 'Sequence successfully updated');
  119. return $this->redirectToRoute('admin_sequences');
  120. }
  121. return $this->render('sequence/edit.html.twig', [
  122. 'sequence' => $sequence,
  123. 'form' => $form->createView()
  124. ]);
  125. }
  126. /**
  127. * Deletes a Sequence entity.
  128. *
  129. * @Route("/{id}/delete", name="admin_sequences_delete", requirements={"id"="\d+"}, methods={"DELETE"})
  130. */
  131. public function delete(Sequence $seq, Request $request): Response
  132. {
  133. if ($this->isCsrfTokenValid('sequences_deletion' . $seq->getId(), $request->request->get('csrf_token'))) {
  134. $this->em->remove($seq);
  135. $this->em->flush();
  136. $this->addFlash('info', 'Sequence succesfully deleted');
  137. }
  138. return $this->redirectToRoute('admin_sequences');
  139. }
  140. }