src/EventSubscriber/CombiSubscriber.php line 80

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Combi;
  4. use App\Entity\Save;
  5. use App\Entity\CombiVariable;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Doctrine\Persistence\ManagerRegistry;
  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 EasyCorp\Bundle\EasyAdminBundle\Provider\AdminContextProvider;
  13. use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
  14. use Flasher\SweetAlert\Prime\SweetAlertFactory;
  15. use EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext;
  16. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  17. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\HttpFoundation\RedirectResponse;
  20. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  21. use Drupal\Core\Cache\CacheableRedirectResponse;
  22. use Symfony\Component\HttpKernel\Event\RequestEvent;
  23. use Symfony\Component\HttpKernel\KernelEvents;
  24. use App\Service\CombiCSVService;
  25. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  26. //use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
  27. class CombiSubscriber implements EventSubscriberInterface
  28. {
  29.     private $entityManager;
  30.     private ManagerRegistry $manager;
  31.     private CombiCSVService $csvService;
  32.     public function __construct(
  33.         CombiCSVService $csvService,
  34.         ManagerRegistry $manager,
  35.         EntityManagerInterface $entityManager,
  36.         TokenStorageInterface $tokenStorage
  37.     ) {
  38.         $this->csvService $csvService;
  39.         $this->manager $manager;
  40.         $this->entityManager $entityManager;
  41.         $this->tokenStorage $tokenStorage;
  42.     }
  43.     public static function getSubscribedEvents()
  44.     {
  45.         return [
  46.             AfterEntityPersistedEvent::class => ['afterAdd'],
  47.             AfterEntityUpdatedEvent::class => ['afterUpdate']
  48.         ];
  49.     }
  50.     //chaque combi possède un titre : interdit d'ajouter deux combis de mm titre dans le mm projet
  51.     public function afterAdd(AfterEntityPersistedEvent $event)
  52.     {
  53.         $entity $event->getEntityInstance();
  54.         if ($entity instanceof Combi) {
  55.             $combis $entity->getProjet()->getCombis();
  56.             $count 0;
  57.             foreach ($combis as $combi) {
  58.                 if (strtolower($combi->getTitle()) == strtolower($entity->getTitle())) {
  59.                     $count++;
  60.                 }
  61.             }
  62.             
  63.             if ($count 1) {
  64.                 $this->entityManager->remove($entity);
  65.             }
  66.             $this->entityManager->flush();
  67.         }
  68.     }
  69.     //export après chaque modification
  70.     public function afterUpdate(AfterEntityUpdatedEvent $event)
  71.     {
  72.         $entity $event->getEntityInstance();
  73.         if ($entity instanceof Combi) {
  74.             //$projet=$entity->getProjet()->getProjet();
  75.            $this->csvService->exportCombiVariable($entity);
  76.         }
  77.         if ($entity instanceof CombiVariable) {
  78.             //$projet=$entity->getProjet()->getProjet();
  79.            $this->csvService->exportCombiVariable($entity);
  80.         }
  81.     }
  82. }