Skip to content
PropertyFilter.php 1.44 KiB
Newer Older
<?php

declare(strict_types=1);

namespace IQDEV\ElasticSearch\Converter\Request\Filter;

use IQDEV\ElasticSearch\Converter\Request\Filter\Type\KeywordFilterType;
use IQDEV\ElasticSearch\Converter\Request\Filter\Type\RangeFilterType;
Nikita Chernykh's avatar
Nikita Chernykh committed
use IQDEV\ElasticSearch\Criteria\Filter\Collection\FilterGroupCollection;
use IQDEV\ElasticSearch\Criteria\Filter\Filter;
use IQDEV\ElasticSearch\Search\BoolQuery\Query;

class PropertyFilter extends AbstractFilterQuery
{
Nikita Chernykh's avatar
Nikita Chernykh committed
    public function getQuery(FilterGroupCollection $filterGroupCollection, array $exclude = []): Query
Nikita Chernykh's avatar
Nikita Chernykh committed
        $query = new Query();

Nikita Chernykh's avatar
Nikita Chernykh committed
        $keywordFiltersGroup = $filterGroupCollection->getKeywordFilters($exclude);
        foreach ($keywordFiltersGroup as $keywordFilter) {
            /** @var Filter $keywordFilter */
            $esableFilter = new KeywordFilterType($keywordFilter);

Nikita Chernykh's avatar
Nikita Chernykh committed
            $this->setFilterByLogic($query, $filterGroupCollection->getLogicOperator(), $esableFilter->getEsable());
Nikita Chernykh's avatar
Nikita Chernykh committed
        $rangeFilterGroup = $filterGroupCollection->getRangeFilters($exclude);
        $rangesFilter = RangeFilterType::getFiltersByOneProperty($rangeFilterGroup);
        foreach ($rangesFilter as $filterGroup) {
            /** @var FilterGroupCollection $filterGroup */

            $esableFilter = new RangeFilterType($filterGroup);
Nikita Chernykh's avatar
Nikita Chernykh committed
            $this->setFilterByLogic($query, $filterGroupCollection->getLogicOperator(), $esableFilter->getEsable());
Nikita Chernykh's avatar
Nikita Chernykh committed
        return $query;