src/Controller/ContactController.php line 23

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Contact;
  4. use App\Form\ContactType;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use App\Repository\ReferencementRepository;
  8. use App\Service\Recaptcha;
  9. use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
  10. use Symfony\Component\HttpFoundation\File\Exception\FileException;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Component\Mailer\MailerInterface;
  16. use Symfony\Component\Mime\Email;
  17. class ContactController extends AbstractController
  18. {
  19.     #[Route('/contact'name'app_contact')]
  20.     public function index(Request $requestEntityManagerInterface $managerMailerInterface $mailerReferencementRepository $referencementRepositoryContainerBagInterface $bagRecaptcha $sRecaptcha): Response
  21.     {
  22.         $contact = new Contact();
  23.         $form $this->createForm(ContactType::class, $contact);
  24.         $form->handleRequest($request);
  25.         $fichier null;
  26.         if($form->isSubmitted() && $form->isValid()){
  27.             $recaptchaToken $form->get('recaptchaToken')->getData();
  28.             $check $sRecaptcha->verifyCaptcha($bag->get('app.google_site_key'), $recaptchaToken ?? ''$bag->get('app.google_project'),'OFFRE');
  29.             if($check){
  30.                 $params $request->get('contact');
  31.                 $file $form->get('extension')->getData();
  32.                 if ($file) {
  33.                     $ext $file->guessExtension();
  34.                     $contact->setExtension($ext);
  35.                     $pathUpload "fichier_contact/";
  36.                     $name $contact->getId().'.'.$ext;
  37.                     try {
  38.                         $file->move($pathUpload$name);
  39.                     } catch (FileException $e) {
  40.                         // handle exception
  41.                     }
  42.                     $fichier "Ce message est accompagné d'une pièce jointe, pour le visualiser il faut vous connecter sur le site.";
  43.                 }
  44.                 $manager->persist($contact);
  45.                 $manager->flush();
  46.                 if($fichier){
  47.                     $html "<p>Vous avez reçu un message de ".$params['Nom']." ".$params['prenom']."<br> Son adresse mail est: "$params['email'] ." <br><br> ".$params['message']."<br><br>" $fichier "</p>";
  48.                 }else{
  49.                     $html "<p>Vous avez reçu un message de ".$params['Nom']." ".$params['prenom']."<br> Son adresse mail est: "$params['email'] ." <br><br> ".$params['message']."</p>";
  50.                 }
  51.                 $subject $params['sujet'];
  52.                 $email = (new Email())
  53.                 ->from('r.bergery@ferguss.com')
  54.                 ->to('e.daloia@ferguss.com')
  55.                 ->subject($subject)
  56.                 ->html($html);
  57.                 $mailer->send($email);
  58.                 $this->addFlash(
  59.                     'success',
  60.                     'Votre message a bien été envoyé, merci !'
  61.                 );
  62.                 return $this->redirectToRoute("app_contact");
  63.             }else{
  64.                 $this->addFlash('error''Échec de la vérification reCAPTCHA.');
  65.                 return $this->redirectToRoute('app_contact');
  66.             }
  67.         }
  68.         return $this->render('contact/index.html.twig', [
  69.             'form' => $form->createView(),
  70.             'google_sitekey' => $bag->get('app.google_site_key'),
  71.             'controller_name' => 'ContactController',
  72.             'referencements' => $referencementRepository->findAll(),
  73.         ]);
  74.     }
  75.     #[Route('/download-document/{id}'name'app_download_doc')]
  76.     public function download(Contact $contact)
  77.     {
  78.         $filepath $contact->getDownloadPath();
  79.         if (is_file($filepath)) {
  80.             
  81.             $fileName "fichier_".$contact->getId().'.'.$contact->getExtension();
  82.             $filename filter_var($fileNameFILTER_SANITIZE_URL);
  83.             $response = new Response();
  84.             $disposition $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_INLINE$filename);
  85.             $response->headers->set('Content-Disposition'$disposition);
  86.             $response->headers->set('Content-Type'mime_content_type($filepath));
  87.             $response->setContent(file_get_contents($filepath));
  88.             return $response;
  89.         }
  90.         $response = new Response();
  91.         return $response;
  92.               
  93.     }
  94. }