src/EventListener/FormAnswerCreatedListener.php line 44

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Service\MailerService;
  4. use ApiPlatform\Core\EventListener\EventPriorities;
  5. use App\Entity\FormAnswer;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpKernel\Event\ViewEvent;
  10. use Symfony\Component\HttpKernel\KernelEvents;
  11. use Symfony\Component\Validator\Validator\ValidatorInterface;
  12. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  13. use Symfony\Component\HttpKernel\KernelInterface
  14. class FormAnswerCreatedListener implements EventSubscriberInterface
  15. {
  16.     private $mailerService;
  17.     private EntityManagerInterface $entityManager;
  18.     private $validator;
  19.     private $kernel;
  20.     public function __construct(MailerService $mailerServiceEntityManagerInterface $entityManagerValidatorInterface $validatorKernelInterface $kernel)
  21.     {
  22.         $this->mailerService $mailerService;
  23.         $this->entityManager $entityManager;
  24.         $this->validator $validator;
  25.         $this->kernel $kernel;
  26.     }
  27.     public static function getSubscribedEvents()
  28.     {
  29.         return [
  30.             KernelEvents::VIEW => ['saveFormAnswer'EventPriorities::POST_WRITE],
  31.         ];
  32.     }
  33.     public function saveFormAnswer(ViewEvent $event)
  34.     {
  35.         $mainFormAnswer $event->getControllerResult();
  36.         $method $event->getRequest()->getMethod();
  37.         if (!$mainFormAnswer instanceof FormAnswer) {
  38.             return;
  39.         }
  40.         $answerFields $mainFormAnswer->getFormAnswerFields();
  41.         $content "";
  42.         foreach($answerFields as $answerField){
  43.             $content .= $answerField->getFormField()->getLabel() . " - " $answerField->getValue() . "\n";
  44.         }
  45.         $recipientEmail $mainFormAnswer->getForm()->getSendMailAnswet();
  46.         $meiles explode(',',$recipientEmail);
  47.         $subject "Нова відповідь на форму - " $mainFormAnswer->getForm()->getName();
  48.         $media $mainFormAnswer->getMedia();
  49.         $attachmend false;
  50.         if(count($media) > 0){
  51.             
  52.             $newMdiaArr = [];
  53.             foreach($media as $val){
  54.                 $newMdiaArr[] = $this->kernel->getProjectDir() . "/public/media/" $val->filePath;
  55.             }
  56.             $attachmend $newMdiaArr;
  57.         }
  58.         
  59.         foreach($meiles as $meil){
  60.             $this->mailerService->sendRegistrationEmail(trim($meil), $subject$content$attachmend);
  61.         }       
  62.     }
  63. }