src/Controller/FrontController.php line 189

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Modules\AppStatistiques;
  4. use App\Modules\AppEmails;
  5. use App\Modules\AppSms;
  6. use App\Controller\SecurityController;
  7. use App\Controller\FonctionsController;
  8. use App\Controller\StatsController;
  9. use App\Controller\CookieController;
  10. use App\Entity\ModUser;
  11. use App\Repository\ModUserRepository;
  12. use App\Entity\ModPage;
  13. use App\Repository\ModPageRepository;
  14. use App\Entity\ModNewsletter;
  15. use App\Repository\ModNewsletterRepository;
  16. use App\Entity\Devis;
  17. use App\Repository\DevisRepository;
  18. use App\Form\ModUserType;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. use Symfony\Component\HttpFoundation\Response;
  21. use Symfony\Component\Routing\Annotation\Route;
  22. use Symfony\Component\HttpFoundation\Request;
  23. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  24. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  25. use Doctrine\ORM\EntityManagerInterface;
  26. use Symfony\Component\Mailer\MailerInterface;
  27. use Symfony\Component\Mime\Email;
  28. use Symfony\Component\Mime\Address;
  29. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  30. use phpDocumentor\Reflection\Project;
  31. use Symfony\Component\OptionsResolver\OptionsResolver;
  32. use Symfony\Component\Form\Extension\Core\Type\TextType;
  33. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  34. use Symfony\Component\Validator\Constraints\NotBlank;
  35. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  36. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  37. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  38. use Symfony\Component\Form\Extension\Core\Type\RadioType;
  39. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  40. class FrontController extends AbstractController
  41. {
  42.     
  43.     public function __construct(
  44.         AppStatistiques $statsNew,
  45.         AppEmails $sendMailx,
  46.         AppSms $sendSms,
  47.         ModNewsletterRepository $newsletterRepo
  48.         ModPageRepository $pagesRepo
  49.         ModUserRepository $userRepo
  50.         StatsController $stats
  51.         FonctionsController $fonc
  52.         
  53.         UserPasswordHasherInterface $passwordEncoder
  54.         EntityManagerInterface $em
  55.     )
  56.     {
  57.         $this->statsNew $statsNew;
  58.         $this->sendMailx $sendMailx;
  59.         $this->sendSms $sendSms;
  60.         $this->newsletterRepo $newsletterRepo;
  61.         $this->pagesRepo $pagesRepo;
  62.         $this->userRepo $userRepo;
  63.         $this->stats $stats;
  64.         
  65.         $this->fonc $fonc;
  66.         $this->passwordEncoder $passwordEncoder;
  67.         $this->em $em;
  68.     }
  69.     /*** Fonctions formulaires *******************************************************/
  70.       // formulaire devis
  71.       public function formDevis(){
  72.         $form $this->createFormBuilder()
  73.         ->add('prenom'TextType::class, [
  74.             'label' => 'Prénom',
  75.             'required'   => false,
  76.             'attr' => [
  77.                 "placeholder" => "Prénom",
  78.             ],
  79.         ])
  80.         ->add('nom'TextType::class, [
  81.             'label' => 'Nom *',
  82.             'required'   => true,
  83.             'constraints' => new NotBlank(),
  84.             'attr' => [
  85.                 "placeholder" => "Nom",
  86.             ],
  87.         ])
  88.         ->add('societe'TextType::class, [
  89.             'label' => 'Société',
  90.             'required'   => false,
  91.             'attr' => [
  92.                 "placeholder" => "Société",
  93.             ],
  94.         ])
  95.         ->add('tel'TextType::class, [
  96.             'label'    => 'Téléphone *',
  97.             'required'   => true,
  98.             'constraints' => new NotBlank(),
  99.             'attr' => [
  100.                 "placeholder" => "Téléphone",
  101.             ],
  102.         ])
  103.         ->add('mailx'EmailType::class, [
  104.             'label' => 'E-mail *',
  105.             'required'   => true,
  106.             'constraints' => new NotBlank(),
  107.             'attr' => [
  108.                 "placeholder" => "E-mail",
  109.             ],
  110.         ])
  111.         ->add('texte'TextareaType::class, [
  112.           'required' => false,
  113.           'label' => 'Présentez votre projet',
  114.           'attr' => ['class' => '''style' => ""]
  115.         ])
  116.         ->getForm();
  117.         return $form;
  118.       }
  119.       // formulaire newsletter
  120.       public function formNewsletter(){
  121.         $form $this->createFormBuilder()
  122.         ->add('mailx'EmailType::class, [
  123.             'label' => 'E-mail *',
  124.             'required'   => true,
  125.             'constraints' => new NotBlank(),
  126.             'attr' => [
  127.                 "placeholder" => "E-mail",
  128.             ],
  129.         ])
  130.         ->getForm();
  131.         return $form;
  132.       }
  133.       public function formTestApi(){
  134.         $form $this->createFormBuilder()
  135.         ->add('tel'TextType::class, [
  136.             'label'    => 'Téléphone *',
  137.             'required'   => true,
  138.             'constraints' => new NotBlank(),
  139.             'attr' => [
  140.                 "placeholder" => "Téléphone",
  141.             ],
  142.         ])
  143.         ->add('save'SubmitType::class, [
  144.             'label' => 'Enregistrer'
  145.             'attr' => [
  146.                 "class" => "btn btn-block btn-primary font-weight-medium auth-form-btn",
  147.             ],
  148.         ])
  149.         ->getForm();
  150.         return $form;
  151.       }
  152.     /*** Fonctions pages *******************************************************/
  153.     /**
  154.      * @Route("/", name="front_index")
  155.      */
  156.     public function front_index(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  157.     {
  158.       // A. statistiques et securité
  159.       $this->stats->enregistreStat("front_index");
  160.       // 3. affichage de la page
  161.       return $this->render('front/index.html.twig', [
  162.         'controller_name' => 'front_index',
  163.       ]);
  164.       
  165.     }
  166.     /**
  167.      * @Route("/testAPIChrono", name="front_testAPIChrono")
  168.      */
  169.     public function front_testAPIChrono(Request $requestMailerInterface $mailer): Response
  170.     {
  171.         // A. statistiques et securité
  172.         $this->stats->enregistreStat("front_testAPIChrono");
  173.         // 2. recupération du formulaire
  174.         $form $this->formTestApi();
  175.         $form->handleRequest($request);
  176.         // 3. affichage de la page
  177.         return $this->render('front/testApi/index.html.twig', [
  178.             'controller_name' => 'front_testAPIChrono',
  179.             'form' => $form->createView(),
  180.         ]);
  181.     }
  182.     
  183.     /**
  184.      * @Route("/erreur404", name="front_404")
  185.      */
  186.     public function front_404(SecurityController $securMailerInterface $mailer): Response
  187.     {
  188.         // 1. affichage de la page
  189.         return $this->render('front/index.html.twig', [
  190.             'controller_name' => 'front_404',
  191.         ]);
  192.     }
  193.     /*** Fonctions test *******************************************************/
  194.         /**
  195.          * @Route("/test/q1", name="front_test")
  196.          */
  197.         public function front_test(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  198.         {
  199.             
  200.             // A. statistiques et securité
  201.             $this->stats->enregistreStat("front_test");
  202.             // 3. affichage de la page
  203.             return $this->render('front/test/question1.html.twig', [
  204.                 'controller_name' => 'front_test',
  205.             ]);
  206.             
  207.         }
  208.         /**
  209.          * @Route("/test/q2", name="front_test2")
  210.          */
  211.         public function front_test2(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  212.         {
  213.             // A. statistiques et securité
  214.             $this->stats->enregistreStat("front_test2");
  215.             // 3. affichage de la page
  216.             return $this->render('front/test/question2.html.twig', [
  217.                 'controller_name' => 'front_test2',
  218.             ]);
  219.             
  220.         }
  221.         /**
  222.          * @Route("/test/q3", name="front_test3")
  223.          */
  224.         public function front_test3(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  225.         {
  226.             // A. statistiques et securité
  227.             $this->stats->enregistreStat("front_test3");
  228.             // 3. affichage de la page
  229.             return $this->render('front/test/question3.html.twig', [
  230.                 'controller_name' => 'front_test3',
  231.             ]);
  232.             
  233.         }
  234.         /**
  235.          * @Route("/test/q4", name="front_test4")
  236.          */
  237.         public function front_test4(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  238.         {
  239.             // A. statistiques et securité
  240.             $this->stats->enregistreStat("front_test4");
  241.             // 3. affichage de la page
  242.             return $this->render('front/test/question4.html.twig', [
  243.                 'controller_name' => 'front_test4',
  244.             ]);
  245.             
  246.         }
  247.         /**
  248.          * @Route("/test/q5", name="front_test5")
  249.          */
  250.         public function front_test5(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  251.         {
  252.             // A. statistiques et securité
  253.             $this->stats->enregistreStat("front_test5");
  254.             // 3. affichage de la page
  255.             return $this->render('front/test/question5.html.twig', [
  256.                 'controller_name' => 'front_test5',
  257.             ]);
  258.             
  259.         }
  260.         /**
  261.          * @Route("/test/q6", name="front_test6")
  262.          */
  263.         public function front_test6(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  264.         {
  265.             // A. statistiques et securité
  266.             $this->stats->enregistreStat("front_test6");
  267.             // 3. affichage de la page
  268.             return $this->render('front/test/question6.html.twig', [
  269.                 'controller_name' => 'front_test6',
  270.             ]);
  271.             
  272.         }
  273.     /*** Fonctions test produits *******************************************************/
  274.         /**
  275.          * @Route("/produit/application", name="front_produit_application")
  276.          */
  277.         public function front_produit_application(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  278.         {
  279.             if (isset($_GET['test'])){
  280.                 $test $_GET['test'];
  281.             }
  282.             else {
  283.                 $test '';
  284.             }
  285.             // A. statistiques et securité
  286.             $this->stats->enregistreStat("front_produit_application");
  287.             // 3. affichage de la page
  288.             return $this->render('front/produit/application.html.twig', [
  289.                 'controller_name' => 'front_produit_application',
  290.                 'test' => $test,
  291.             ]);
  292.             
  293.         }
  294.         /**
  295.          * @Route("/produit/boutique", name="front_produit_boutique")
  296.          */
  297.         public function front_produit_boutique(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  298.         {
  299.             if (isset($_GET['test'])){
  300.                 $test $_GET['test'];
  301.             }
  302.             else {
  303.                 $test '';
  304.             }
  305.             // A. statistiques et securité
  306.             $this->stats->enregistreStat("front_produit_application");
  307.             // 3. affichage de la page
  308.             return $this->render('front/produit/boutique.html.twig', [
  309.                 'controller_name' => 'front_produit_boutique',
  310.                 'test' => $test,
  311.             ]);
  312.             
  313.         }
  314.         /**
  315.          * @Route("/produit/landingpage", name="front_produit_landingpage")
  316.          */
  317.         public function front_produit_landingpage(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  318.         {
  319.             if (isset($_GET['test'])){
  320.                 $test $_GET['test'];
  321.             }
  322.             else {
  323.                 $test '';
  324.             }
  325.             // A. statistiques et securité
  326.             $this->stats->enregistreStat("front_produit_landingpage");
  327.             // 3. affichage de la page
  328.             return $this->render('front/produit/landingpage.html.twig', [
  329.                 'controller_name' => 'front_produit_landingpage',
  330.                 'test' => $test,
  331.             ]);
  332.             
  333.         }
  334.         /**
  335.          * @Route("/produit/microsite", name="front_produit_microsite")
  336.          */
  337.         public function front_produit_microsite(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  338.         {
  339.             if (isset($_GET['test'])){
  340.                 $test $_GET['test'];
  341.             }
  342.             else {
  343.                 $test '';
  344.             }
  345.             // A. statistiques et securité
  346.             $this->stats->enregistreStat("front_produit_microsite");
  347.             // 3. affichage de la page
  348.             return $this->render('front/produit/microsite.html.twig', [
  349.                 'controller_name' => 'front_produit_microsite',
  350.                 'test' => $test,
  351.             ]);
  352.             
  353.         }
  354.         /**
  355.          * @Route("/produit/blog", name="front_produit_blog")
  356.          */
  357.         public function front_produit_blog(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  358.         {
  359.             if (isset($_GET['test'])){
  360.                 $test $_GET['test'];
  361.             }
  362.             else {
  363.                 $test '';
  364.             }
  365.             // A. statistiques et securité
  366.             $this->stats->enregistreStat("front_produit_blog");
  367.             // 3. affichage de la page
  368.             return $this->render('front/produit/blog.html.twig', [
  369.                 'controller_name' => 'front_produit_blog',
  370.                 'test' => $test,
  371.             ]);
  372.             
  373.         }
  374.         /**
  375.          * @Route("/produit/website", name="front_produit_website")
  376.          */
  377.         public function front_produit_website(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  378.         {
  379.             if (isset($_GET['test'])){
  380.                 $test $_GET['test'];
  381.             }
  382.             else {
  383.                 $test '';
  384.             }
  385.             // A. statistiques et securité
  386.             $this->stats->enregistreStat("front_pfront_produit_websiteroduit_blog");
  387.             // 3. affichage de la page
  388.             return $this->render('front/produit/website.html.twig', [
  389.                 'controller_name' => 'front_produit_website',
  390.                 'test' => $test,
  391.             ]);
  392.             
  393.         }
  394.         /**
  395.          * @Route("/produit/portfolio", name="front_produit_portfolio")
  396.          */
  397.         public function front_produit_portfolio(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  398.         {
  399.             if (isset($_GET['test'])){
  400.                 $test $_GET['test'];
  401.             }
  402.             else {
  403.                 $test '';
  404.             }
  405.             // A. statistiques et securité
  406.             $this->stats->enregistreStat("front_produit_portfolio");
  407.             // 3. affichage de la page
  408.             return $this->render('front/produit/portfolio.html.twig', [
  409.                 'controller_name' => 'front_produit_portfolio',
  410.                 'test' => $test,
  411.             ]);
  412.             
  413.         }
  414.         /**
  415.          * @Route("/demande_de_devis", name="front_devis")
  416.          */
  417.         public function front_devis(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  418.         {
  419.             if (isset($_GET['produit'])){
  420.                 $produit $_GET['produit'];
  421.             }
  422.             else {
  423.                 $produit '';
  424.             }
  425.             // A. statistiques et securité
  426.             $this->stats->enregistreStat("front_devis");
  427.             // on instancie l'objet Devis
  428.             $newDevis = new Devis();
  429.             // on place le formulaire
  430.             $formDevis $this->formDevis($newDevis);
  431.             // 3. affichage de la page
  432.             return $this->render('front/produit/devis.html.twig', [
  433.                 'controller_name' => 'front_devis',
  434.                 'produit' => $produit,
  435.                 'formDevis' => $formDevis->createView(),
  436.             ]);
  437.             
  438.         }
  439.         /**
  440.          * @Route("/demande_de_devis/traitement", name="devis_traitement")
  441.          */
  442.         public function devis_traitement(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  443.         {
  444.             // A. statistiques et securité
  445.             $this->stats->enregistreStat("devis_traitement");
  446.             // recupere datas de l'ajax
  447.             $form "peugeot_demandeDevis024_02";
  448.             $prenom $_POST["prenom"];
  449.             $nom $_POST["nom"];
  450.             $societe $_POST["societe"];
  451.             $numero $_POST["numero"];
  452.             $emailx $_POST["emailx"];
  453.             $texte $_POST["texte"];
  454.             // on instancie l'objet Devis
  455.             $newDevis = new Devis();
  456.             // rempli l'objet
  457.             $newDevis->setNom($nom);
  458.             $newDevis->setPrenom($prenom);
  459.             $newDevis->setSociete($societe);
  460.             $newDevis->setTel($numero);
  461.             $newDevis->setMailx($emailx);
  462.             $newDevis->setTexte($texte);
  463.             // prise en compte de l'objet
  464.             $this->em->persist($newDevis);
  465.             // inscription dans la base
  466.             $this->em->flush();
  467.             // preparation à l envoi un email à l inscrit
  468.             $dest $emailx;
  469.             $sujet "Demande de devis Webgiciel";
  470.             $titre "Demande de devis Webgiciel";
  471.             $message "Bonjour, votre message est en cours de traitement. Un conseiller commercial va prendre contact avec vous dans les plus brefs délais afin d'afiner au mieux le devis demandé.";
  472.             $template "front/email/templateMail_Client.html.twig";
  473.             $context = [
  474.                 'subject' => $sujet,
  475.                 'message' => $message,
  476.                 'titre' => $titre,
  477.             ];
  478.             $this->sendMailx->envoiEmail($dest$sujet$message$template$titre$context);
  479.             // preparation à l envoi un email à l admin
  480.             $dest "contact@webgiciel.com";
  481.             $sujet "Une demande de devis vient d'arrivée";
  482.             $titre "Une demande de devis vient d'arrivée";
  483.             $message "Bonjour, Une demande de devis vient d'arrivée";
  484.             $template "front/email/templateMail_Devis.html.twig";
  485.             $context = [
  486.                 'subject' => $sujet,
  487.                 'titre' => $titre,
  488.                 'message' => $message,
  489.                 'prenom' => $prenom,
  490.                 'nom' => $nom,
  491.                 'societe' => $societe,
  492.                 'numero' => $numero,
  493.                 'emailx' => $emailx,
  494.                 'texte' => $texte,
  495.             ];
  496.             $this->sendMailx->envoiEmail($dest$sujet$message$template$titre$context);
  497.             //
  498.             return $this->json([
  499.                 'msg' => "ok"
  500.             ]);
  501.         } 
  502.         /**
  503.          * @Route("/demande_de_devis/ok", name="devis_ok")
  504.          */
  505.         public function devis_ok(TokenStorageInterface $tokenStorageSecurityController $securMailerInterface $mailer): Response
  506.         {
  507.             // A. statistiques et securité
  508.             $this->stats->enregistreStat("devis_ok");
  509.             // enregistre la visite de la page
  510.             //$this->fonc->visiteCompteur($this->pathStats, "front_devis");
  511.             // 3. affichage de la page
  512.             return $this->render('front/produit/devis_ok.html.twig', [
  513.                 'controller_name' => 'front_devis',
  514.             ]);
  515.         }
  516.     /*** Fonctions end *******************************************************/
  517. }