<?php
namespace App\Controller;
use App\Repository\Actualites\ActualitesRepository;
use App\Repository\Articles\ArticlesRepository;
use App\Repository\BrochuresRepository;
use App\Repository\Articles\CategoriearticlesRepository;
use App\Repository\CategorieimagesRepository;
use App\Repository\DirectionsRepository;
use App\Repository\Distinctions\DistinctionsRepository;
use App\Repository\DocumentationsRepository;
use App\Repository\Hotels\HotelsRepository;
use App\Repository\InstitutionsRepository;
use App\Repository\Pages\PagesRepository;
use App\Repository\PartenairesRepository;
use App\Repository\Posts\PostsRepository;
use App\Repository\Restaurants\RestaurantsRepository;
use App\Repository\Salons\SalonsRepository;
use App\Repository\Symboles\SymbolesetatsRepository;
use Doctrine\ORM\NonUniqueResultException;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class HomeController extends AbstractController
{
/**
* @var ActualitesRepository
*/
private $actualitesRepository;
/**
* @var ArticlesRepository
*/
private $articlesRepository;
/**
* @var HotelsRepository
*/
private $hotelsRepository;
/**
* @var RestaurantsRepository
*/
private $restaurantsRepository;
/**
* @var PostsRepository
*/
private $postsRepository;
/**
* @var SalonsRepository
*/
private $salonsRepository;
/**
* @var BrochuresRepository
*/
private $brochuresRepository;
/**
* @var PagesRepository
*/
private $pagesRepository;
/**
* @var CategorieimagesRepository
*/
private $categorieimagesRepository;
/**
* @var InstitutionsRepository
*/
private $institutionsRepository;
/**
* @var DirectionsRepository
*/
private $directionsRepository;
/**
* @var DocumentationsRepository
*/
private $documentationsRepository;
/**
* @var PartenairesRepository
*/
private $partenairesRepository;
/**
* @var DistinctionsRepository
*/
private $distinctionsRepository;
/**
* @var SymbolesetatsRepository
*/
private $symbolesetatsRepository;
/**
* HomeController constructor.
* @param ActualitesRepository $actualitesRepository
* @param ArticlesRepository $articlesRepository
* @param HotelsRepository $hotelsRepository
* @param PostsRepository $postsRepository
* @param PagesRepository $pagesRepository
* @param DirectionsRepository $directionsRepository
* @param DistinctionsRepository $distinctionsRepository
* @param DocumentationsRepository $documentationsRepository
* @param PartenairesRepository $partenairesRepository
* @param BrochuresRepository $brochuresRepository
* @param SalonsRepository $salonsRepository
* @param CategorieimagesRepository $categorieimagesRepository
* @param InstitutionsRepository $institutionsRepository
* @param SymbolesetatsRepository $symbolesetatsRepository
* @param RestaurantsRepository $restaurantsRepository
*/
public function __construct(
ActualitesRepository $actualitesRepository,
ArticlesRepository $articlesRepository,
HotelsRepository $hotelsRepository,
PostsRepository $postsRepository,
PagesRepository $pagesRepository,
DirectionsRepository $directionsRepository,
DistinctionsRepository $distinctionsRepository,
DocumentationsRepository $documentationsRepository,
PartenairesRepository $partenairesRepository,
BrochuresRepository $brochuresRepository,
SalonsRepository $salonsRepository,
CategorieimagesRepository $categorieimagesRepository,
InstitutionsRepository $institutionsRepository,
SymbolesetatsRepository $symbolesetatsRepository,
RestaurantsRepository $restaurantsRepository
)
{
$this->actualitesRepository = $actualitesRepository;
$this->articlesRepository = $articlesRepository;
$this->hotelsRepository = $hotelsRepository;
$this->restaurantsRepository = $restaurantsRepository;
$this->postsRepository = $postsRepository;
$this->salonsRepository = $salonsRepository;
$this->brochuresRepository = $brochuresRepository;
$this->pagesRepository = $pagesRepository;
$this->categorieimagesRepository = $categorieimagesRepository;
$this->institutionsRepository = $institutionsRepository;
$this->directionsRepository = $directionsRepository;
$this->documentationsRepository = $documentationsRepository;
$this->partenairesRepository = $partenairesRepository;
$this->distinctionsRepository = $distinctionsRepository;
$this->symbolesetatsRepository = $symbolesetatsRepository;
}
/**
* @Route({"fr": "/changer-locale/{locale}", "en": "/change-local/{locale}"}, name="change_locale")
* @param string $locale
* @param Request $request
* @return Response
*/
public function changeLocale(string $locale, Request $request): Response
{
//On stock la langue demandée dans la session
$request->getSession()->set('_locale', $locale);
$request->setLocale($locale);
//On revient sur la page précédente
return $this->redirect($request->headers->get('referer'));
}
/**
* @Route("/", name="home", defaults={"title":"Bienvenue"})
* @param string $title
* @return Response
* @throws NonUniqueResultException
*/
public function home(string $title): Response
{
$actualites = $this->actualitesRepository->latest(5);
$articles = $this->articlesRepository->getIncontournable(6);
$hotelFeatured = $this->hotelsRepository->featured();
$restaurantFeatured = $this->restaurantsRepository->featured();
$postFeatured = $this->postsRepository->featured();
$articleFeatured = $this->articlesRepository->featured();
$brochures = $this->brochuresRepository->latest(6);
$enimage = $this->categorieimagesRepository->latest(6);
return $this->render('pages/home/index.html.twig', [
'title' => $title,
'actualites' => $actualites,
'articles' => $articles,
'hotelFeatured' => $hotelFeatured,
'restaurantFeatured' => $restaurantFeatured,
'postFeatured' => $postFeatured,
'brochures' => $brochures,
'articleFeatured' => $articleFeatured,
'enimages' => $enimage,
'current_page' => 'home'
]);
}
/**
* @Route("/la-cote-d-ivoire", name="ci", defaults={"title":"La Côte d'Ivoire"})
* @param string $title
* @return Response
* @throws NonUniqueResultException
*/
public function ci(string $title): Response
{
$histoire = $this->pagesRepository->findSinglePage(1);
$geographie = $this->pagesRepository->findSinglePage(2);
$institutions = $this->institutionsRepository->latest(36);
$symboles = $this->symbolesetatsRepository->latest(36);
return $this->render('pages/home/ci.html.twig', [
'title' => $title,
'histoire' => $histoire,
'geographie' => $geographie,
'institutions' => $institutions,
'symboles' => $symboles,
'menu' => 'La Côte d\'Ivoire',
'current_page' => 'ci'
]);
}
/**
* @Route("/presentation-cit", name="presentation_cit", defaults={"title":"Présentation Côte d'Ivoire"})
* @param string $title
* @param Request $request
* @param PaginatorInterface $paginator
* @return Response
* @throws NonUniqueResultException
*/
public function presentation_cit(string $title, Request $request, PaginatorInterface $paginator): Response
{
$presentation = $this->pagesRepository->findSinglePage(3);
$politique = $this->pagesRepository->findSinglePage(4);
$directions = $paginator->paginate(
$this->directionsRepository->findBy(['online' => true]), /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
$request->query->getInt('limit', 12)/*limit per page*/
);
$distinctions = $paginator->paginate(
$this->distinctionsRepository->findBy(['online' => true]), /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
$request->query->getInt('limit', 12)/*limit per page*/
);
$documentations = $paginator->paginate(
$this->documentationsRepository->findBy(['online' => true]), /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
$request->query->getInt('limit', 24)/*limit per page*/
);
$partenaires = $paginator->paginate(
$this->partenairesRepository->findBy(['online' => true]), /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
$request->query->getInt('limit', 12)/*limit per page*/
);
return $this->render('pages/home/presentation.html.twig', [
'title' => $title,
'presentation' => $presentation,
'politique' => $politique,
'directions' => $directions,
'distinctions' => $distinctions,
'documentations' => $documentations,
'partenaires' => $partenaires,
'menu' => '',
'current_page' => 'ci'
]);
}
/**
* @Route("/thematiques", name="thematiques", defaults={"title":"Les 7 Thématiques"})
* @param string $title
* @param CategoriearticlesRepository $categoriearticlesRepository
* @return Response
*/
public function thematiques(string $title, CategoriearticlesRepository $categoriearticlesRepository): Response
{
$thematiques = $categoriearticlesRepository->findBy(['menu' => 1], ['ordre' => 'ASC']);
return $this->render('pages/thematiques/thematiques.html.twig', [
'title' => $title,
'thematiques' => $thematiques,
'current_page' => 'visites'
]);
}
/**
* @Route("/enregistrement", name="enregistrements", defaults={"title":"Côte D'Ivoire Tourisme - Formulaire d'Identification Entreprises du Secteur"})
* @param string $title
* @return Response
*/
public function enregistrement(string $title): Response
{
return $this->render('pages/enregistrement.html.twig', [
'title' => $title,
'current_page' => 'home'
]);
}
}