Skip to content
Snippets Groups Projects
HttpFilter.php 1.09 KiB
Newer Older
<?php

declare(strict_types=1);

namespace IQDEV\Packages\DoctrineHttpFilter;

use Doctrine\ORM\QueryBuilder;
use Symfony\Component\HttpFoundation\Request;

abstract class HttpFilter
{
    public const string REQUEST_FILTER_KEY = 'filters';

    protected Request $request;

    public function __construct(
        protected string $tableAlias,
        ?Request $request = null,
    ) {
        $this->request = $request ?? Request::createFromGlobals();
    }

    protected function getColumn(): string
    {
        return $this->tableAlias . '.' . $this->field;
    }

    protected function getHttpValue(): mixed
    {
        $filter = $this
            ->request
            ->query
            ->getIterator()[static::REQUEST_FILTER_KEY] ?? null;

        if ($filter === null) {
            return null;
        }

    }

    public function getParameterKey(): string
    {
        return str_replace('.', '_', $this->getColumn());
    }

    abstract public function addToQuery(QueryBuilder $queryBuilder): QueryBuilder;
}