PeriodController.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace App\Controller\Admin\EventConfig;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Requirement\Requirement;
  7. use Symfony\Component\Routing\Attribute\Route;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use App\Entity\Event;
  10. use App\Entity\Period;
  11. use App\Form\PeriodType;
  12. use App\Repository\PeriodRepository;
  13. final class PeriodController extends AbstractController
  14. {
  15. #[Route('/admin/event/{id}/configure/period', name: 'app_admin_event_config_period', requirements: ['id' => Requirement::UUID_V7], methods: ['GET', 'POST'])]
  16. public function index(?Event $event, Request $request, EntityManagerInterface $manager, PeriodRepository $repository): Response
  17. {
  18. $period = new Period();
  19. $period->setEvent($event);
  20. $form = $this->createForm(PeriodType::class, $period);
  21. $form->handleRequest($request);
  22. if ($form->isSubmitted() && $form->isValid()) {
  23. $manager->persist($period);
  24. $manager->flush();
  25. return $this->redirectToRoute('app_admin_event_config_period', ['id' => $event->getId()]);
  26. }
  27. return $this->render('admin/event/config/period.html.twig', [
  28. 'event' => $event,
  29. 'form' => $form,
  30. ]);
  31. }
  32. #[Route('/admin/period/{id}/delete', name: 'app_admin_period_delete', requirements: ['id' => '\d+'], methods: ['GET'])]
  33. public function delete(?Period $period, EntityManagerInterface $manager): Response
  34. {
  35. $event = $period->getEvent();
  36. if ($period->isLocked()) {
  37. $this->addFlash('danger', 'Cette période est utilisée dans les slots ! Supprimez les slots avant de supprimer la période !');
  38. } else {
  39. $manager->remove($period);
  40. $manager->flush();
  41. }
  42. return $this->redirectToRoute('app_admin_event_config_period', ['id' => $event->getId()]);
  43. }
  44. }