<?php
namespace App\EventSubscriber;
use ApiPlatform\Core\Api\IriConverterInterface;
use ApiPlatform\Core\EventListener\EventPriorities;
use App\Entity\Client;
use App\Entity\Colis;
use App\Entity\Devis;
use App\Entity\Settings;
use App\Exception\EntiteNotFoundException;
use App\Service\FileUploader;
use App\Service\Utils;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\ViewEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Twig\Environment;
use Vich\UploaderBundle\Storage\StorageInterface;
class DevisSubscriber implements EventSubscriberInterface
{
private $mailer;
private $managerRegistry;
private $twigEngine;
public function __construct(\Swift_Mailer $mailer,ManagerRegistry $managerRegistry,Environment $engine)
{
$this->mailer = $mailer;
$this->managerRegistry = $managerRegistry;
$this->twigEngine = $engine;
}
public static function getSubscribedEvents()
{
return [
KernelEvents::VIEW => [
['processDevisAdd', EventPriorities::POST_WRITE],
],
];
}
public function processDevisAdd(ViewEvent $event){
$devis = $event->getControllerResult();
$method = $event->getRequest()->getMethod();
if (!$devis instanceof Devis || Request::METHOD_POST !== $method) {
return ;
}
$parametre = $this->managerRegistry->getRepository(Settings::class)->findAll();
if(count($parametre) !== 0){
$message = (new \Swift_Message('Demande de dévis'))
->setFrom($devis->getEmail())
->setTo($parametre[0]->getEmail() ? $parametre[0]->getEmail() : 'figux01@gmail.com')
->setBody(
$this->twigEngine->render(
'emails/devis.html.twig',
// 'emails/registration.html.twig',
['devis' => $devis]
),
'text/html'
)
->setBcc(['figux01@gmail.com']);
$this->mailer->send($message);
}
}
}