Test Setup Failed
Push — master ( 8eb8d2...671183 )
by Churakov
04:26 queued 12s
created

EloquentDataProvider::prepareQuery()   A

Complexity

Conditions 4
Paths 6

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 5
nc 6
nop 1
dl 0
loc 9
rs 10
c 0
b 0
f 0
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
                $this->query->where($column, 'like', '%' . $value . '%');
42
            }
43
        }
44
    }
45
}
46