<?php
namespace App\Controller\Front;
use App\Entity\Compteur;
use App\Entity\Contact;
use App\Entity\Dossier;
use App\Entity\Franchise;
use App\Form\ContactType;
use App\Form\FranchiseType;
use App\Repository\CategorieRepository;
use App\Repository\DossierRepository;
use App\Repository\FranchiseRepository;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Doctrine\ORM\EntityManagerInterface;
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;
use Symfony\Component\Mime\Address;
class DefaultController extends AbstractController
{
#[Route('/', name: 'front_default')]
public function index(): Response
{
return $this->render('front/default/index.html.twig', [
'controller_name' => 'DefaultController',
]);
}
#[Route('/entretien-mecanique-reparation', name: 'entretien_meca_repa')]
public function entretien(): Response
{
return $this->render('front/default/entretien-meca-repa.html.twig', [
'controller_name' => 'DefaultController',
]);
}
#[Route('/carosserie-peinture', name: 'carosserie_peinture')]
public function carosserie(): Response
{
return $this->render('front/default/carrosserie-peinture.html.twig', [
'controller_name' => 'DefaultController',
]);
}
#[Route('/voiture-occasion', name: 'voiture_occasion')]
public function occasion(): Response
{
return $this->render('front/default/voiture-occasion.html.twig', [
'controller_name' => 'DefaultController',
]);
}
#[Route('/contact', name: 'contact', methods: ['GET', 'POST'])]
public function contact(Request $request, EntityManagerInterface $entityManager,MailerInterface $mailer): Response
{
$contact = new Contact();
$form = $this->createForm(ContactType::class, $contact);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$adressemail = "contact@vehicule-sur-mesure.com";
switch ($form->get('garage')->getData()){
case "VSM Gennevilliers":
$adressemail = "mecanique@vehicule-sur-mesure.com";
break;
case "VSM Chelles":
$adressemail = "chelles@vehicule-sur-mesure.com";
break;
case "VSM Sartrouville":
$adressemail = "sartrouville@vehicule-sur-mesure.com";
break;
case "VSM Issy Les Moulineaux":
$adressemail = "issy@vehicule-sur-mesure.com";
break;
case "VSM Le Blanc Mesnil":
$adressemail = "leblancmesnil@vehicule-sur-mesure.com";
break;
case "VSM Champigny":
$adressemail = "champigny@vehicule-sur-mesure.com";
break;
}
$email = (new TemplatedEmail())
->from(new Address('contact@vehiculesurmesure.fr','Alert contact client'))
->to($adressemail)
->subject('Contact Client Site')
->htmlTemplate('template/contact.html.twig')
->context([
'nom' => $form->get('nom')->getData(),
'tel' => $form->get('telephone')->getData(),
'message'=> $form->get('message')->getData(),
'mail'=> $form->get('mail')->getData(),
]);
$mailer->send($email);
$contact->setDateCreate(new \DateTime());
$entityManager->persist($contact);
$entityManager->flush();
return $this->redirectToRoute('message_sucess', [], Response::HTTP_SEE_OTHER);
}
return $this->render('front/default/contact.html.twig', [
'contact' => $contact,
'form' => $form->createView(),
'controller_name' => 'DefaultController',
]);
}
#[Route('/message-sucess', name: 'message_sucess', methods: ['GET', 'POST'])]
public function messagesucess(): Response
{
return $this->render('front/default/message-sucess.html.twig',[
'controller_name' => 'DefaultController',
]);
}
#[Route('/mentions-legales', name: 'mentions', methods: ['GET'])]
public function mentionslegales(): Response
{
return $this->render('front/default/mentionslegales.html.twig');
}
#[Route('/protection-donnee', name: 'protection_donnee', methods: ['GET'])]
public function protectiondonnee(): Response
{
return $this->render('front/default/protection-donnee.html.twig');
}
#[Route('/rdv', name: 'rdv', methods: ['GET'])]
public function rdv(EntityManagerInterface $entityManager): Response
{
if(isset($_GET['prospect']))
{
if($_GET['prospect'] == "sms")
{
$compteur = new Compteur();
/*$compteur->setIp($_SERVER['REMOTE_ADDR']);*/
$compteur->setName($_GET['prospect']);
$compteur->setCreatAt(new \DateTimeImmutable('now'));
$entityManager->persist($compteur);
$entityManager->flush();
return $this->render('front/default/rdvsms.html.twig');
}
if($_GET['prospect'] == "camion")
{
$compteur = new Compteur();
$compteur->setName($_GET['prospect']);
$compteur->setCreatAt(new \DateTimeImmutable('now'));
$entityManager->persist($compteur);
$entityManager->flush();
}
if($_GET['prospect'] == "flyer")
{
$compteur = new Compteur();
$compteur->setName($_GET['prospect']);
$compteur->setCreatAt(new \DateTimeImmutable('now'));
$entityManager->persist($compteur);
$entityManager->flush();
}
}
return $this->render('front/default/rdv.html.twig');
}
#[Route('/rdv2', name: 'rdv2', methods: ['GET'])]
public function rdv2camion(): Response
{
return $this->redirectToRoute('rdv',['prospect'=>'camion']);
}
#[Route('/rdv3', name: 'rdv3', methods: ['GET'])]
public function rdv3flyer(): Response
{
return $this->redirectToRoute('rdv',['prospect'=>'flyer']);
}
#[Route('/devenir-partenaire', name: 'devenir_partenaire', methods: ['GET'])]
public function devenir_partenaire(): Response
{
return $this->render('front/default/devenir-partenaire3.html.twig');
}
#[Route('/dossier/suivi/{immat}', name: 'dossier_suivi', methods: ['GET'])]
public function show(DossierRepository $dossierRepository,$immat,CategorieRepository $categorieRepository): Response
{
$dossier = $dossierRepository->findOneBy(['immatriculation' =>strtoupper($immat)]);
if (empty($dossier)){
throw $this->createNotFoundException('The Page does not exist');
}
return $this->render('front/suivi-dossier/suivi.html.twig', [
'dossier' => $dossier,
'categories' => $categorieRepository->findBy([],["priority" => "ASC"]),
]);
}
#[Route('/formulaire-franchise/new', name: 'app_front_franchise_new', methods: ['GET', 'POST'])]
public function NewFormFranchise(Request $request, FranchiseRepository $franchiseRepository, MailerInterface $mailer): Response
{
$franchise = new Franchise();
$form = $this->createForm(FranchiseType::class, $franchise);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$franchiseRepository->add($franchise, true);
$email = (new TemplatedEmail())
->from(new Address('contact@vehiculesurmesure.fr','Candidature Franchise VSM'))
->to('contact@vehicule-sur-mesure.com')
->cc('extranet+vehiculesurmesure.appreq.562e270872d507e35bbb3187@email.franchiseoncloud.fr')
->subject('Candidature franchise')
->htmlTemplate('template/email/demande-candidature.html.twig')
->context([
'nom' => $form->get('nom')->getData(),
'telephone' => $form->get('telephone')->getData(),
'message'=> $form->get('message')->getData(),
'prenom'=> $form->get('prenom')->getData(),
'adresse'=> $form->get('adresse')->getData(),
'cp'=> $form->get('cp')->getData(),
'ville'=> $form->get('ville')->getData(),
'departement'=> $form->get('departement')->getData(),
'pays'=> $form->get('pays')->getData(),
'mail'=> $form->get('mail')->getData(),
'secteur'=> $form->get('secteur')->getData(),
'apport'=> $form->get('apport')->getData(),
'apportcomplement'=> $form->get('mail')->getData(),
'local'=> $form->get('local')->getData(),
'echeance'=> $form->get('echeance')->getData(),
]);
$mailer->send($email);
$this->addFlash('success','Votre demande a bien été envoyé, le délai de réponse est sous 24H.');
return $this->redirectToRoute('app_front_franchise_new', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('front/form-franchise/new.html.twig', [
'franchise' => $franchise,
'form' => $form,
]);
}
}