src/EventListener/ContactCompanyListener.php line 50

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Component\Configuration\Util\Config;
  4. use App\Entity\Subscription;
  5. use App\Event\ContactCompanySubmitEvent;
  6. use App\Event\NewsletterEvent;
  7. use App\Sender\ContactCompanySender;
  8. use App\Sendgrid\MailerInterface;
  9. use App\Util\StringToEntityUtil;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  12. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  13. class ContactCompanyListener extends FormSubmitEventListener
  14. {
  15.     /**
  16.      * @var ContactCompanySender
  17.      */
  18.     private $sender;
  19.     /**
  20.      * @var EntityManagerInterface
  21.      */
  22.     private $em;
  23.     /**
  24.      * @var EventDispatcherInterface
  25.      */
  26.     private $eventDispatcher;
  27.     /**
  28.      * ContactListener constructor.
  29.      */
  30.     public function __construct(
  31.         EntityManagerInterface $em,
  32.         EventDispatcherInterface $eventDispatcher,
  33.         MailerInterface $mailer,
  34.         ParameterBagInterface $parameterBag,
  35.         StringToEntityUtil $stringToEntityUtil,
  36.         Config $config
  37.     ) {
  38.         parent::__construct($mailer$parameterBag$stringToEntityUtilnull$config);
  39.         $this->em $em;
  40.         $this->eventDispatcher $eventDispatcher;
  41.     }
  42.     public function postContactSubmit(ContactCompanySubmitEvent $event)
  43.     {
  44.         $contact $event->getContact();
  45.         if ($visitorMail $this->getMail('site_contact_company_mail_visitor')) {
  46.             $this->mailer->mail(
  47.                 $visitorMail,
  48.                 $this->getCompanyEmailSender(),
  49.                 [$event->getContact()->getEmail()],
  50.                 ['contact' => $contact]
  51.             );
  52.         }
  53.         if ($siteOwnerMail $this->getMail('site_contact_company_mail_site_owner')) {
  54.             $recipient $this->getCompanyEmailaddress();
  55.             if ($this->config->get('site_contact_company_custom_system_recipient')) {
  56.                 $recipient $this->config->get('site_contact_company_custom_system_recipient');
  57.             }
  58.             $this->mailer->mail(
  59.                 $siteOwnerMail,
  60.                 $this->getCompanyEmailSender(),
  61.                 [$recipient],
  62.                 ['contact' => $contact]
  63.             );
  64.         }
  65.         if ($event->getForm()->has('subscribeToNewsletter') && $event->getForm()->get('subscribeToNewsletter')->getData()) {
  66.             $emailSubscription = (new Subscription())->setEmail($contact->getEmail());
  67.             $this->em->persist($emailSubscription);
  68.             $this->em->flush();
  69.             $this->eventDispatcher->dispatch(new NewsletterEvent($contact->getEmail()), NewsletterEvent::SUBSCRIBED);
  70.         }
  71.     }
  72. }