<?php
namespace App\Controller\Front;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Repository\MediaRepository;
use Knp\Component\Pager\PaginatorInterface;
use App\Repository\Banner\BannerRepository;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
class GalleryController extends AbstractController
{
/** @var BannerRepository $bannerRepository */
private $bannerRepository;
/** @var string $theme */
private $theme;
/**
* @param BannerRepository $bannerRepository
* @param Session $session
*/
public function __construct(BannerRepository $bannerRepository, SessionInterface $session)
{
$this->bannerRepository = $bannerRepository;
$this->theme = $session->get('theme', 'horse');
}
public function index(Request $request, MediaRepository $mediaRepository, PaginatorInterface $paginator): Response
{
$page = $request->query->getInt('page', 1);
$banner = $this->bannerRepository->findOneBy(['type' => $this->theme]);
$medias = $paginator->paginate($mediaRepository->findMedias(), $page, 6);
return $this->render('front/gallery/index.html.twig', compact('medias', 'banner', 'page'));
}
public function load(Request $request, MediaRepository $mediaRepository, PaginatorInterface $paginator): Response
{
$medias = [];
$page = $request->query->getInt('page', 1);
if (1 !== $page) {
$medias = $paginator->paginate($mediaRepository->findMedias(), $page, 6);
}
return $this->render('front/gallery/load.html.twig', compact('medias', 'page'));
}
public function homePortfolio(Request $request, MediaRepository $mediaRepository, PaginatorInterface $paginator): Response
{
$medias = $paginator->paginate($mediaRepository->findMedias(), 1, 3);
return $this->render('front/includes/portfolio.html.twig', compact('medias'));
}
}