src/Controller/FrontendShop/CatalogController.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\Controller\FrontendShop;
  3. use App\Entity\Gos\Category;
  4. use App\Entity\Gos\ProductMainType;
  5. use App\Entity\Gos\ProductVariant;
  6. use App\Entity\Gos\Tmpl\TemplateType;
  7. use App\Utils\Eforum\SearchUtil;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use App\Entity\Gos\Tmpl\Template as TemplateEntity;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. class CatalogController extends AbstractController
  14. {
  15.     private $em;
  16.     private $searchUtils;
  17.     public function __construct(EntityManagerInterface $emSearchUtil $searchUtil)
  18.     {
  19.         $this->em $em;
  20.         $this->searchUtils $searchUtil;
  21.     }
  22.     /**
  23.      * @Route("/kategoria/{category}/{productType}", name="category_show")
  24.      */
  25.     public function categoriesAction(Request $request$category null$productType null)
  26.     {
  27.         $canonical  null;
  28.         $filters    = array();
  29.         $template   $this->em->getRepository(TemplateEntity::class)->findOneBy(array(
  30.             'templateType' => $this->em->getRepository(TemplateType::class)->findOneByName('category')
  31.         ));
  32.         if ($category === 'wszystkie-produkty')
  33.         {
  34.             $category null;
  35.         }
  36.         if ($category !== null)
  37.         {
  38.             $categoryEntity $this->em->getRepository(Category::class)->findOneByCategorySlug($category);
  39.             if ($categoryEntity === null)
  40.             {
  41.                 throw $this->createNotFoundException();
  42.             }
  43.             $filters['mainCategory'] = $categoryEntity->getId();
  44.         }
  45.         if ($productType !== null)
  46.         {
  47.             $productTypeEntity $this->em->getRepository(ProductMainType::class)->findOneBySlug($productType);
  48.             if ($productTypeEntity)
  49.             {
  50.                 $filters['productType'] = $productTypeEntity->getId();
  51.             }
  52.         }
  53.         $this->searchUtils->appendFilters($request$filters);
  54.         if ($request->query->get('page') > 1)
  55.         {
  56.             $canonical explode('?',$request->getUri())[0];
  57.         }
  58.         $parameters $this->searchUtils->filterData($request$template$filters$canonical);
  59.         $parameters['category'] = $categoryEntity ?? null;
  60.         $product_variants $this->em->getRepository(ProductVariant::class)
  61.             ->findBy(
  62.                 ['isPublished' => true,
  63.                  'variantState' => 'Active']
  64.             );
  65.         $dataLayer['ecomm_prodid'] = false;
  66.         /** @var ProductVariant $variant */
  67.         foreach ($product_variants as $variant)
  68.         {
  69.             if ((preg_match('/ekonomiczn/'strtolower($variant->getTradeName())))
  70.                 or
  71.                 (preg_match('/jednostanowiskow/'strtolower($variant->getTradeName())))
  72.             )
  73.             {
  74.                 $dataLayer['ecomm_prodid'] = $dataLayer['ecomm_prodid'] . $variant->getProductVariantNoComplete() . ';';
  75.             }
  76.         }
  77.         $parameters['dataLayer'] = $dataLayer;
  78.         return $this->render('/frontend-eforum/category/results.html.twig'$parameters);
  79.     }
  80. }