<?php
namespace App\EventListener;
use App\Entity\Main\Feedback;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
use Twig\Environment;
class FeedbackSubscriber
{
protected $mailer;
protected $container;
protected $twig;
public function __construct(\Swift_Mailer $mailer, ContainerInterface $container, Environment $twig)
{
$this->mailer = $mailer;
$this->container = $container;
$this->twig = $twig;
}
public function __invoke(GenericEvent $event)
{
$feedback = $event->getSubject();
if($feedback instanceof Feedback){
//Если статус активный
if($feedback->getActive() == 1){
//Получаем данные настроек
$setting = $this->container->get('doctrine.orm.default_entity_manager')->getRepository('App\Entity\Main\Setting')->find(1);
//Рендерим письмо
$html = $this->twig->render('email/feedback.html.twig', ['setting' => $setting, 'title' => $this->container->getParameter('feedback_subject'), 'message' => $feedback->getReply()]);
//Собираем письмо
$message = (new \Swift_Message())
->setSubject($this->container->getParameter('feedback_subject'))
->setFrom([$this->container->getParameter('feedback_from') => $this->container->getParameter('feedback_from_name')])
->setTo( [ $feedback->getEmail() ] )
->setBody($html, 'text/html')
;
//Отправляем email пользователю
$this->mailer->send($message);
}
}
}
}