src/EventListener/LearningTrackContactListener.php line 49

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Component\Configuration\Util\Config;
  4. use App\Event\LearningTrackContactSubmitEvent;
  5. use App\Sendgrid\MailerInterface;
  6. use App\Util\StringToEntityUtil;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Flagception\Manager\FeatureManagerInterface;
  9. use Gedmo\Translatable\TranslatableListener;
  10. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  11. use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
  12. class LearningTrackContactListener extends FormSubmitEventListener
  13. {
  14.     /**
  15.      * @var EntityManagerInterface
  16.      */
  17.     private $em;
  18.     /**
  19.      * @var EventDispatcherInterface
  20.      */
  21.     private $eventDispatcher;
  22.     private FeatureManagerInterface $featureManager;
  23.     /**
  24.      * LearningTrackContactListener constructor.
  25.      */
  26.     public function __construct(
  27.         EntityManagerInterface $em,
  28.         EventDispatcherInterface $eventDispatcher,
  29.         MailerInterface $mailer,
  30.         ParameterBagInterface $parameterBag,
  31.         StringToEntityUtil $stringToEntityUtil,
  32.         FeatureManagerInterface $featureManager,
  33.         ?TranslatableListener $translatableListener,
  34.         Config $config
  35.     ) {
  36.         parent::__construct($mailer$parameterBag$stringToEntityUtil$translatableListener$config);
  37.         $this->em $em;
  38.         $this->eventDispatcher $eventDispatcher;
  39.         $this->featureManager $featureManager;
  40.     }
  41.     public function postContactSubmit(LearningTrackContactSubmitEvent $event)
  42.     {
  43.         if (!$this->featureManager->isActive('feature_learning_track_contact')) {
  44.             return;
  45.         }
  46.         $contact $event->getLearningTrackContact();
  47.         if (!$siteOwnerMail $this->getMail('site_learning_track_contact_mail_site_owner')) {
  48.             return;
  49.         }
  50.         $recipient $this->parameterBag->get('site_learning_track_contact_custom_system_recipient') ?:
  51.             $this->parameterBag->get('site_company_email_address');
  52.         $this->mailer->mail(
  53.             $siteOwnerMail,
  54.             $this->getCompanyEmailSender(),
  55.             [$recipient],
  56.             ['contact' => $contact]
  57.         );
  58.     }
  59. }