src/EventSubscriber/ApiGeneratorSubscriber.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\DeathNoticeWishes;
  4. use App\Entity\Security\User;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Eckinox\RestApiBundle\Event\ApiGeneratorEvent;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\Mailer\MailerInterface;
  9. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  10. use Symfony\Component\Mime\Address;
  11. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  12. use Symfony\Contracts\Translation\TranslatorInterface;
  13. class ApiGeneratorSubscriber implements EventSubscriberInterface
  14. {
  15.     public function __construct(
  16.         private MailerInterface $mailer,
  17.         private ParameterBagInterface $parameters,
  18.         private TranslatorInterface $translator,
  19.         private EntityManagerInterface $entityManager
  20.     ) {}
  21.     
  22.     public static function getSubscribedEvents(): array
  23.     {
  24.         return [
  25.             ApiGeneratorEvent::CREATED_ERROR => 'onCreateError',
  26.             ApiGeneratorEvent::CREATED_SUCCESS => 'onCreateSuccess',
  27.         ];
  28.     }
  29.     public function onCreateError(ApiGeneratorEvent $event): void
  30.     {
  31.         return;
  32.     }
  33.     public function onCreateSuccess(ApiGeneratorEvent $event): void
  34.     {
  35.         $data $event->getData();
  36.         $entityClass $event->getEntityClass();
  37.         if ($entityClass == DeathNoticeWishes::class) {
  38.             // Vistor email
  39.             $email = (new TemplatedEmail())
  40.                 ->from(new Address($this->parameters->get('eckinox_security.sender_email'), $this->parameters->get('eckinox_security.sender_name')))
  41.                 ->to($data['email'])
  42.                 ->subject($this->translator->trans('death_notice_wishes.messages.your_wishes_has_been_receive'))
  43.                 ->embedFromPath('img/logo-email.png''logo')
  44.                 ->htmlTemplate('/email/wishes_received.html.twig')
  45.             ;
  46.             $this->mailer->send($email);
  47.             // Admin email
  48.             $emailAdmin = (new TemplatedEmail())
  49.                 ->from(new Address($this->parameters->get('eckinox_security.sender_email'), $this->parameters->get('eckinox_security.sender_name')))
  50.                 ->subject($this->translator->trans('death_notice_wishes.messages.one_wish_need_approbation_title'))
  51.                 ->embedFromPath('img/logo-email.png''logo')
  52.                 ->htmlTemplate('/email/wishes_need_approbation.html.twig')
  53.             ;
  54.             $allUsers $this->entityManager->getRepository(User::class)->findAll();
  55.             foreach ($allUsers as $user) {
  56.                 if ($user->hasPrivilege('DEATH_NOTICE_WISHES_NOTIFICATION') && !$user->isArchived()) {
  57.                     $emailAdmin->to($user->getEmail());
  58.                     $this->mailer->send($emailAdmin);
  59.                 }
  60.             }
  61.         }
  62.     }
  63. }