src/Controller/FrontController.php line 76

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Actualite;
  4. use App\Entity\Demande;
  5. use App\Entity\Page;
  6. use App\Repository\FaqRepository;
  7. use App\Repository\FormuleRepository;
  8. use App\Repository\PageRepository;
  9. use App\Repository\ActualiteRepository;
  10. use App\Repository\AvisRepository;
  11. use App\Repository\PopupRepository;
  12. use App\Repository\SliderRepository;
  13. use App\Service\MailService;
  14. use Doctrine\ORM\EntityManagerInterface;
  15. use Pagerfanta\Doctrine\ORM\QueryAdapter;
  16. use Pagerfanta\Pagerfanta;
  17. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  18. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  19. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  20. use Symfony\Component\Form\Extension\Core\Type\TextType;
  21. use Symfony\Component\Form\Form;
  22. use Symfony\Component\HttpFoundation\Request;
  23. use Symfony\Component\HttpFoundation\Response;
  24. use Symfony\Component\Mime\Address;
  25. use Symfony\Component\Routing\Annotation\Route;
  26. class FrontController extends AbstractController
  27. {
  28.     #[Route('/'name'app_default')]
  29.     public function index(
  30.         PageRepository $pageRepository,
  31.         ActualiteRepository $actualiteRepository,
  32.         AvisRepository $avisRepository,
  33.         PopupRepository $popupRepository,
  34.         SliderRepository $sliderRepository,
  35.         FormuleRepository $formuleRepository
  36.     ) : Response
  37.     {
  38.         $page $pageRepository->findOneBySlug('index.html');
  39.         if ($page)
  40.         {
  41.             $src '';
  42.             $src1 '';
  43.             preg_match_all'#<img .* src="(.*)".*>#isU'$page->getContenu(), $matches );
  44.             if(isset($matches[1][0])) $src $matches[1][0];
  45.             if(isset($matches[1][1])) $src1 $matches[1][1];
  46.             {
  47.                 $slides $sliderRepository->findBy(array('actif' => true),array('id' => 'ASC'));
  48.                 $actualites $actualiteRepository->findLast(3);
  49.                 $avisListe $avisRepository->findAll();
  50.                 $popup $popupRepository->findOneBy(array('actif' => true),array('id' => 'DESC'));
  51.                 $formules $formuleRepository->findAll();
  52.                 return $this->render('front/accueil.html.twig', [
  53.                     'page' => $page,
  54.                     'src' => $src,
  55.                     'src1' => $src1,
  56.                     'slides' => $slides,
  57.                     'actualites' => $actualites,
  58.                     'avisListe' => $avisListe,
  59.                     'popup' => $popup,
  60.                     'formules' => $formules
  61.                 ]);
  62.             }
  63.         }
  64.         throw $this->createNotFoundException('Page introuvable');
  65.     }
  66.     #[Route('/{slug}'name'app_index')]
  67.     public function page(
  68.         Page $page null,
  69.         ActualiteRepository $actualiteRepository,
  70.         AvisRepository $avisRepository,
  71.         FormuleRepository $formuleRepository
  72.     ) : Response
  73.     {
  74.         if ($page)
  75.         {
  76.             $src '';
  77.             $matches = [];
  78.             preg_match'#<img .* src="(.*)".*>#isU'$page->getContenu(), $matches );
  79.             if(isset($matches[1])) $src $matches[1];
  80.             $fomules $formuleRepository->findAll();
  81.             if ($page->isAccueil())
  82.             {
  83.                 $actualites $actualiteRepository->findLast(3);
  84.                 $avisListe $avisRepository->findAll();
  85.                 return $this->render('front/accueil.html.twig', [
  86.                     'page' => $page,
  87.                     'src' => $src,
  88.                     'actualites' => $actualites,
  89.                     'avisListe' => $avisListe,
  90.                     'formules' => $fomules
  91.                 ]);
  92.             } elseif ($page->getTemplate() == || $page->getTemplate() == null){
  93.                 return $this->render('front/page.html.twig', [
  94.                     'page' => $page,
  95.                     'formules' => $fomules,
  96.                     'src' => $src
  97.                 ]);
  98.             } elseif ($page->getTemplate() == 2){
  99.                 return $this->render('front/tarif.html.twig', [
  100.                     'page' => $page,
  101.                     'formules' => $fomules,
  102.                     'src' => $src
  103.                 ]);
  104.             } elseif ($page->getTemplate() == 3){
  105.                 return $this->render('front/moniteurs.html.twig', [
  106.                     'page' => $page,
  107.                     'formules' => $fomules,
  108.                     'src' => $src
  109.                 ]);
  110.             }
  111.             return $this->render('front/page.html.twig', [
  112.                 'page' => $page,
  113.                 'formules' => $fomules,
  114.                 'src' => $src
  115.             ]);
  116.         }
  117.         throw $this->createNotFoundException('Page introuvable');
  118.     }
  119.     #[Route('/actualites'name'app_actualites'priority1)]
  120.     public function actualites(
  121.         ActualiteRepository $actualiteRepository,
  122.         FormuleRepository $formuleRepository
  123.     ) : Response
  124.     {
  125.         $queryBuilder $actualiteRepository->createOrderedByDateQueryBuilder();
  126.         $adapter = new QueryAdapter($queryBuilder);
  127.         $formules $formuleRepository->findAll();
  128.         $pagerfanta Pagerfanta::createForCurrentPageWithMaxPerPage(
  129.             $adapter,
  130.             1,
  131.             9
  132.         );
  133.         return $this->render('front/actualites.html.twig', [
  134.             'pager' => $pagerfanta,
  135.             'formules' => $formules
  136.         ]);
  137.     }
  138.     #[Route('/actualite/{slug}'name'app_actualite_detail')]
  139.     public function actualiteDetail(
  140.         Actualite $actualite null,
  141.         ActualiteRepository $actualiteRepository,
  142.         FormuleRepository $formuleRepository
  143.     ) : Response
  144.     {
  145.         $fomules $formuleRepository->findAll();
  146.         $actualites $actualiteRepository->findBy(array('categorie' => $actualite->getCategorie()->getId()), null3);
  147.         $fomules $formuleRepository->findAll();
  148.         return $this->render('front/actu-detail.html.twig', [
  149.             'actualite' => $actualite,
  150.             'actualites' => $actualites,
  151.             'formules' => $fomules
  152.         ]);
  153.     }
  154.     #[Route('/contact.html'name'app_contact'priority1)]
  155.     public function contact(Request $requestEntityManagerInterface $entityManagerMailService $mailService) : Response
  156.     {
  157.         $demande = new Demande();
  158.         $form $this->createFormBuilder($demande)
  159.             ->add('nom',TextType::class)
  160.             ->add('prenom',TextType::class, [
  161.                 'required' => false,
  162.             ])
  163.             ->add('telephone',TextType::class)
  164.             ->add('email',EmailType::class)
  165.             ->add('message',TextareaType::class);
  166.         $form $form->getForm();
  167.         $form->handleRequest($request);
  168.         if ($form->isSubmitted() && $form->isValid()) {
  169.             /** @var Demande $demande */
  170.             $demande $form->getData();
  171.             $to = new Address($this->getParameter('email_admin'),'Ecole de Surf Côte Sauvage');
  172.             $from = new Address($demande->getEmail(), $demande->getNom(). ' ' .$demande->getPrenom());
  173.             $sujet $demande->getSujet();
  174.             $message $demande->getMessage();
  175.             $mailService->sendEmail($to$from,$sujet,'front/contact-email.html.twig',['message' => $message]);
  176.             $entityManager->persist($demande);
  177.             $entityManager->flush();
  178.             $this->addFlash('success''<p>Votre demande a bien été enregistrée et nous vous en remercions.</p>
  179.                     <p>Nous allons vous contacter dans les plus brefs délais.</p>');
  180. //            return $this->redirectToRoute('app_contact');
  181.         }
  182.         return $this->render('front/contact.html.twig', [
  183.             'form' => $form->createView()
  184.         ]);
  185.     }
  186.     #[Route('/faq.html'name'app_faq'priority1)]
  187.     public function faq(
  188.         Request $request,
  189.         FaqRepository $faqRepository,
  190.         FormuleRepository $formuleRepository
  191.     ) : Response
  192.     {
  193.         $faqList $faqRepository->findAll();
  194.         $forules $formuleRepository->findAll();
  195.         return $this->render('front/faq.html.twig',[
  196.             'faqList' => $faqList,
  197.             'formules' => $forules
  198.         ]);
  199.     }
  200. }