<?php
namespace App\Controller\Espacepros;
use App\Data\SearchrestaurantData;
use App\Entity\Restaurants\Restaurants;
use App\Form\Restaurants\SearchFormRestaurantsType;
use App\Repository\Restaurants\RestaurantsRepository;
use MercurySeries\FlashyBundle\FlashyNotifier;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/sejourner/restaurants")
*/
class RestaurantsController extends AbstractController
{
/**
* @var FlashyNotifier
*/
private $flashy;
/**
* @var RestaurantsRepository
*/
private $restaurantsRepository;
public function __construct(RestaurantsRepository $restaurantsRepository, FlashyNotifier $flashy)
{
$this->restaurantsRepository = $restaurantsRepository;
$this->flashy = $flashy;
}
/**
* @Route("/", name="restaurants.index")
* @param Request $request
* @return Response
*/
public function index(Request $request): Response
{
$data = new SearchrestaurantData();
$data->page = $request->get('page', 1);
$formsearch = $this->createForm(SearchFormRestaurantsType::class, $data);
$formsearch->handleRequest($request);
$restaurants = $this->restaurantsRepository->findSearch($data);
if ($request->get('ajax')) {
return new JsonResponse([
'content' => $this->renderView('pages/espacepro/restaurants/partials/__card.html.twig', ['restaurants' => $restaurants]),
'sorting' => $this->renderView('pages/espacepro/restaurants/partials/__sorting.html.twig', ['restaurants' => $restaurants]),
'pagination' => $this->renderView('pages/espacepro/restaurants/partials/__pagination.html.twig', ['restaurants' => $restaurants]),
]);
}
//$restaurants = $this->restaurantsRepository->findRestaurantsByActivated($request->query->getInt('page', 1));
return $this->render('pages/espacepro/restaurants/index.html.twig', [
'title' => 'Espace Restauration',
'restaurants' => $restaurants,
'formsearch' => $formsearch->createView(),
'menu' => "Séjourner",
'submenu' => "Ou manger",
'current_page' => 'sejourner'
]);
}
/**
* @Route("/details/{slug}/{id}", name="restaurants.show")
* @param $slug
* @param Restaurants $restaurants
* @return Response
*/
public function show($slug, Restaurants $restaurants): Response
{
if ($restaurants->getSlug() !== $slug) {
return $this->redirectToRoute('restaurants.show', [
'id' => $restaurants->getId(),
'slug' => $restaurants->getSlug(),
], 301);
}
$othersRestaurants = $this->restaurantsRepository->getRestaurantsRandom($restaurants, 3);
return $this->render('pages/espacepro/restaurants/show.html.twig', [
'title' => $restaurants->getName(),
'restaurant' => $restaurants,
'othersRestaurants' => $othersRestaurants,
'menu' => "Séjourner",
'submenu' => "Ou manger",
'current_page' => 'sejourner'
]);
}
}