src/EventListener/VacancyMoreInfoEventListener.php line 40

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Component\Configuration\Util\Config;
  4. use App\Entity\Company;
  5. use App\Entity\Mail;
  6. use App\Entity\Vacancy;
  7. use App\Entity\VacancyMoreInfo;
  8. use App\Event\VacancyMoreInfoEvent;
  9. use App\Sendgrid\MailerInterface;
  10. use App\Service\SiteService;
  11. use App\Util\StringToEntityUtil;
  12. use Gedmo\Translatable\TranslatableListener;
  13. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  14. class VacancyMoreInfoEventListener extends FormSubmitEventListener
  15. {
  16.     /**
  17.      * @var SiteService
  18.      */
  19.     private $siteService;
  20.     /**
  21.      * VacancyMoreInfoEventListener constructor.
  22.      */
  23.     public function __construct(
  24.         ParameterBagInterface $parameterBag,
  25.         MailerInterface $mailer,
  26.         StringToEntityUtil $stringToEntityUtil,
  27.         SiteService $siteService,
  28.         ?TranslatableListener $translatableListener,
  29.         Config $config
  30.     ) {
  31.         $this->siteService $siteService;
  32.         parent::__construct($mailer$parameterBag$stringToEntityUtil$translatableListener$config);
  33.     }
  34.     public function infoFormSubmitted(VacancyMoreInfoEvent $vacancyMoreInfoEvent)
  35.     {
  36.         $senderMailParam 'site_vacancy_more_info_sender_mail';
  37.         $companyMailParam 'site_vacancy_more_info_company_mail';
  38.         /** @var VacancyMoreInfo $vacancyMoreInfoRequest */
  39.         $vacancyMoreInfoRequest $vacancyMoreInfoEvent->getVacancyMoreInfoRequest();
  40.         $senderMail $this->getMail($senderMailParam);
  41.         if ($senderMail &&
  42.             $vacancyMoreInfoRequest->getEmail()
  43.         ) {
  44.             $this->mailer->mail(
  45.                 $senderMail,
  46.                 $this->getCompanyEmailSender(),
  47.                 [$vacancyMoreInfoRequest->getEmail()],
  48.                 ['request' => $vacancyMoreInfoRequest'site' => $this->siteService->getSite()]
  49.             );
  50.         }
  51.         if (($companyMail $this->getMail($companyMailParam)) instanceof Mail) {
  52.             $companyEmailAddress $this->parameterBag->get('site_company_email_address');
  53.             if ($vacancyMoreInfoRequest->getVacancy() instanceof Vacancy) {
  54.                 if ($vacancyMoreInfoRequest->getVacancy()->getCompany() instanceof Company) {
  55.                     $companyEmailAddress $vacancyMoreInfoRequest->getVacancy()->getCompany()->getApplicantEmail();
  56.                     if ([] === $companyEmailAddress) {
  57.                         $companyEmailAddress $vacancyMoreInfoRequest->getVacancy()
  58.                             ->getCompany()
  59.                             ->getEmail();
  60.                     }
  61.                 }
  62.                 if (\is_string($vacancyMoreInfoRequest->getVacancy()->getApplicantEmail())) {
  63.                     $companyEmailAddress $vacancyMoreInfoRequest->getVacancy()->getApplicantEmail();
  64.                 }
  65.             }
  66.             if (\is_string($companyEmailAddress) || \is_array($companyEmailAddress)) {
  67.                 $this->mailer->mail(
  68.                     $companyMail,
  69.                     $this->getCompanyEmailSender(),
  70.                     \is_string($companyEmailAddress) ? [$companyEmailAddress] : $companyEmailAddress,
  71.                     ['request' => $vacancyMoreInfoRequest'site' => $this->siteService->getSite()]
  72.                 );
  73.             }
  74.         }
  75.     }
  76. }