<?php
namespace App\Controller;
use App\Domain\Contact\ContactService;
use App\Domain\Customer\ConnectedCustomerService;
use App\Domain\EgeeDataExportation\DataExportationService;
use App\Domain\EgeeDataExportation\EgeeRequest;
use App\Domain\Notification\Pdf\PdfService;
use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
use Symfony\Component\Routing\Annotation\Route;
class ContactController extends AbstractController
{
private $connectedCustomerService;
private $logger;
public function __construct(ConnectedCustomerService $ConnectedCustomerService, LoggerInterface $logger)
{
$this->connectedCustomerService = $ConnectedCustomerService;
$this->logger = $logger;
}
/**
* @Route("/contact", name="contact", methods={"GET"})
*/
public function showForm()
{
return $this->render('contact/form.html.twig', ['menu' => 'contact']);
}
/**
* @Route("/contact-action", name="contact-action", methods={"POST"})
*/
public function processForm(Request $request, ContactService $contactService)
{
try {
$pdf = new PdfService();
$dataEmail = $request->request->all();
$dataEmail['attachedFiles'] = null;
$dataEmail['generatedDate'] = new \DateTimeImmutable('now', new \DateTimeZone('Europe/Paris'));
$template = $this->renderView('email_notifications/contact-reims.html.twig', $dataEmail);
$pdf->setTitle('contact');
if ('' != $dataEmail['reference']) {
$pdf->setCliReference($dataEmail['reference']);
}
$fileName = $pdf->generateFile($template);
$attachments = $request->files->all();
$attachments['attachment'] = $fileName;
$contactService->process($request->request->all(), $attachments);
unlink($fileName);
$this->addFlash(
'success',
"Votre message a été envoyé avec succès.\nUn accusé de réception a été retourné à l’adresse e-mail indiquée."
);
$this->logger->info(
'Formulaire de contact - envoi réussi',
[
'email' => $dataEmail['customer_email'],
]
);
} catch (TransportExceptionInterface $e) {
$this->addFlash(
'danger',
'Une erreur est survenue lors de l’envoi du message.'
);
$this->logger->error(
'Formulaire de contact - envoi en échec',
[
'email' => $dataEmail['customer_email'],
]
);
}
return $this->redirectToRoute('contact');
}
/**
* @Route("/example", name="xml-demo", methods={"GET"})
*/
public function example(DataExportationService $dataExportationService): Response
{
$egeeRequest = new EgeeRequest(
'egee_flux/intervention-request.xml.twig',
[
'DATE_DEMANDE' => date('Ymd'),
'CLI_REFERENCE' => '12345',
]
);
$dataExportationService->persist($egeeRequest);
return new Response('OK');
}
}