src/Application/Service/ElasticSearch/ElasticSearchService.php line 50

Open in your IDE?
  1. <?php
  2. namespace App\Application\Service\ElasticSearch;
  3. use App\Application\Service\Cache\CacheAdapterService;
  4. use App\ViewManager\Landing\ViewService;
  5. use Psr\Cache\InvalidArgumentException;
  6. use Symfony\Component\HttpFoundation\RequestStack;
  7. class ElasticSearchService
  8. {
  9.     public const CACHE_NUM_PRODUCTS_FROM_ELASTICSEARCH 'NumProductsFromElasticSearch_';
  10.     public const MAX_FEATURES_FILTER_SHOW 14;
  11.     public const INDEX_FULL_PRODUCT 1;
  12.     public const INDEX_ONLY_STOCK_AND_PRICE 2;
  13.     public const DELETE_FROM_INDEX 3;
  14.     public const ORDER_RANDOM_VALUE 6;
  15.     public const INDEX_ONLY_BUYBOX_STATUS 4;
  16.     private RequestStack $requestStack;
  17.     private CacheAdapterService $cacheAdapterService;
  18.     public function __construct(RequestStack $requestStackCacheAdapterService $cacheAdapterService)
  19.     {
  20.         $this->requestStack $requestStack;
  21.         $this->cacheAdapterService $cacheAdapterService;
  22.     }
  23.     public function getResultsElasticSearch(string $lang, ?int $init, ?int $limitint $ajax, array $filters, ?bool $wholesaler)
  24.     {
  25.         return \Tools::getResultsElasticSearch($lang$init$limit$ajax$filters$wholesaler);
  26.     }
  27.     /**
  28.      * @return mixed
  29.      *
  30.      * @throws InvalidArgumentException
  31.      */
  32.     public function getNumTotalProductsIndexedByElastic()
  33.     {
  34.         $langId $this->requestStack->getSession()->get('id_lang');
  35.         if ($data $this->cacheAdapterService->existCache(self::CACHE_NUM_PRODUCTS_FROM_ELASTICSEARCH.$langId)) {
  36.             return $data;
  37.         }
  38.         $limitProducts ViewService::MAX_CATEGORY_PRODUCTS;
  39.         $lang $this->requestStack->getSession()->get('lang');
  40.         $filters $this->requestStack->getSession()->get('filters');
  41.         $filters = ($filters ?: ['order' => [6]]);
  42.         $ajax $this->requestStack->getSession()->get('ajax') ?? 0;
  43.         $wholesaler $this->requestStack->getSession()->get('is_wholesaler');
  44.         $result =  $this->getResultsElasticSearch(
  45.             $lang,
  46.             0,
  47.             $limitProducts,
  48.             $ajax,
  49.             $filters,
  50.             $wholesaler
  51.         );
  52.         return $this->cacheAdapterService->getCache(self::CACHE_NUM_PRODUCTS_FROM_ELASTICSEARCH.$langId$result);
  53.     }
  54.     public function getFilterValues(?array $filters): ?array
  55.     {
  56.         $filtered = [];
  57.         if (!empty($filters)) {
  58.             foreach ($filters as $item) {
  59.                 $filtered[] = $item;
  60.             }
  61.         }
  62.         return $filtered;
  63.     }
  64. }