src/EventListener/InternFormSubmitEventListener.php line 35

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\Event\InternFormSubmitEvent;
  7. use App\Sendgrid\MailerInterface;
  8. use App\Util\StringToEntityUtil;
  9. use Gedmo\Translatable\TranslatableListener;
  10. use League\Flysystem\Adapter\Local;
  11. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  12. class InternFormSubmitEventListener extends FormSubmitEventListener
  13. {
  14.     protected Local $fileAdapter;
  15.     /**
  16.      * InternFormSubmitEventListener constructor.
  17.      */
  18.     public function __construct(
  19.         MailerInterface $mailer,
  20.         ParameterBagInterface $parameterBag,
  21.         StringToEntityUtil $stringToEntityUtil,
  22.         ?TranslatableListener $translatableListener,
  23.         Config $config,
  24.         Local $fileAdapter
  25.     ) {
  26.         parent::__construct($mailer$parameterBag$stringToEntityUtil$translatableListener$config);
  27.         $this->fileAdapter $fileAdapter;
  28.     }
  29.     public function onSubmit(InternFormSubmitEvent $event)
  30.     {
  31.         $entry $event->getEntry();
  32.         $files = [];
  33.         if ($entry->getResumeFileName() && $this->fileAdapter->has($entry->getResumeFileName())) {
  34.             $files[] = $this->fileAdapter->getPathPrefix().$entry->getResumeFileName();
  35.         }
  36.         if ($entry->getMotivationFileName() && $this->fileAdapter->has($entry->getMotivationFileName())) {
  37.             $files[] = $this->fileAdapter->getPathPrefix().$entry->getMotivationFileName();
  38.         }
  39.         $departments implode(', 'array_map(function (Company $company) {
  40.             return $company->getName();
  41.         }, $entry->getDepartment()->toArray()));
  42.         if ($mail $this->getMail('site_intern_form_mail_visitor')) {
  43.             $this->mailer
  44.                 ->mail(
  45.                     $mail,
  46.                     $this->getCompanyEmailSender(),
  47.                     [$entry->getEmail()],
  48.                     [
  49.                         'intern' => $entry,
  50.                         'departments' => $departments,
  51.                     ]
  52.                 );
  53.         }
  54.         if ($mail $this->getMail('site_intern_form_mail_site_owner')) {
  55.             $this->mailer
  56.                 ->mail(
  57.                     $mail,
  58.                     $this->getCompanyEmailSender(),
  59.                     [$this->getCompanyEmailaddress()],
  60.                     [
  61.                         'intern' => $entry,
  62.                         'departments' => $departments,
  63.                     ],
  64.                     [],
  65.                     [],
  66.                     $files
  67.                 );
  68.         }
  69.     }
  70.     /**
  71.      * {@inheritDoc}
  72.      */
  73.     protected function getMail(string $mailId): ?Mail
  74.     {
  75.         return $this->config->get($mailId);
  76.     }
  77.     /**
  78.      * {@inheritDoc}
  79.      */
  80.     public function getCompanyEmailSender(): array
  81.     {
  82.         if ($sender $this->config->get('site_intern_form_sender')) {
  83.             if ($senderName $this->config->get('site_intern_form_sender_name')) {
  84.                 return [$sender => $senderName];
  85.             }
  86.             return [$sender => $this->config->get('site_company_name')];
  87.         }
  88.         return parent::getCompanyEmailSender();
  89.     }
  90.     /**
  91.      * {@inheritDoc}
  92.      */
  93.     public function getCompanyEmailaddress(): string
  94.     {
  95.         if ($receiver $this->config->get('site_intern_form_receiver')) {
  96.             return $receiver;
  97.         }
  98.         return parent::getCompanyEmailaddress();
  99.     }
  100. }