<?php
namespace App\Controller;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use App\Entity\Category;
use App\Entity\SearchFilter\ProductCategorySearchFilter;
use App\Form\BackOffice\SearchFilter\ProductCategorySearchType;
use App\Repository\CategoryRepository;
use App\Repository\OrderRepository;
use App\Repository\ProductRepository;
use App\Repository\SubcategoryRepository;
use Knp\Component\Pager\PaginatorInterface;
#[Route('/category')]
class ProductCategoryController extends AbstractController
{
private $logger;
public function __construct(
LoggerInterface $logger
) {
$this->logger = $logger;
}
#[Route('/{slug}/{subcategorySlug?}', name: 'product_category_show', methods: ["GET"])]
public function aboutUs(
Request $request,
Category $category,
?string $subcategorySlug = null,
CategoryRepository $categoryRepository,
SubcategoryRepository $subCategoryRepository,
ProductRepository $productRepository,
PaginatorInterface $paginator,
OrderRepository $orderRepository,
): Response {
$this->logger->debug(__METHOD__);
$products = array();
$subcategory=null;
if ($subcategorySlug) {
$subcategory = $subCategoryRepository->findOneBySlug($subcategorySlug);
}
if($subcategory){
$products = $productRepository->getBySubCategory([$subcategory->getId()]);
}else{
$products = $productRepository->getByCategory([$category->getId()]);
}
// list of categories anb subcategories
$categories = $categoryRepository->getActiveCategoriesWithSubcategories();
// list of product groups pending order
$groupsProducts = $orderRepository->getPendingProductGroupsOrders();
return $this->render('category/show.html.twig', compact(
'products', 'category','categories','subcategory','groupsProducts'));
}
/*
// category products with province filter
#[Route('/{slug}', name: 'product_category_show', methods: ["GET"])]
public function aboutUs(
Request $request,
Category $category,
CategoryRepository $categoryRepository,
ProductRepository $productRepository,
PaginatorInterface $paginator
): Response {
$this->logger->debug(__METHOD__);
$filterForm = new ProductCategorySearchFilter();
$filterForm->setSort($request->query->get('sort'));
$filterForm->setDirection($request->query->get('direction'));
$filterForm->setFilter(ProductCategorySearchFilter::FILTER_ACTIVE);
$searchForm = $this->createForm(ProductCategorySearchType::class, $filterForm, [
'method' => 'GET',
]);
$searchForm->handleRequest($request);
$query = $productRepository->getByCategoryAndFilter($category->getId(), $filterForm);
$pagination = $paginator->paginate(
$query,
$request->query->get('page', 1),
1000
);
return $this->render('category/show.html.twig', [
'products' => $pagination,
'category' => $category,
'searchForm' => $searchForm->createView(),
]);
}
*/
}