src/Aqarmap/Bundle/MortgageBundle/EventListener/MortgageSubscribeListener.php line 67

Open in your IDE?
  1. <?php
  2. namespace Aqarmap\Bundle\MortgageBundle\EventListener;
  3. use Aqarmap\Bundle\MainBundle\Adapter\MailerServiceInterface;
  4. use Aqarmap\Bundle\MainBundle\Constant\Locales;
  5. use Aqarmap\Bundle\MainBundle\Helpers\MailerHelper;
  6. use Aqarmap\Bundle\MainBundle\Service\Setting;
  7. use Aqarmap\Bundle\MortgageBundle\Event\MortgageRequestEvent;
  8. use Psr\Container\ContainerInterface;
  9. use Symfony\Component\DependencyInjection\Container;
  10. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use Symfony\Contracts\Translation\TranslatorInterface;
  13. class MortgageSubscribeListener implements EventSubscriberInterface
  14. {
  15.     /**
  16.      * @var Container
  17.      */
  18.     protected $container;
  19.     /**
  20.      * @var ParameterBagInterface
  21.      */
  22.     protected $parameterBag;
  23.     /**
  24.      * @var MailerServiceInterface
  25.      */
  26.     private $mailer;
  27.     /**
  28.      * @var TranslatorInterface
  29.      */
  30.     private $translator;
  31.     /**
  32.      * @var Setting
  33.      */
  34.     private $settings;
  35.     /**
  36.      * @var MailerHelper
  37.      */
  38.     private $mailerHelper;
  39.     /**
  40.      * @param Container $container
  41.      */
  42.     public function __construct(
  43.         ContainerInterface $container,
  44.         TranslatorInterface $translator,
  45.         Setting $settings,
  46.         MailerServiceInterface $mailer,
  47.         MailerHelper $mailerHelper,
  48.         ParameterBagInterface $parameterBag
  49.     ) {
  50.         $this->container $container;
  51.         $this->translator $translator;
  52.         $this->settings $settings;
  53.         $this->mailer $mailer;
  54.         $this->mailerHelper $mailerHelper;
  55.         $this->parameterBag $parameterBag;
  56.     }
  57.     public function onCreateMortgageRequest(MortgageRequestEvent $event)
  58.     {
  59.         try {
  60.             $this->translator->setLocale(Locales::EN);
  61.             $compose $this->getComposeMessage($event);
  62.             return $this->mailer->sendMessage($compose);
  63.         } catch (Exception $e) {
  64.         }
  65.     }
  66.     public static function getSubscribedEvents()
  67.     {
  68.         return [
  69.             'aqarmap.mortgage.request' => 'onCreateMortgageRequest',
  70.         ];
  71.     }
  72.     private function getComposeMessage($event)
  73.     {
  74.         $this->translator->setLocale(Locales::EN);
  75.         $composeMessage $this->mailerHelper->createMessageWithGlobalAttributes();
  76.         $composeMessage->setSubject($this->translator->trans('email.subject.mortgage_email'));
  77.         $composeMessage->setTo($this->settings->getSetting('features''mortgage_email'));
  78.         $composeMessage->setFrom($this->parameterBag->get('website_email'));
  79.         $composeMessage->setTemplate('@AqarmapMortgageBundle/Default/Email/request.html.twig');
  80.         $composeMessage->setTemplateContext(['mortgage' => $event->getMortgage()]);
  81.         $compose $this->mailer->composeMessage($composeMessage);
  82.         $compose->getHeaders()->addTextHeader('X-Mail-Category''default-mortgage-lead');
  83.         $compose->getHeaders()->addTextHeader('X-Site-Country'$this->container->getParameter('country'));
  84.         return $compose;
  85.     }
  86. }