<?php
declare(strict_types=1);
namespace App\Controller\Shop;
use App\Entity\Slide;
use App\Repository\OrderItemRepository;
use Doctrine\ORM\EntityManagerInterface;
use Sylius\Component\Taxonomy\Repository\TaxonRepositoryInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
final class HomepageController extends AbstractController
{
/** @var TaxonRepositoryInterface */
private TaxonRepositoryInterface $taxonRepository;
/** @var OrderItemRepository */
private OrderItemRepository $orderItemRepository;
/** @var EntityManagerInterface */
private EntityManagerInterface $em;
/**
* @param TaxonRepositoryInterface $taxonRepository
* @param OrderItemRepository $orderItemRepository
* @param EntityManagerInterface $em
*/
public function __construct(TaxonRepositoryInterface $taxonRepository, OrderItemRepository $orderItemRepository, EntityManagerInterface $em)
{
$this->taxonRepository = $taxonRepository;
$this->orderItemRepository = $orderItemRepository;
$this->em = $em;
}
/**
* @return Response
*/
public function indexAction(): Response
{
return $this->render('bundles/SyliusShopBundle/Homepage/index.html.twig');
}
/**
* @return Response
*/
public function renderSidebar(): Response
{
return $this->render('bundles/SyliusShopBundle/Homepage/_sidebar.html.twig', [
'taxons' => $this->taxonRepository->findAll()
]);
}
/**
* @param int|null $grid
* @return Response
*/
public function renderBestSelling(int $grid = null): Response
{
return $this->render('bundles/SyliusShopBundle/Homepage/_best_selling.html.twig', [
'products' => $this->orderItemRepository->findBestSelling(3),
'grid' => $grid
]);
}
/**
* @return Response
*/
public function renderSlides(): Response
{
return $this->render('bundles/SyliusShopBundle/Homepage/_exclusives_offers.html.twig', [
'slides' => $this->em->getRepository(Slide::class)->findBy([], ['position' => 'ASC'], 5)
]);
}
}