src/EventSubscriber/CampaignSubscriber.php line 30

  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Campaign;
  4. use App\Entity\Creative;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityPersistedEvent;
  7. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  8. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class CampaignSubscriber implements EventSubscriberInterface
  11. {
  12.     public function __construct(private EntityManagerInterface $entityManager)
  13.     {
  14.     }
  15.     public function onAfterEntityPersistedEvent(AfterEntityPersistedEvent $event): void
  16.     {
  17.         $campaign $event->getEntityInstance();
  18.         if (!$campaign instanceof Campaign) {
  19.             return;
  20.         }
  21.         $campaign->setUrlHash(md5($campaign->getCreative()->getId() . '' $campaign->getId()));
  22.         $this->entityManager->persist($campaign);
  23.         $this->entityManager->flush();
  24.     }
  25.     public function onBeforeEntityUpdatedEvent(BeforeEntityUpdatedEvent $event): void
  26.     {
  27.         $campaign $event->getEntityInstance();
  28.         if (!$campaign instanceof Campaign) {
  29.             return;
  30.         }
  31.         $campaign->setUrlHash(md5($campaign->getCreative()->getId() . '' $campaign->getId()));
  32.     }
  33.     public static function getSubscribedEvents(): array
  34.     {
  35.         return [
  36.             BeforeEntityUpdatedEvent::class   => 'onBeforeEntityUpdatedEvent',
  37.             AfterEntityPersistedEvent::class  => 'onAfterEntityPersistedEvent',
  38.         ];
  39.     }
  40. }