src/EventSubscriber/EasyAdminSubscriber.php line 49
<?phpnamespace App\EventSubscriber;use App\Entity\User;use Doctrine\ORM\EntityManagerInterface;use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use App\Services\Mails\Mails;use Psr\Log\LoggerInterface;class EasyAdminSubscriber implements EventSubscriberInterface{private ?bool $isActive = null;private EntityManagerInterface $em;private LoggerInterface $logger;public function __construct(EntityManagerInterface $em, Mails $mails, LoggerInterface $logger){$this->em = $em;$this->mails = $mails;$this->logger = $logger;}public static function getSubscribedEvents(): array{return [BeforeEntityUpdatedEvent::class => 'onBeforeEntityUpdated',AfterEntityUpdatedEvent::class => 'onAfterEntityUpdated',];}public function onBeforeEntityUpdated(BeforeEntityUpdatedEvent $event){$entity = $event->getEntityInstance();if ($entity instanceof User) {$uow = $this->em->getUnitOfWork();$originalData = $uow->getOriginalEntityData($entity);if (array_key_exists('isActive', $originalData)) {$this->isActive = $originalData['isActive'];}}}public function onAfterEntityUpdated(AfterEntityUpdatedEvent $event){$entity = $event->getEntityInstance();if ($entity instanceof User) {$newIsActive = $entity->isIsActive();if($newIsActive != $this->isActive){if($newIsActive == true){$this->sendActivationEmail($entity);}else{$this->sendDesactivationEmail($entity);}}}}private function sendActivationEmail(User $agent): void{try {$this->logger->info('Sending activation email to ' . $agent->getEmail());$email = $this->mails->createEmail('mails/agent/activate_agent.html.twig', ['agent' => ['firstName' => $agent->getFirstname(),'lastName' => $agent->getLastname()]])->to($agent->getEmail())->subject('Votre compte agent est activé');$this->mails->send($email);$this->logger->info('Activation email sent to ' . $agent->getEmail());} catch (\Exception $e) {$this->logger->error('Failed to send activation email: ' . $e->getMessage());}}private function sendDesactivationEmail(User $agent): void{try {$email = $this->mails->createEmail('mails/agent/desactivate_agent.html.twig', ['agent' => ['firstName' => $agent->getFirstname(),'lastName' => $agent->getLastname()]])->to($agent->getEmail())->subject('Votre compte agent a été désactivé');$this->mails->send($email);$this->logger->info('Deactivation email sent to ' . $agent->getEmail());} catch (\Exception $e) {$this->logger->error('Failed to send deactivation email: ' . $e->getMessage());}}}