Completed
Pull Request — master (#10)
by alexfloppy
07:51
created

Search::filter()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 16
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 16
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 9
nc 3
nop 2
1
<?php
2
3
namespace App\JsonApi\Users;
4
5
use CloudCreativity\LaravelJsonApi\Search\AbstractSearch;
6
use Illuminate\Database\Eloquent\Builder;
7
use Illuminate\Support\Collection;
8
use Illuminate\Support\Facades\Auth;
9
10
class Search extends AbstractSearch
11
{
12
    /**
13
     * @var int
14
     */
15
    protected $maxPerPage = 25;
16
17
    /**
18
     * @param Builder $builder
19
     * @param Collection $filters
20
     */
21
    protected function filter(Builder $builder, Collection $filters)
22
    {
23
        $user = Auth::user();
24
25
        if (!$user->hasRole('admin')) {
26
            $teamsIds = $user->teams->pluck('id')->toArray();
27
28
            $builder
29
                ->leftJoin('membership', 'users.id', 'membership.user_id')
30
                ->whereIn('team_id', $teamsIds);
31
32
            if ($filters->has('name')) {
33
                $builder->where('name', 'like', '%' . $filters->get('name') . '%');
34
            }
35
        }
36
    }
37
38
    /**
39
     * @param Collection $filters
40
     *
41
     * @return bool
42
     */
43
    protected function isSearchOne(Collection $filters)
44
    {
45
        return false;
46
    }
47
}
48