src/EventSubscriber/EasyAdmin/EventLogSubscriber.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber\EasyAdmin;
  3. use App\Entity\Appointment;
  4. use App\Entity\EventLog;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  9. class EventLogSubscriber implements EventSubscriberInterface
  10. {
  11.     /**
  12.      * @var EntityManagerInterface
  13.      */
  14.     private $entityManager;
  15.     /**
  16.      * @var TokenStorageInterface
  17.      */
  18.     private $tokenStorage;
  19.     public function __construct(EntityManagerInterface $entityManagerTokenStorageInterface $tokenStorage)
  20.     {
  21.         $this->entityManager $entityManager;
  22.         $this->tokenStorage  $tokenStorage;
  23.     }
  24.     public static function getSubscribedEvents()
  25.     {
  26.         return [
  27.             AfterEntityUpdatedEvent::class => 'onAfterEntityUpdatedEvent',
  28.         ];
  29.     }
  30.     public function onAfterEntityUpdatedEvent(AfterEntityUpdatedEvent $event)
  31.     {
  32.         $entityInstance $event->getEntityInstance();
  33.         if ($entityInstance instanceof Appointment) {
  34.             $eventLog = new EventLog();
  35.             $eventLog->setAction(EventLog::APPOINTMENT_EDIT);
  36.             $eventLog->setUser($this->tokenStorage->getToken()->getUser());
  37.             $eventLog->setAppointment($entityInstance);
  38.             $this->entityManager->persist($eventLog);
  39.             $this->entityManager->flush();
  40.         }
  41.     }
  42. }