src/EventSubscriber/ProjectSubscriber.php line 97

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\FormulaireInput;
  4. use App\Entity\Projet;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityDeletedEvent;
  8. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityPersistedEvent;
  9. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;
  10. use Psr\Log\LoggerInterface;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  13. class ProjectSubscriber implements EventSubscriberInterface
  14. {
  15.     private $entityManager;
  16.     private ManagerRegistry $manager;
  17.     private SessionInterface $session;
  18.     public function __construct(
  19.         ManagerRegistry $manager,
  20.         EntityManagerInterface $entityManager,
  21.         LoggerInterface $logger,
  22.         SessionInterface $session
  23.     ) {
  24.         $this->manager $manager;
  25.         $this->entityManager $entityManager;
  26.         $this->session $session;
  27.         $this->logger $logger;
  28.     }
  29.     public static function getSubscribedEvents()
  30.     {
  31.         return [
  32.             AfterEntityPersistedEvent::class => ['afterAdd'],
  33.             AfterEntityUpdatedEvent::class => ['afterUpdate'],
  34.             AfterEntityDeletedEvent::class => ['afterDelete'],
  35.         ];
  36.     }
  37.     public function afterAdd(AfterEntityPersistedEvent $event)
  38.     {
  39.         $entity $event->getEntityInstance();
  40.         if ($entity instanceof Projet) {
  41.             $inputtext = new FormulaireInput();
  42.             $inputtext->setType('text');
  43.             $inputtext->setProjet($entity);
  44.             $this->entityManager->persist($inputtext);
  45.             $inputnumber = new FormulaireInput();
  46.             $inputnumber->setType('number');
  47.             $inputnumber->setProjet($entity);
  48.             $this->entityManager->persist($inputnumber);
  49.             $inputtel = new FormulaireInput();
  50.             $inputtel->setType('tel');
  51.             $inputtel->setProjet($entity);
  52.             $this->entityManager->persist($inputtel);
  53.             $inputemail = new FormulaireInput();
  54.             $inputemail->setType('email');
  55.             $inputemail->setProjet($entity);
  56.             $this->entityManager->persist($inputemail);
  57.             $inputtextarea = new FormulaireInput();
  58.             $inputtextarea->setType('textarea');
  59.             $inputtextarea->setProjet($entity);
  60.             $this->entityManager->persist($inputtextarea);
  61.             $inputradio = new FormulaireInput();
  62.             $inputradio->setType('radio');
  63.             $inputradio->setProjet($entity);
  64.             $this->entityManager->persist($inputradio);
  65.             $inputcheckbox = new FormulaireInput();
  66.             $inputcheckbox->setType('checkbox');
  67.             $inputcheckbox->setProjet($entity);
  68.             $this->entityManager->persist($inputcheckbox);
  69.             $inputlist = new FormulaireInput();
  70.             $inputlist->setType('list');
  71.             $inputlist->setProjet($entity);
  72.             $this->entityManager->persist($inputlist);
  73.             $this->session->getFlashBag()->add('flash', ['label' => 'success''title' => 'Succès''message' => 'Le projet a été crée avec succès']);
  74.         } else {
  75.             return;
  76.         }
  77.     }
  78.     public function afterUpdate(AfterEntityUpdatedEvent $event): void
  79.     {
  80.         $this->session->getFlashBag()->add('flash', ['label' => 'success''title' => 'Succès''message' => 'Le projet a été modifié avec succès']);
  81.     }
  82.     public function afterDelete(AfterEntityDeletedEvent $event): void
  83.     {
  84.         $this->session->getFlashBag()->add('flash', ['label' => 'success''title' => 'Succès''message' => 'Le projet a été supprimé avec succès']);
  85.     }
  86. }