src/EventSubscriber/SiteGenerationSubscriber.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Component\Configuration\Util\Config;
  4. use App\Event\SiteGenerationFinishedEvent;
  5. use App\Sendgrid\Mailer;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. class SiteGenerationSubscriber implements EventSubscriberInterface
  8. {
  9.     protected Config $config;
  10.     protected Mailer $mailer;
  11.     public function __construct(
  12.         Config $config,
  13.         Mailer $mailer
  14.     ) {
  15.         $this->config $config;
  16.         $this->mailer $mailer;
  17.     }
  18.     public static function getSubscribedEvents(): array
  19.     {
  20.         return [
  21.             SiteGenerationFinishedEvent::class => 'siteGenerationFinished',
  22.         ];
  23.     }
  24.     public function siteGenerationFinished(SiteGenerationFinishedEvent $event)
  25.     {
  26.         if (
  27.             !$this->config->get('site_generation_send_notifications') ||
  28.             empty($this->config->get('site_generation_notification_receiver_emailaddress'))
  29.         ) {
  30.             return;
  31.         }
  32.         $template null;
  33.         $failedTemplate $this->config->get('site_generation_creation_failed_template');
  34.         $successfulTemplate $this->config->get('site_generation_creation_successful_template');
  35.         if (!$event->isAccountCreated() && !empty($failedTemplate)) {
  36.             $template $failedTemplate;
  37.         }
  38.         if ($event->isAccountCreated() && !empty($successfulTemplate)) {
  39.             $template $successfulTemplate;
  40.         }
  41.         if (!$template) {
  42.             return;
  43.         }
  44.         $this->mailer->mail(
  45.             $template,
  46.             $this->config->get('site_company_email_address'),
  47.             [$this->config->get('site_generation_notification_receiver_emailaddress')],
  48.             [
  49.                 'site' => $event->getSite(),
  50.             ]
  51.         );
  52.     }
  53. }