<?php
namespace App\Controller\Salons;
use App\Entity\Salons\Categoriesalons;
use App\Entity\Salons\Salons;
use App\Repository\Salons\CategoriesalonsRepository;
use App\Repository\Salons\SalonsRepository;
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/salons")
*/
class SalonsController extends AbstractController
{
/**
* @var SalonsRepository
*/
private $salonsRepository;
/**
* @var CategoriesalonsRepository
*/
private $categoriesalonsRepository;
public function __construct(SalonsRepository $salonsRepository, CategoriesalonsRepository $categoriesalonsRepository)
{
$this->salonsRepository = $salonsRepository;
$this->categoriesalonsRepository = $categoriesalonsRepository;
}
/**
* @Route("/{slug}/{id}", name="salons.index")
* @param Request $request
* @param Categoriesalons $categoriesalons
* @param PaginatorInterface $paginator
* @return Response
*/
public function index(Request $request, Categoriesalons $categoriesalons, PaginatorInterface $paginator): Response
{
$salons = $paginator->paginate(
$this->getDoctrine()->getRepository(Salons::class)->findBy(['categories' => $categoriesalons, 'online' => true]), /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
$request->query->getInt('limit', 12)/*limit per page*/
);
return $this->render('pages/internes/cit/salons/index.html.twig', [
'title' => $categoriesalons->getName(),
'categorie' => $categoriesalons,
'salons' => $salons,
'menu' => "Cote d'Ivoire Tourisme",
'current_page' => 'cit'
]);
}
/**
* @Route("/", name="salons.categories")
* @param Request $request
* @param PaginatorInterface $paginator
* @return Response
*/
public function showCategoriesSalon(Request $request, PaginatorInterface $paginator): Response
{
$CategorieSalons = $paginator->paginate(
$this->categoriesalonsRepository->findAll(), /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
$request->query->getInt('limit', 15)/*limit per page*/
);
return $this->render('pages/internes/cit/salons/showCategories.html.twig', [
'title' => 'Nos salons',
'categoriesalons' => $CategorieSalons,
'menu' => "Cote d'Ivoire Tourisme",
'current_page' => 'cit'
]);
}
/**
* @Route("/details/{slug}/{id}", name="salons.show")
* @param $slug
* @param Salons $salon
* @return Response
*/
public function show($slug, Salons $salon): Response
{
if ($salon->getSlug() !== $slug) {
return $this->redirectToRoute('salons.show', [
'id' => $salon->getId(),
'slug' => $salon->getSlug(),
], 301);
}
$othersSalons = $this->salonsRepository->getSalonRandom($salon, 3);
return $this->render('pages/internes/cit/salons/show.html.twig', [
'title' => $salon->getName(),
'salon' => $salon,
'salons' => $othersSalons,
'menu' => "Cote d'Ivoire Tourisme",
'current_page' => 'cit'
]);
}
}