src/Controller/Contact/AskController.php line 93

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Contact;
  3. use App\Entity\Contact;
  4. use App\Entity\Emails\Emails;
  5. use App\Entity\Emails\GeneratorMail;
  6. use App\Form\Contact\InformationType;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Mailer\MailerInterface;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Component\String\ByteString;
  16. class AskController extends AbstractController
  17. {
  18.     protected $em;
  19.     protected $verifyEmailHelper;
  20.     public function __construct(EntityManagerInterface $entityManager)
  21.     {
  22.         $this->em $entityManager;
  23.     }
  24.     /**
  25.      * @Route("/send/information-contact", name="send-information")
  26.      */
  27.     public function sendInformationContact(Request $requestMailerInterface $mailer): Response
  28.     {
  29.         $success false;
  30.         $contact = new Contact;
  31.         $form $this->createForm(InformationType::class, $contact);
  32.         $form->handleRequest($request);
  33.         try{
  34.             if($form->isSubmitted() && $form->isValid()){
  35.                 $contact->setHashTalk((new ByteString)->fromRandom(20)->toString());
  36.                 $this->em->persist($contact);
  37.                 $this->em->flush();
  38.                 $form $this->createForm(InformationType::class, new Contact);
  39.                 $success true;
  40.                 $emailTo "service-support@sport-adhesion.fr";
  41.                 extract(["prenom" => $contact->getName(),"nom" => $contact->getLastName(), "compagny" => $contact->getCompagnyName(),
  42.                     "email" => $contact->getEmail(), "phone" => $contact->getPhone(), "getMessage"  => $contact->getMessage()
  43.                 ]);
  44.                 $message = <<<HTML
  45.                     <p style="text-align:center">
  46.                         <b>Prénom :</b> $prenom
  47.                         <br/>
  48.                         <b>Nom :</b> $nom
  49.                         <br/>
  50.                         <b>Compagnie :</b> $compagny
  51.                         <br/>
  52.                         <b>E-mail :</b> $email
  53.                         <br/>
  54.                         <b>Téléphone :</b> $phone
  55.                         <br/><br/>
  56.                     </p>
  57.                     <p style="text-align:left">
  58.                         <span style="color:#00a5db;font-weight:bold;">Informations :</span> Leads [Chaud] depuis le site internet.
  59.                         <br/>
  60.                         <span style="color:#00a5db;font-weight:bold;">Type :</span> Informations et support 
  61.                         <br/><br/>
  62.                         <span style="font-weight:bold;color:#00a5db;width:100%;text-align:center;">Message</span>
  63.                         <br/><br/>
  64.                         $getMessage
  65.                     </p>
  66.                 HTML;
  67.                 $configMail $this->em->getRepository(Emails::class)->findOneBy(["template_name" => "default""category" => "commercial"]);
  68.                 if(!empty($configMail)){
  69.                     $emailBody = (new GeneratorMail(new TemplatedEmail$configMail))->setMail(
  70.                         $emailTo,
  71.                         [
  72.                             'mail'              => $emailTo,
  73.                             'compagny_name'     => $contact->getCompagnyName(),
  74.                             'message'           => $message
  75.                         ]
  76.                     );
  77.                     $mailer->send($emailBody);
  78.                 }
  79.             }
  80.         }catch(\Exception $e){
  81.             $success $e->getMessage();
  82.         }
  83.         return new JsonResponse($success);
  84.     }
  85.     public function index(): Response
  86.     {
  87.         $contact = new Contact;
  88.         $form $this->createForm(InformationType::class, $contact);
  89.         return $this->render('contact/ask/index.html.twig', [
  90.             'form'          => $form->createView()
  91.         ]);
  92.     }
  93. }