TaskService::getUserTasksBuilder()   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 25
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 12
c 1
b 0
f 0
nc 2
nop 2
dl 0
loc 25
rs 9.8666
1
<?php
2
3
namespace App\Services;
4
5
use App\Models\RolePermission;
6
use App\Models\User;
7
use App\Models\UserTask;
8
use Illuminate\Database\Eloquent\Builder;
9
use Illuminate\Support\Facades\Auth;
10
11
/**
12
 * Class TaskService
13
 *
14
 * @package App\Services
15
 */
16
class TaskService
17
{
18
    /**
19
     * Get tasks builder.
20
     *
21
     * @param  int  $canManage
22
     * @param  bool  $onlyOwn
23
     *
24
     * @return UserTask|Builder
25
     */
26
    public function getUserTasksBuilder($canManage = RolePermission::MANAGE_OWN, $onlyOwn = false)
27
    {
28
        /** @var User $user */
29
        $user = Auth::user();
30
31
        $userTasks = UserTask::with([
32
            'user'         => function ($query) {
33
                $query->select(['id', 'name']);
34
            },
35
            'assignedUser' => function ($query) {
36
                $query->select(['id', 'name']);
37
            }
38
        ]);
39
40
        if ($canManage === RolePermission::MANAGE_OWN) {
41
            $userTasks = $userTasks->where(function ($query) use ($user, $onlyOwn) {
42
                $query->where('user_id', $user->id);
43
44
                if (!$onlyOwn) {
45
                    $query->orWhere('assigned_user_id', $user->id);
46
                }
47
            });
48
        }
49
50
        return $userTasks;
51
    }
52
}
53