MOON
Server: Apache
System: Linux server.royaltuning.hu 4.18.0-425.13.1.el8_7.x86_64 #1 SMP Tue Feb 21 04:20:52 EST 2023 x86_64
User: royaltuning (1001)
PHP: 8.2.32
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //var/www/html/Modules/Product/Filters/ProductFilter.php
<?php

namespace Modules\Product\Filters;

use Illuminate\Http\Request;

class ProductFilter
{
    private $request;
    private $queryStringFilter;

    public function __construct(Request $request, QueryStringFilter $queryStringFilter)
    {
        $this->request = $request;
        $this->queryStringFilter = $queryStringFilter;
    }

    public function apply($query)
    {
        $query = $query->forCard();

        foreach ($this->filters() as $name => $value) {
            if (! is_null($value)) {
                $this->queryStringFilter->{$name}($query, $value);
            }
        }

        return $query;
    }

    private function filters()
    {
        return array_filter($this->request->query(), function ($filter) {
            return $this->filterExists($filter);
        }, ARRAY_FILTER_USE_KEY);
    }

    private function filterExists($filter)
    {
        return method_exists($this->queryStringFilter, $filter) &&
            is_callable([$this->queryStringFilter, $filter]);
    }
}