src/Controller/HomeController.php line 208

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\Actualites\ActualitesRepository;
  4. use App\Repository\Articles\ArticlesRepository;
  5. use App\Repository\BrochuresRepository;
  6. use App\Repository\Articles\CategoriearticlesRepository;
  7. use App\Repository\CategorieimagesRepository;
  8. use App\Repository\DirectionsRepository;
  9. use App\Repository\Distinctions\DistinctionsRepository;
  10. use App\Repository\DocumentationsRepository;
  11. use App\Repository\Hotels\HotelsRepository;
  12. use App\Repository\InstitutionsRepository;
  13. use App\Repository\Pages\PagesRepository;
  14. use App\Repository\PartenairesRepository;
  15. use App\Repository\Posts\PostsRepository;
  16. use App\Repository\Restaurants\RestaurantsRepository;
  17. use App\Repository\Salons\SalonsRepository;
  18. use App\Repository\Symboles\SymbolesetatsRepository;
  19. use Doctrine\ORM\NonUniqueResultException;
  20. use Knp\Component\Pager\PaginatorInterface;
  21. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  22. use Symfony\Component\HttpFoundation\Request;
  23. use Symfony\Component\HttpFoundation\Response;
  24. use Symfony\Component\Routing\Annotation\Route;
  25. class HomeController extends AbstractController
  26. {
  27.     /**
  28.      * @var ActualitesRepository
  29.      */
  30.     private $actualitesRepository;
  31.     /**
  32.      * @var ArticlesRepository
  33.      */
  34.     private $articlesRepository;
  35.     /**
  36.      * @var HotelsRepository
  37.      */
  38.     private $hotelsRepository;
  39.     /**
  40.      * @var RestaurantsRepository
  41.      */
  42.     private $restaurantsRepository;
  43.     /**
  44.      * @var PostsRepository
  45.      */
  46.     private $postsRepository;
  47.     /**
  48.      * @var SalonsRepository
  49.      */
  50.     private $salonsRepository;
  51.     /**
  52.      * @var BrochuresRepository
  53.      */
  54.     private $brochuresRepository;
  55.     /**
  56.      * @var PagesRepository
  57.      */
  58.     private $pagesRepository;
  59.     /**
  60.      * @var CategorieimagesRepository
  61.      */
  62.     private $categorieimagesRepository;
  63.     /**
  64.      * @var InstitutionsRepository
  65.      */
  66.     private $institutionsRepository;
  67.     /**
  68.      * @var DirectionsRepository
  69.      */
  70.     private $directionsRepository;
  71.     /**
  72.      * @var DocumentationsRepository
  73.      */
  74.     private $documentationsRepository;
  75.     /**
  76.      * @var PartenairesRepository
  77.      */
  78.     private $partenairesRepository;
  79.     /**
  80.      * @var DistinctionsRepository
  81.      */
  82.     private $distinctionsRepository;
  83.     /**
  84.      * @var SymbolesetatsRepository
  85.      */
  86.     private $symbolesetatsRepository;
  87.     /**
  88.      * HomeController constructor.
  89.      * @param ActualitesRepository $actualitesRepository
  90.      * @param ArticlesRepository $articlesRepository
  91.      * @param HotelsRepository $hotelsRepository
  92.      * @param PostsRepository $postsRepository
  93.      * @param PagesRepository $pagesRepository
  94.      * @param DirectionsRepository $directionsRepository
  95.      * @param DistinctionsRepository $distinctionsRepository
  96.      * @param DocumentationsRepository $documentationsRepository
  97.      * @param PartenairesRepository $partenairesRepository
  98.      * @param BrochuresRepository $brochuresRepository
  99.      * @param SalonsRepository $salonsRepository
  100.      * @param CategorieimagesRepository $categorieimagesRepository
  101.      * @param InstitutionsRepository $institutionsRepository
  102.      * @param SymbolesetatsRepository $symbolesetatsRepository
  103.      * @param RestaurantsRepository $restaurantsRepository
  104.      */
  105.     public function __construct(
  106.         ActualitesRepository $actualitesRepository,
  107.         ArticlesRepository $articlesRepository,
  108.         HotelsRepository $hotelsRepository,
  109.         PostsRepository $postsRepository,
  110.         PagesRepository $pagesRepository,
  111.         DirectionsRepository $directionsRepository,
  112.         DistinctionsRepository $distinctionsRepository,
  113.         DocumentationsRepository $documentationsRepository,
  114.         PartenairesRepository $partenairesRepository,
  115.         BrochuresRepository $brochuresRepository,
  116.         SalonsRepository $salonsRepository,
  117.         CategorieimagesRepository $categorieimagesRepository,
  118.         InstitutionsRepository $institutionsRepository,
  119.         SymbolesetatsRepository $symbolesetatsRepository,
  120.         RestaurantsRepository $restaurantsRepository
  121.     )
  122.     {
  123.         $this->actualitesRepository $actualitesRepository;
  124.         $this->articlesRepository $articlesRepository;
  125.         $this->hotelsRepository $hotelsRepository;
  126.         $this->restaurantsRepository $restaurantsRepository;
  127.         $this->postsRepository $postsRepository;
  128.         $this->salonsRepository $salonsRepository;
  129.         $this->brochuresRepository $brochuresRepository;
  130.         $this->pagesRepository $pagesRepository;
  131.         $this->categorieimagesRepository $categorieimagesRepository;
  132.         $this->institutionsRepository $institutionsRepository;
  133.         $this->directionsRepository $directionsRepository;
  134.         $this->documentationsRepository $documentationsRepository;
  135.         $this->partenairesRepository $partenairesRepository;
  136.         $this->distinctionsRepository $distinctionsRepository;
  137.         $this->symbolesetatsRepository $symbolesetatsRepository;
  138.     }
  139.     /**
  140.      * @Route({"fr": "/changer-locale/{locale}", "en": "/change-local/{locale}"}, name="change_locale")
  141.      * @param string $locale
  142.      * @param Request $request
  143.      * @return Response
  144.      */
  145.     public function changeLocale(string $localeRequest $request): Response
  146.     {
  147.         //On stock la langue demandée dans la session
  148.         $request->getSession()->set('_locale'$locale);
  149.         $request->setLocale($locale);
  150.         //On revient sur la page précédente
  151.         return $this->redirect($request->headers->get('referer'));
  152.     }
  153.     /**
  154.      * @Route("/", name="home", defaults={"title":"Bienvenue"})
  155.      * @param string $title
  156.      * @return Response
  157.      * @throws NonUniqueResultException
  158.      */
  159.     public function home(string $title): Response
  160.     {
  161.         $actualites $this->actualitesRepository->latest(5);
  162.         $articles $this->articlesRepository->getIncontournable(6);
  163.         $hotelFeatured $this->hotelsRepository->featured();
  164.         $restaurantFeatured $this->restaurantsRepository->featured();
  165.         $postFeatured $this->postsRepository->featured();
  166.         $articleFeatured $this->articlesRepository->featured();
  167.         $brochures $this->brochuresRepository->latest(6);
  168.         $enimage $this->categorieimagesRepository->latest(6);
  169.         return $this->render('pages/home/index.html.twig', [
  170.             'title' => $title,
  171.             'actualites' => $actualites,
  172.             'articles' => $articles,
  173.             'hotelFeatured' => $hotelFeatured,
  174.             'restaurantFeatured' => $restaurantFeatured,
  175.             'postFeatured' => $postFeatured,
  176.             'brochures' => $brochures,
  177.             'articleFeatured' => $articleFeatured,
  178.             'enimages' => $enimage,
  179.             'current_page' => 'home'
  180.         ]);
  181.     }
  182.     /**
  183.      * @Route("/la-cote-d-ivoire", name="ci", defaults={"title":"La Côte d'Ivoire"})
  184.      * @param string $title
  185.      * @return Response
  186.      * @throws NonUniqueResultException
  187.      */
  188.     public function ci(string $title): Response
  189.     {
  190.         $histoire $this->pagesRepository->findSinglePage(1);
  191.         $geographie $this->pagesRepository->findSinglePage(2);
  192.         $institutions $this->institutionsRepository->latest(36);
  193.         $symboles $this->symbolesetatsRepository->latest(36);
  194.         return $this->render('pages/home/ci.html.twig', [
  195.             'title' => $title,
  196.             'histoire' => $histoire,
  197.             'geographie' => $geographie,
  198.             'institutions' => $institutions,
  199.             'symboles' => $symboles,
  200.             'menu' => 'La Côte d\'Ivoire',
  201.             'current_page' => 'ci'
  202.         ]);
  203.     }
  204.     /**
  205.      * @Route("/presentation-cit", name="presentation_cit", defaults={"title":"Présentation Côte d'Ivoire"})
  206.      * @param string $title
  207.      * @param Request $request
  208.      * @param PaginatorInterface $paginator
  209.      * @return Response
  210.      * @throws NonUniqueResultException
  211.      */
  212.     public function presentation_cit(string $titleRequest $requestPaginatorInterface $paginator): Response
  213.     {
  214.         $presentation $this->pagesRepository->findSinglePage(3);
  215.         $politique $this->pagesRepository->findSinglePage(4);
  216.         $directions $paginator->paginate(
  217.             $this->directionsRepository->findBy(['online' => true]), /* query NOT result */
  218.             $request->query->getInt('page'1)/*page number*/,
  219.             $request->query->getInt('limit'12)/*limit per page*/
  220.         );
  221.         $distinctions $paginator->paginate(
  222.             $this->distinctionsRepository->findBy(['online' => true]), /* query NOT result */
  223.             $request->query->getInt('page'1)/*page number*/,
  224.             $request->query->getInt('limit'12)/*limit per page*/
  225.         );
  226.         $documentations $paginator->paginate(
  227.             $this->documentationsRepository->findBy(['online' => true]), /* query NOT result */
  228.             $request->query->getInt('page'1)/*page number*/,
  229.             $request->query->getInt('limit'24)/*limit per page*/
  230.         );
  231.         $partenaires $paginator->paginate(
  232.             $this->partenairesRepository->findBy(['online' => true]), /* query NOT result */
  233.             $request->query->getInt('page'1)/*page number*/,
  234.             $request->query->getInt('limit'12)/*limit per page*/
  235.         );
  236.         return $this->render('pages/home/presentation.html.twig', [
  237.             'title' => $title,
  238.             'presentation' => $presentation,
  239.             'politique' => $politique,
  240.             'directions' => $directions,
  241.             'distinctions' => $distinctions,
  242.             'documentations' => $documentations,
  243.             'partenaires' => $partenaires,
  244.             'menu' => '',
  245.             'current_page' => 'ci'
  246.         ]);
  247.     }
  248.     /**
  249.      * @Route("/thematiques", name="thematiques", defaults={"title":"Les 7 Thématiques"})
  250.      * @param string $title
  251.      * @param CategoriearticlesRepository $categoriearticlesRepository
  252.      * @return Response
  253.      */
  254.     public function thematiques(string $titleCategoriearticlesRepository $categoriearticlesRepository): Response
  255.     {
  256.         $thematiques $categoriearticlesRepository->findBy(['menu' => 1], ['ordre' => 'ASC']);
  257.         return $this->render('pages/thematiques/thematiques.html.twig', [
  258.             'title' => $title,
  259.             'thematiques' => $thematiques,
  260.             'current_page' => 'visites'
  261.         ]);
  262.     }
  263.     /**
  264.      * @Route("/enregistrement", name="enregistrements", defaults={"title":"Côte D'Ivoire Tourisme - Formulaire d'Identification Entreprises du Secteur"})
  265.      * @param string $title
  266.      * @return Response
  267.      */
  268.     public function enregistrement(string $title): Response
  269.     {
  270.         return $this->render('pages/enregistrement.html.twig', [
  271.             'title' => $title,
  272.             'current_page' => 'home'
  273.         ]);
  274.     }
  275. }