src/EventListener/EventRegistrationEventListener.php line 30

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventListener;
  4. use App\Component\Configuration\Util\Config;
  5. use App\Component\Event\Message\EventRegistrationToIntegration;
  6. use App\Entity\Mail;
  7. use App\Event\EventRegistrationEvent;
  8. use App\Sendgrid\MailerInterface;
  9. use App\Util\StringToEntityUtil;
  10. use Gedmo\Translatable\TranslatableListener;
  11. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  12. use Symfony\Component\Messenger\MessageBusInterface;
  13. class EventRegistrationEventListener extends FormSubmitEventListener
  14. {
  15.     public function __construct(
  16.         MailerInterface $mailer,
  17.         ParameterBagInterface $parameterBag,
  18.         StringToEntityUtil $stringToEntityUtil,
  19.         ?TranslatableListener $translatableListener,
  20.         Config $config,
  21.         protected readonly MessageBusInterface $messageBus
  22.     ) {
  23.         parent::__construct($mailer$parameterBag$stringToEntityUtil$translatableListener$config);
  24.     }
  25.     public function onRegistration(EventRegistrationEvent $event): void
  26.     {
  27.         $eventEntity $event->getEvent();
  28.         $registration $event->getRegistration();
  29.         $eventDateFrom $eventEntity?->getDateFrom()?->format('d-m-Y H:i');
  30.         $eventDateTo $eventEntity?->getDateTo()?->format('d-m-Y H:i');
  31.         $confirmationMail $this->getMail('site_event_registration_confirmation_mail');
  32.         if (null !== $eventEntity?->getMail()) {
  33.             $confirmationMail $eventEntity->getMail();
  34.         }
  35.         if ($confirmationMail instanceof Mail) {
  36.             $senderEmail $this->parameterBag->get('site_event_registration_sender_mail');
  37.             if (!\is_string($senderEmail)) {
  38.                 /** @var string $senderEmail */
  39.                 $senderEmail $this->parameterBag->get('site_company_email_address');
  40.             }
  41.             $senderName $this->parameterBag->get('site_event_registration_sender_name');
  42.             if (!\is_string($senderName)) {
  43.                 /** @var string $senderName */
  44.                 $senderName $this->parameterBag->get('site_company_name');
  45.             }
  46.             $this->mailer->mail(
  47.                 $confirmationMail,
  48.                 [$senderEmail => $senderName],
  49.                 [$event->getEmail()],
  50.                 [
  51.                     'event' => $eventEntity,
  52.                     'eventDateTo' => $eventDateTo,
  53.                     'eventDateFrom' => $eventDateFrom,
  54.                     'registration' => $registration,
  55.                 ]
  56.             );
  57.         }
  58.         $registrationMail $this->getMail('site_event_registration_registration_mail');
  59.         if ($registrationMail instanceof Mail) {
  60.             $sendTo $this->parameterBag->get('site_event_registration_email_address');
  61.             if (!\is_string($sendTo)) {
  62.                 $sendTo $this->parameterBag->get('site_company_email_address');
  63.             }
  64.             $this->mailer->mail(
  65.                 $registrationMail,
  66.                 $this->getCompanyEmailSender(),
  67.                 [$sendTo],
  68.                 [
  69.                     'event' => $eventEntity,
  70.                     'eventDateTo' => $eventDateTo,
  71.                     'eventDateFrom' => $eventDateFrom,
  72.                     'registration' => $registration,
  73.                 ]
  74.             );
  75.         }
  76.         if (
  77.             null !== $eventEntity?->getExternalReference()
  78.             && \is_int($registration->getId())
  79.             && \is_int($eventEntity->getId())
  80.         ) {
  81.             $this->messageBus->dispatch(new EventRegistrationToIntegration($registration->getId(), $eventEntity->getId()));
  82.         }
  83.     }
  84.     public function onProductRegistration(EventRegistrationEvent $eventRegistrationEvent): void
  85.     {
  86.         $eventRegistration $eventRegistrationEvent->getRegistration();
  87.         $visitorMail $this->getMail('site_product_registration_visitor');
  88.         if ($visitorMail instanceof Mail) {
  89.             /** @var string $senderEmail */
  90.             $senderEmail \is_string($this->parameterBag->get('site_product_registration_sender_mail')) ?
  91.                 $this->parameterBag->get('site_product_registration_sender_mail')
  92.                 : $this->parameterBag->get('site_company_email_address');
  93.             /** @var string $senderEmail */
  94.             $senderName \is_string($this->parameterBag->get('site_product_registration_sender_name')) ?
  95.                 $this->parameterBag->get('site_product_registration_sender_name')
  96.                 : $this->parameterBag->get('site_company_name');
  97.             $this->mailer->mail(
  98.                 $visitorMail,
  99.                 [$senderEmail => $senderName],
  100.                 [$eventRegistration->getEmail()],
  101.                 [
  102.                     'product' => $eventRegistration->getProduct(),
  103.                     'registration' => $eventRegistration,
  104.                 ]
  105.             );
  106.         }
  107.         $siteOwnerMail $this->getMail('site_product_registration_site_owner');
  108.         if ($siteOwnerMail instanceof Mail) {
  109.             $this->mailer->mail(
  110.                 $siteOwnerMail,
  111.                 $this->getCompanyEmailSender(),
  112.                 [$this->parameterBag->get('site_company_email_address')],
  113.                 [
  114.                     'product' => $eventRegistration->getProduct(),
  115.                     'registration' => $eventRegistration,
  116.                 ]
  117.             );
  118.         }
  119.     }
  120. }