<?php
namespace App\Controller\Contact;
use App\Entity\Contact;
use App\Entity\Emails\Emails;
use App\Entity\Emails\GeneratorMail;
use App\Form\Contact\CommercialType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\String\ByteString;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Routing\Annotation\Route;
class CommercialController extends AbstractController
{
protected $em;
protected $verifyEmailHelper;
public function __construct(EntityManagerInterface $entityManager)
{
$this->em = $entityManager;
}
/**
* @Route("/send/commercial-contact", name="send-commercial")
*/
public function sendCommercialContact(Request $request, MailerInterface $mailer): Response
{
$success = false;
$contact = new Contact;
$form = $this->createForm(CommercialType::class, $contact);
$form->handleRequest($request);
try{
if($form->isSubmitted() && $form->isValid()){
$contact->setHashTalk((new ByteString)->fromRandom(20)->toString());
$this->em->persist($contact);
$this->em->flush();
$form = $this->createForm(CommercialType::class, new Contact);
$success = true;
$emailTo = "service-commercial@sport-adhesion.fr";
extract(["prenom" => $contact->getName(),"nom" => $contact->getLastName(), "compagny" => $contact->getCompagnyName(),
"email" => $contact->getEmail(), "structure"=> $contact->getCompagnyType(),"phone" => $contact->getPhone(), "getMessage" => $contact->getMessage()
]);
$message = <<<HTML
<p style="text-align:center">
<b>Prénom :</b> $prenom
<br/>
<b>Nom :</b> $nom
<br/>
<b>Compagnie :</b> $compagny
<br/>
<b>Structure :</b> $structure
<br/>
<b>E-mail :</b> $email
<br/>
<b>Téléphone :</b> $phone
<br/><br/>
</p>
<p style="text-align:left">
<span style="color:#00a5db;font-weight:bold;">Informations :</span> Leads [URGENT] depuis le site internet.
<br/>
<span style="color:#00a5db;font-weight:bold;">Type :</span> Service commercial
<br/><br/>
<span style="font-weight:bold;color:#00a5db;width:100%;text-align:center;">Message</span>
<br/><br/>
$getMessage
</p>
HTML;
$configMail = $this->em->getRepository(Emails::class)->findOneBy(["template_name" => "default", "category" => "commercial"]);
if(!empty($configMail)){
$emailBody = (new GeneratorMail(new TemplatedEmail, $configMail))->setMail(
$emailTo,
[
'mail' => $emailTo,
'compagny_name' => $contact->getCompagnyName(),
'message' => $message
]
);
$mailer->send($emailBody);
}
}
}catch(\Exception $e){
$success = false;
}
return new JsonResponse($success);
}
public function index(Request $request): Response
{
$contact = new Contact;
$form = $this->createForm(CommercialType::class, $contact);
return $this->render('contact/commercial/index.html.twig', [
'form' => $form->createView()
]);
}
}