Passed
Push — master ( 9f5635...6b9ecc )
by Paul
04:06
created

UserController   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Test Coverage

Coverage 83.33%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 17
c 1
b 0
f 0
dl 0
loc 37
ccs 15
cts 18
cp 0.8333
rs 10
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A show() 0 11 2
A index() 0 22 2
1
<?php
2
3
namespace Devpri\Tinre\Http\Controllers\Api\V1;
4
5
use Devpri\Tinre\Http\Controllers\Controller;
6
use Devpri\Tinre\Http\Resources\Api\V1\User as UserResource;
7
use Devpri\Tinre\Models\User;
8
use Illuminate\Database\Eloquent\Builder;
9
use Illuminate\Http\Request;
10
11
class UserController extends Controller
12
{
13 3
    public function index(Request $request)
14
    {
15 3
        $user = $request->user();
16
17 3
        if ($user->cant('viewAny', User::class)) {
18 2
            abort(401);
19
        }
20
21 1
        $search = $request->search;
22
23 1
        $query = User::query();
24
25
        $query->when($search, function ($query) use ($search) {
26
            return $query->where(function (Builder $query) use ($search) {
27
                return $query->where('name', 'LIKE', "%{$search}%")
28
                    ->orWhere('email', 'LIKE', "%{$search}%");
29
            });
30 1
        });
31
32 1
        $users = $query->orderBy('created_at', 'DESC')->paginate(30);
33
34 1
        return UserResource::collection($users)->additional(['authorized_actions' => (new User)->authorizedActions()]);
35
    }
36
37 4
    public function show(Request $request, $id)
38
    {
39 4
        $authUser = $request->user();
40
41 4
        $user = User::where('id', $id)->firstOrFail();
42
43 4
        if ($authUser->cant('view', $user)) {
44 1
            abort(401);
45
        }
46
47 3
        return new UserResource($user);
48
    }
49
}
50