src/Controller/SiteController.php line 26

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\CmsContact;
  4. use App\Entity\CmsNewsletter;
  5. use App\Form\CmsContactType;
  6. use App\Form\CmsNewsletterType;
  7. use App\Repository\CmsContactRepository;
  8. use App\Repository\CmsFaqRepository;
  9. use App\Repository\CmsNewsletterRepository;
  10. use App\Repository\CmsPartnerRepository;
  11. use App\Repository\CmsQuoteRepository;
  12. use App\Repository\OptionRepository;
  13. use App\Repository\PlanRepository;
  14. use App\Service\HostResolver;
  15. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  20. class SiteController extends AbstractController
  21. {
  22.     #[Route('/'name'site_landing')]
  23.     public function index(
  24.         HostResolver $hostResolver,
  25.     ): Response
  26.     {
  27.         if (!$hostResolver->isKimiaDomain()) {
  28.             return $this->redirectToRoute('app');
  29.         }
  30.         return $this->render('site/index.html.twig', [
  31.             'theme_mode' => 'light',
  32.         ]);
  33.     }
  34.     #[Route('/pricing'name'site_pricing')]
  35.     public function pricing(PlanRepository $planRepositoryOptionRepository $optionRepository): Response
  36.     {
  37.         return $this->render('site/pricing.html.twig', [
  38.             'plans' => $planRepository->findBy(['isVisible' => true]),
  39.             'options' => $optionRepository->findBy([])
  40.         ]);
  41.     }
  42.     public function partnairs(CmsPartnerRepository $partnerRepository): Response
  43.     {
  44.         return $this->render('cms_partner/_partnairs.html.twig', [
  45.             'partners' => $partnerRepository->findBy(['isVisible' => true])
  46.         ]);
  47.     }
  48.     public function faq(CmsFaqRepository $questionRepository): Response
  49.     {
  50.         return $this->render('cms_faq/_faq.html.twig', [
  51.             'questions' => $questionRepository->findBy(['isPublic' => true])
  52.         ]);
  53.     }
  54.     public function quote(CmsQuoteRepository $quoteRepository): Response
  55.     {
  56.         return $this->render('cms_quote/_quote.html.twig', [
  57.             'quotes' => $quoteRepository->findBy(['isPublic' => true])
  58.         ]);
  59.     }
  60.     #[Route('/about'name'site_about')]
  61.     public function about(): Response
  62.     {
  63.         return $this->render('site/about.html.twig');
  64.     }
  65.     #[Route('/contact'name'site_contact'methods: ['GET''POST'])]
  66.     public function contact(Request $requestCmsContactRepository $contactRepository): Response
  67.     {
  68.         $cmsContact = new CmsContact();
  69.         $form $this->createForm(CmsContactType::class, $cmsContact);
  70.         $form->handleRequest($request);
  71.         if ($form->isSubmitted() && $form->isValid()) {
  72.             $contactRepository->save($cmsContacttrue);
  73.             $this->addFlash('success'"Votre deande de contact a été soumis avec succès");
  74.             return $this->redirectToRoute('site_contact', [], Response::HTTP_CREATED);
  75.         }
  76.         return $this->render('site/contact.html.twig', [
  77.             'form' => $form
  78.         ]);
  79.     }
  80.     #[Route('/newsletter'name'site_newsletter'methods: ['POST'])]
  81.     public function newsletter(Request $requestCmsNewsletterRepository $cmsNewletterRepository): Response
  82.     {
  83.         $cmsNewletter = new CmsNewsletter();
  84.         $form $this->createForm(CmsNewsletterType::class, $cmsNewletter, [
  85.             'action' => $this->generateUrl('site_newsletter')
  86.         ]);
  87.         $form->handleRequest($request);
  88.         if ($form->isSubmitted()) {
  89.             if ($form->isValid()) {
  90.                 $cmsNewletterRepository->save($cmsNewlettertrue);
  91.                 $this->addFlash('success'"Votre deande de contact a été soumis avec succès");
  92.                 return $this->redirectToRoute('site_landing', [], Response::HTTP_CREATED);
  93.             }else {
  94.                 $this->addFlash('warning'"Cet adresse email est déjà abonné au newsletter");
  95.                 return $this->redirect($request->headers->get('referer'));
  96.             }
  97.         }
  98.         return $this->render('site/newsletter.html.twig', [
  99.             'form' => $form
  100.         ]);
  101.     }
  102.     #[Route('/help'name'site_help')]
  103.     public function help(): Response
  104.     {
  105.         return $this->render('site/help.html.twig');
  106.     }
  107. }