Commit 5f6ea800 authored by Vadim Galizyanov's avatar Vadim Galizyanov Committed by e.rahmanova@iq-adv.ru
Browse files

refinement of filter types

parent b57405f9
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -2,23 +2,23 @@

namespace IQDEV\Search;

use IQDEV\Search\Filter\FilterGroupCollection;
use IQDEV\Search\Filter\FilterCollection;
use IQDEV\Search\Order\OrderCollection;

final class Criteria
{
    private FilterGroupCollection $filters;
    private FilterCollection $filters;
    private OrderCollection $sorting;
    private Pagination $pagination;

    public function __construct()
    {
        $this->filters = new FilterGroupCollection();
        $this->filters = new FilterCollection();
        $this->sorting = new OrderCollection();
        $this->pagination = new Pagination();
    }

    public function filters(): FilterGroupCollection
    public function filters(): FilterCollection
    {
        return $this->filters;
    }
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ class FilterCollection extends AbstractCollection
     */
    public function getType(): string
    {
        return Filter::class;
        return FilterGroupCollection::class;
    }

    /**
+2 −2
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@ class FilterGroupCollection extends AbstractCollection
    {
        parent::__construct($data);
        $this->type = new LogicOperator(LogicOperator::AND);
        $this->filterType = new FilterType(FilterType::FILTER);
        $this->filterType = FilterType::post();
    }

    /**
@@ -23,7 +23,7 @@ class FilterGroupCollection extends AbstractCollection
     */
    public function getType(): string
    {
        return FilterCollection::class;
        return Filter::class;
    }

    /**
+14 −3
Original line number Diff line number Diff line
@@ -2,12 +2,16 @@

namespace IQDEV\Search\Filter;

/**
 * @method static self query()
 * @method static self post()
 */
final class FilterType
{
    /**
     * Тип пост фильтрации по свойствам
     * Тип пост фильтрации
     */
    public const FILTER = 'filter';
    public const POST = 'post';
    /**
     * Тип полной фильтрации
     */
@@ -34,8 +38,15 @@ final class FilterType
    public static function toArray(): array
    {
        return [
            self::FILTER,
            self::POST,
            self::QUERY
        ];
    }

    public static function __callStatic($method, $arguments)
    {
        if (in_array($method, self::toArray())) {
            return new self($method);
        }
    }
}
+12 −0
Original line number Diff line number Diff line
@@ -2,6 +2,10 @@

namespace IQDEV\Search\Filter;

/**
 * @method static self and()
 * @method static self or()
 */
final class LogicOperator
{
    public const AND = 'AND';
@@ -32,4 +36,12 @@ final class LogicOperator
            self::OR
        ];
    }

    public static function __callStatic($method, $arguments)
    {
        $method = strtoupper($method);
        if (in_array($method, self::toArray())) {
            return new self($method);
        }
    }
}