Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
9 / 9
FilterRequest
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
5
100.00% covered (success)
100.00%
9 / 9
 handle
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
3 / 3
 retrieveParameters
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
6 / 6
1<?php
2
3namespace Qmp\Laravel\ApiFilterRequest\Middleware;
4
5use Qmp\Laravel\ApiFilterRequest\Filters;
6use Closure;
7
8class FilterRequest
9{
10    private $acceptedParameters = [
11        'fields' => [],
12        'order_by' => [],
13        'filters' => [],
14        'aggregate' => '',
15        'limit' => null
16    ];
17
18    /**
19     * @param $request
20     * @param Closure $next
21     * @return mixed
22     */
23    public function handle($request, Closure $next)
24    {
25        $parameters = $this->retrieveParameters($request);
26        $request->merge(['filter_request' => new Filters($parameters)]);
27
28        return $next($request);
29    }
30
31    /**
32     * @param $request
33     * @return array
34     */
35    private function retrieveParameters($request)
36    {
37        $parameters = [];
38        foreach ($this->acceptedParameters as $type => $values) {
39            if ($request->filled($type)) {
40                $typeFinal = $type === 'filters' ? 'conditions' : $type;
41                $parameters[$typeFinal] = $request->$type;
42            }
43        }
44
45        return $parameters;
46    }
47}