<?php
declare(strict_types=1);
namespace BitBag\OpenMarketplace\Component\Elasticsearch\Form\Resolver;
use BitBag\OpenMarketplace\Component\Elasticsearch\QueryBuilder\ListProductsQueryBuilderInterface;
use BitBag\SyliusElasticsearchPlugin\Facet\RegistryInterface;
use FOS\ElasticaBundle\Finder\PaginatedFinderInterface;
use Pagerfanta\Pagerfanta;
use Symfony\Component\Form\FormEvent;
final class ListProductsFacetsResolver implements ListProductsFacetsResolverInterface
{
public function __construct(
private ListProductsQueryBuilderInterface $queryBuilder,
private RegistryInterface $facetRegistry,
private PaginatedFinderInterface $finder
) {
}
public function resolveFacets(FormEvent $event): Pagerfanta
{
$query = $this->queryBuilder->getQuery($event);
foreach ($this->facetRegistry->getFacets() as $facetId => $facet) {
$query->addAggregation($facet->getAggregation()->setName($facetId));
}
$query->setSize(0);
return $this->finder->findPaginated($query);
}
}