<?php
namespace App\Controller\Website\Site\Product;
use App\Controller\Website\ThemeRenderController;
use App\Entity\Generic\User;
use App\Entity\Website\Product\ProductCategory;
use App\Entity\Website\Product\ProductTag;
use App\Service\Website\Product\ProductService;
use App\Service\WebsiteManager;
use App\ViewModel\Website\Product\ProductViewModel;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Routing\Annotation\Route;
class ProductCategoryController extends ThemeRenderController
{
public EntityManagerInterface $entityManager;
public ProductService $productService;
public WebsiteManager $shopManager;
public ?Request $request;
public function __construct(RequestStack $requestStack, EntityManagerInterface $entityManager, ProductService $productCategoryService, WebsiteManager $shopManager)
{
// parent::__construct($requestStack, $entityManager);
$this->entityManager = $entityManager;
$this->productService = $productCategoryService;
$this->shopManager = $shopManager;
$this->request = $requestStack->getCurrentRequest();
}
public function getFilters(): array
{
return [
[
'name' => 's',
'type' => 'text',
'label' => 'جستجو',
'class' => '',
'value' => $this->request->get('s')
],
];
}
#[Route('/product-category/{urlSlug}', name: 'app_shop_site_product_category')]
public function index(ProductCategory $productCategory, Request $request)
{
/**
* @var User $user
*/
$user = $this->getUser();
$info = new ProductViewModel($request);
$info->setCategory($productCategory);
$data = $this->productService->getListOnSiteMegaSearch($info, $this->shopManager->getShop());
return $this->renderUserTemplate('products-category.html.twig', [
'paginator' => $data,
'currentPage' => 'app_shop_site_product_category',
'parameters' => $info,
'filters' => $this->getFilters(),
'category' => $productCategory,
]);
}
#[Route('/product-tag/{urlSlug}', name: 'app_shop_site_product_tag')]
public function app_shop_site_product_tag(ProductTag $productTag , Request $request)
{
/**
* @var User $user
*/
$user = $this->getUser();
$info = new ProductViewModel($request);
$info->setTag($productTag);
$data = $this->productService->getListOnSiteMegaSearch($info, $this->shopManager->getShop());
return $this->renderUserTemplate('products-tag.html.twig', [
'paginator' => $data,
'currentPage' => 'app_shop_site_product_category',
'parameters' => $info,
'filters' => $this->getFilters(),
'tag' => $productTag,
]);
}
}