diff --git a/src/Filter/Widget/OptionMultiDynamicAggregate.php b/src/Filter/Widget/OptionMultiDynamicAggregate.php
deleted file mode 100644
index d69fc1f..0000000
--- a/src/Filter/Widget/OptionMultiDynamicAggregate.php
+++ /dev/null
@@ -1,220 +0,0 @@
-getAggregation(sprintf('%s-filter', $filterName));
-
- foreach ($values as $name => $value) {
- $data[$name] = $aggregation->find(sprintf('%s.%s.name', $name, $filterName));
- }
-
- $data['all-selected'] = $aggregation->find(sprintf('all-selected.%s.%s.name', $filterName, $filterName));
-
- return $data;
- }
-
- /**
- * {@inheritdoc}
- */
- public function modifySearch(Search $search, FilterState $state = null, SearchRequest $request = null)
- {
- if ($state && $state->isActive()) {
- $search->addPostFilter($this->getFilterQuery($state->getValue()));
- }
- }
-
- /**
- * Forms $unsortedChoices array with all possible choices.
- * 0 is assigned to the document count of the choices.
- *
- * @param DocumentIterator $result
- * @param ViewData $data
- *
- * @return array
- */
- protected function formInitialUnsortedChoices($result, $data)
- {
- $unsortedChoices = [];
- $urlParameters = array_merge(
- $data->getResetUrlParameters(),
- $data->getState()->getUrlParameters()
- );
-
- foreach ($result->getAggregation($data->getName())->getAggregation($data->getName())->getAggregation('name') as $nameBucket) {
- $groupName = $nameBucket['key'];
-
- foreach ($nameBucket->getAggregation('value') as $bucket) {
- $bucketArray = ['key' => $bucket['key'], 'doc_count' => 0];
- $choice = $this->createChoice($data, $bucket['key'], '', $bucketArray, $urlParameters);
- $unsortedChoices[$groupName][$bucket['key']] = $choice;
- }
- }
-
- return $unsortedChoices;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getViewData(DocumentIterator $result, ViewData $data)
- {
- $unsortedChoices = [];
- $activeNames = $data->getState()->isActive() ? array_keys($data->getState()->getValue()) : [];
- $filterAggregations = $this->fetchAggregation($result, $data->getName(), $data->getState()->getValue());
-
- if ($this->getShowZeroChoices()) {
- $unsortedChoices = $this->formInitialUnsortedChoices($result, $data);
- }
-
- /** @var AggregationValue $bucket */
- foreach ($filterAggregations as $activeName => $filterAggregation) {
- foreach ($filterAggregation as $nameAggregation) {
- $name = $nameAggregation['key'];
-
- if (($name != $activeName && $activeName != 'all-selected') ||
- ($activeName == 'all-selected' && in_array($name, $activeNames))) {
- continue;
- }
-
- foreach ($nameAggregation['value']['buckets'] as $bucket) {
- $choice = $this->createChoice($data, $name, $activeName, $bucket);
- $unsortedChoices[$name][$bucket['key']] = $choice;
- }
-
- $this->addViewDataItem($data, $name, $unsortedChoices[$name]);
- unset($unsortedChoices[$name]);
- }
- }
-
- /** @var ViewData\AggregateViewData $data */
- $data->sortItems();
-
- return $data;
- }
-
- /**
- * {@inheritdoc}
- */
- public function preProcessSearch(Search $search, Search $relatedSearch, FilterState $state = null)
- {
- [$parent, $child, $field] = explode('>', $this->getDocumentField());
- $filter = !empty($filter = $relatedSearch->getPostFilters()) ? $filter : new MatchAllQuery();
- $parentAggregation = new NestedAggregation($state->getName(), $parent);
- $childAggregation = new NestedAggregation($state->getName(), $child);
- $nameAggregation = new TermsAggregation('name', $this->getNameField());
- $valueAggregation = new TermsAggregation('value', $field);
- $filterAggregation = new FilterAggregation($state->getName() . '-filter');
- $nameAggregation->addAggregation($valueAggregation);
- $childAggregation->addAggregation($nameAggregation);
- $parentAggregation->addAggregation($childAggregation);
- $filterAggregation->setFilter($filter);
-
- if ($this->getSortType()) {
- $valueAggregation->addParameter('order', [$this->getSortType() => $this->getSortOrder()]);
- }
-
- if ($this->getOption('size')) {
- $valueAggregation->addParameter('size', $this->getOption('size'));
- }
-
- if ($state->isActive()) {
- foreach ($state->getValue() as $key => $term) {
- $terms = $state->getValue();
- unset($terms[$key]);
-
- $this->addSubFilterAggregation(
- $filterAggregation,
- $childAggregation,
- $terms,
- $key
- );
- }
- }
-
- $this->addSubFilterAggregation(
- $filterAggregation,
- $parentAggregation,
- $state->getValue() ? $state->getValue() : [],
- 'all-selected'
- );
-
- $search->addAggregation($filterAggregation);
-
- if ($this->getShowZeroChoices()) {
- $search->addAggregation($parentAggregation);
- }
- }
-
- /**
- * @param array $terms
- *
- * @return BoolQuery
- */
- private function getFilterQuery($terms)
- {
- [$parent, $child, $field] = explode('>', $this->getDocumentField());
- $boolQuery = new BoolQuery();
- foreach ($terms as $groupName => $values) {
- $innerBoolQuery = new BoolQuery();
-
- foreach ($values as $value) {
- $nestedBoolQuery = new BoolQuery();
- $nestedBoolQuery->add(new TermQuery($field, $value));
- $nestedBoolQuery->add(new TermQuery($this->getNameField(), $groupName));
-
- $inStockBoolQuery = new BoolQuery();
-
- $inStockBoolQuery->add(new RangeQuery('variants.stock', ['gte' => 1]), BoolQuery::SHOULD);
- $inStockBoolQuery->add(new TermQuery('variants.is_tracked', false), BoolQuery::SHOULD);
-
- $childBoolQuery = new BoolQuery();
- $childBoolQuery->add($inStockBoolQuery, BoolQuery::MUST);
- $childBoolQuery->add(new NestedQuery($child, $nestedBoolQuery), BoolQuery::MUST);
-
- $nestedQuery = new NestedQuery($parent, $childBoolQuery);
-
- $innerBoolQuery->add(
- $nestedQuery,
-
- BoolQuery::SHOULD
- );
- }
-
- $boolQuery->add($innerBoolQuery);
- }
-
- return $boolQuery;
- }
-}
diff --git a/src/Resources/config/app/config.yml b/src/Resources/config/app/config.yml
index 62127aa..18072cb 100644
--- a/src/Resources/config/app/config.yml
+++ b/src/Resources/config/app/config.yml
@@ -89,9 +89,9 @@ ongr_filter_manager:
options:
name_field: attributes.code
options:
- type: sylius_elastic_search.multi_dynamic_aggregate_options
+ type: sylius_elastic_search.multi_dynamic_aggregate
request_field: options
- document_field: variants>variants.options>variants.options.value.raw
+ document_field: variants.options>variants.options.value.raw
options:
name_field: variants.options.name.raw
sort_type: _term
diff --git a/src/Resources/config/services.xml b/src/Resources/config/services.xml
index ec4ce9a..89ec6fd 100644
--- a/src/Resources/config/services.xml
+++ b/src/Resources/config/services.xml
@@ -49,10 +49,6 @@
-
-
-
-