src/Controller/ContactController.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Domain\Contact\ContactService;
  4. use App\Domain\Customer\ConnectedCustomerService;
  5. use App\Domain\EgeeDataExportation\DataExportationService;
  6. use App\Domain\EgeeDataExportation\EgeeRequest;
  7. use App\Domain\Notification\Pdf\PdfService;
  8. use Psr\Log\LoggerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. class ContactController extends AbstractController
  15. {
  16.     private $connectedCustomerService;
  17.     private $logger;
  18.     public function __construct(ConnectedCustomerService $ConnectedCustomerServiceLoggerInterface $logger)
  19.     {
  20.         $this->connectedCustomerService $ConnectedCustomerService;
  21.         $this->logger $logger;
  22.     }
  23.     /**
  24.      * @Route("/contact", name="contact", methods={"GET"})
  25.      */
  26.     public function showForm()
  27.     {
  28.         return $this->render('contact/form.html.twig', ['menu' => 'contact']);
  29.     }
  30.     /**
  31.      * @Route("/contact-action", name="contact-action", methods={"POST"})
  32.      */
  33.     public function processForm(Request $requestContactService $contactService)
  34.     {
  35.         try {
  36.             $pdf = new PdfService();
  37.             $dataEmail $request->request->all();
  38.             $dataEmail['attachedFiles'] = null;
  39.             $dataEmail['generatedDate'] = new \DateTimeImmutable('now', new \DateTimeZone('Europe/Paris'));
  40.             $template $this->renderView('email_notifications/contact-reims.html.twig'$dataEmail);
  41.             $pdf->setTitle('contact');
  42.             if ('' != $dataEmail['reference']) {
  43.                 $pdf->setCliReference($dataEmail['reference']);
  44.             }
  45.             $fileName $pdf->generateFile($template);
  46.             $attachments $request->files->all();
  47.             $attachments['attachment'] = $fileName;
  48.             $contactService->process($request->request->all(), $attachments);
  49.             unlink($fileName);
  50.             $this->addFlash(
  51.                 'success',
  52.                 "Votre message a été envoyé avec succès.\nUn accusé de réception a été retourné à l’adresse e-mail indiquée."
  53.             );
  54.             $this->logger->info(
  55.                 'Formulaire de contact - envoi réussi',
  56.                 [
  57.                     'email' => $dataEmail['customer_email'],
  58.                 ]
  59.             );
  60.         } catch (TransportExceptionInterface $e) {
  61.             $this->addFlash(
  62.                 'danger',
  63.                 'Une erreur est survenue lors de l’envoi du message.'
  64.             );
  65.             $this->logger->error(
  66.                 'Formulaire de contact - envoi en échec',
  67.                 [
  68.                     'email' => $dataEmail['customer_email'],
  69.                 ]
  70.             );
  71.         }
  72.         return $this->redirectToRoute('contact');
  73.     }
  74.     /**
  75.      * @Route("/example", name="xml-demo", methods={"GET"})
  76.      */
  77.     public function example(DataExportationService $dataExportationService): Response
  78.     {
  79.         $egeeRequest = new EgeeRequest(
  80.             'egee_flux/intervention-request.xml.twig',
  81.             [
  82.                 'DATE_DEMANDE' => date('Ymd'),
  83.                 'CLI_REFERENCE' => '12345',
  84.             ]
  85.         );
  86.         $dataExportationService->persist($egeeRequest);
  87.         return new Response('OK');
  88.     }
  89. }