src/Component/Elasticsearch/Form/Resolver/ListProductsFacetsResolver.php line 13

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace BitBag\OpenMarketplace\Component\Elasticsearch\Form\Resolver;
  4. use BitBag\OpenMarketplace\Component\Elasticsearch\QueryBuilder\ListProductsQueryBuilderInterface;
  5. use BitBag\SyliusElasticsearchPlugin\Facet\RegistryInterface;
  6. use FOS\ElasticaBundle\Finder\PaginatedFinderInterface;
  7. use Pagerfanta\Pagerfanta;
  8. use Symfony\Component\Form\FormEvent;
  9. final class ListProductsFacetsResolver implements ListProductsFacetsResolverInterface
  10. {
  11.     public function __construct(
  12.         private ListProductsQueryBuilderInterface $queryBuilder,
  13.         private RegistryInterface $facetRegistry,
  14.         private PaginatedFinderInterface $finder
  15.     ) {
  16.     }
  17.     public function resolveFacets(FormEvent $event): Pagerfanta
  18.     {
  19.         $query $this->queryBuilder->getQuery($event);
  20.         foreach ($this->facetRegistry->getFacets() as $facetId => $facet) {
  21.             $query->addAggregation($facet->getAggregation()->setName($facetId));
  22.         }
  23.         $query->setSize(0);
  24.         return $this->finder->findPaginated($query);
  25.     }
  26. }