<?php
namespace App\Controller\Actualites;
use App\Entity\Actualites\Actualites;
use App\Entity\Actualites\Categories;
use App\Repository\Actualites\ActualitesRepository;
use App\Services\ViewsServices;
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;
/**
* @Route("/ci-tourisme/actualites")
*/
class ActualitesController extends AbstractController
{
/**
* @var ActualitesRepository
*/
private $repository;
/**
* @var ViewsServices
*/
private $viewsServices;
public function __construct(ActualitesRepository $repository, ViewsServices $viewsServices)
{
$this->repository = $repository;
$this->viewsServices = $viewsServices;
}
/**
* @Route("/", name="cit.actualites.tourisme", defaults={"title":"Actualités tourismes"})
* @param Request $request
* @param $title
* @param PaginatorInterface $paginator
* @return Response
*/
public function index(Request $request, $title, PaginatorInterface $paginator): Response
{
$actualites = $paginator->paginate(
$this->repository->findAllOnline(), /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
$request->query->getInt('limit', 6)/*limit per page*/
);
$actualitealaune = $this->repository->features(1);
return $this->render('pages/internes/cit/actualites/index.html.twig', [
'title' => $title,
'actualites' => $actualites,
'actualitealaune' => $actualitealaune,
'menu' => "Cote d'Ivoire",
'current_page' => 'cit'
]);
}
/**
* @Route("/{slug}/{id}", name="cit.actualites.show")
* @param $slug
* @param Actualites $actualite
* @return Response
*/
public function show($slug, Actualites $actualite): Response
{
$this->viewsServices->setActualitesViews($actualite);
if ($actualite->getSlug() !== $slug) {
return $this->redirectToRoute('cit.actualites.show', [
'id' => $actualite->getId(),
'slug' => $actualite->getSlug(),
], 301);
}
$othersActualites = $this->repository->getActualitesRandom($actualite, 3);
return $this->render('pages/internes/cit/actualites/show.html.twig', [
'title' => $actualite->getName(),
'actualite' => $actualite,
'actualites' => $othersActualites,
'menu' => "Cote d'Ivoire",
'current_page' => 'cit'
]);
}
/**
* @Route("/categories/{slug}/{id}", name="cit.actualites.categories.show")
* @param Request $request
* @param Categories $categories
* @param PaginatorInterface $paginator
* @return Response
*/
public function showActualitesByCat(Request $request, Categories $categories, PaginatorInterface $paginator): Response
{
$actualites = $paginator->paginate(
$this->repository->findBy(['categories' => $categories]), /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
$request->query->getInt('limit', 10)/*limit per page*/
);
return $this->render('pages/internes/cit/actualites/categories.html.twig', [
'title' => $categories->getName(),
'categorie' => $categories,
'actualites' => $actualites,
'menu' => "Cote d'Ivoire",
'current_page' => 'cit'
]);
}
}