src/EventSubscriber/EasyAdminSubscriber.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\CerfaData;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use App\Entity\User;
  6. use App\Event\WorklogEvent;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  9. use Symfony\Component\HttpFoundation\RequestStack;
  10. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  11. use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
  12. class EasyAdminSubscriber implements EventSubscriberInterface
  13. {
  14.     protected $entityManager;
  15.     protected $kernelRootDir;
  16.     private $tokenStorage;
  17.     public function __construct(
  18.         EntityManagerInterface $entityManager,
  19.         TokenStorageInterface $tokenStorage,
  20.         private RequestStack $requestStack,
  21.         private EventDispatcherInterface $dispatcher,
  22.     ) {
  23.         $this->entityManager=$entityManager;
  24.         $this->tokenStorage $tokenStorage;
  25.     }
  26.     public static function getSubscribedEvents()
  27.     {
  28.         return array(
  29.             BeforeEntityUpdatedEvent::class => ['preUpdateEvent'],
  30.         );
  31.     }
  32.     public function preUpdateEvent(BeforeEntityUpdatedEvent $event){
  33.         /** @var User $user */
  34.         $user $this->tokenStorage->getToken()->getUser();
  35.         $entity $event->getEntityInstance();
  36.         if($entity instanceof CerfaData){
  37.             $cntrlBlock $entity->getBlockUpdate();
  38.             $cntrlUser $entity->getBlockUser();
  39.     
  40.             $vehicle $entity->getVehicle();
  41.     
  42.             $msg '';
  43.     
  44.             if( $cntrlBlock === true && $cntrlUser === null){
  45.                 $entity->setBlockUser($user);
  46.                 $msg 'LOCKED';
  47.             } else if( $cntrlBlock === false && $cntrlUser !== null) {
  48.                 $entity->setBlockUser();
  49.                 $msg 'UNLOCKED';
  50.             }
  51.             $event = new WorklogEvent($vehicle"3en1 edited $msg");
  52.             $this->dispatcher->dispatch($event,'iris.worklog');
  53.         }
  54.     }
  55. }