Completed
Pull Request — master (#3)
by Denis
01:50 queued 23s
created

GridViewRequest   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 48
rs 10
c 0
b 0
f 0
wmc 8
lcom 1
cbo 1

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A parse() 0 11 5
A getFilterValue() 0 4 1
A configTests() 0 4 1
1
<?php
2
3
namespace Woo\GridView;
4
5
use Illuminate\Support\Facades\Request;
6
use Woo\GridView\Traits\Configurable;
7
8
class GridViewRequest
9
{
10
    use Configurable;
11
12
    public $page;
13
14
    public $sortColumn;
15
16
    public $sortOrder;
17
18
    public $filters = [];
19
20
    private function __construct($config)
21
    {
22
        $this->loadConfig($config);
23
    }
24
25
    /**
26
     * Allows to parse request information and making request instance
27
     * @param int $gridId
28
     * @return GridViewRequest
29
     */
30
    public static function parse(int $gridId)
31
    {
32
        $request = Request::instance();
33
34
        return new GridViewRequest([
35
            'page' => (int)$request->input($gridId == 0 ? 'page' : 'grid.' . $gridId . '.page', 1),
36
            'sortColumn' => $request->input($gridId == 0 ? 'sort' : 'grid.' . $gridId . '.sort'),
37
            'sortOrder' => $request->input($gridId == 0 ? 'order' : 'grid.' . $gridId . '.order'),
38
            'filters' => $request->input($gridId == 0 ? 'filters' : 'grid.' . $gridId . '.filters', []),
39
        ]);
40
    }
41
42
    public function getFilterValue(string $name)
43
    {
44
        return $this->filters[$name] ?? '';
45
    }
46
47
    /**
48
     * Should specify tests
49
     * @return array
50
     */
51
    protected function configTests(): array
52
    {
53
        return [];
54
    }
55
}