EloquentDataProvider   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 11
c 1
b 0
f 1
dl 0
loc 33
rs 10
wmc 6

2 Methods

Rating   Name   Duplication   Size   Complexity  
A get() 0 5 1
A prepareQuery() 0 13 5
1
<?php
2
3
namespace ChurakovMike\EasyGrid\DataProviders;
4
5
use ChurakovMike\EasyGrid\Helpers\SortHelper;
6
use Illuminate\Http\Request;
7
use Illuminate\Support\Collection;
8
9
/**
10
 * Class EloquentDataProvider.
11
 * @package ChurakovMike\EasyGrid\DataProviders
12
 */
13
class EloquentDataProvider extends BaseDataProvider
14
{
15
    /**
16
     * Get result.
17
     *
18
     * @param Request $request
19
     * @return Collection
20
     */
21
    public function get(Request $request): Collection
22
    {
23
        return $this->query->offset(($request->page - 1) * ($request->perPage))
24
            ->limit($request->perPage)
25
            ->get() ?? new Collection();
26
    }
27
28
    /**
29
     * Prepare query parameters.
30
     *
31
     * @param Request $request
32
     */
33
    public function prepareQuery(Request $request)
34
    {
35
        if ($request->get('sort', null)) {
36
            $this->query->orderBy(SortHelper::getSortColumn($request), SortHelper::getDirection($request));
37
        }
38
39
        if (!is_null($request->filters)) {
40
            foreach ($request->filters as $column => $value) {
41
                if (is_null($value)) {
42
                    continue;
43
                }
44
45
                $this->query->where($column, 'like', '%' . $value . '%');
46
            }
47
        }
48
    }
49
}
50