ListUsersTask   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 3
dl 0
loc 40
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A run() 0 14 3
1
<?php
2
3
namespace App\Containers\User\Tasks;
4
5
use App\Containers\User\Contracts\UserRepositoryInterface;
6
use App\Containers\User\Data\Criterias\AdminsCriteria;
7
use App\Containers\User\Data\Criterias\RoleCriteria;
8
use App\Ship\Parents\Actions\Action;
9
use App\Ship\Features\Criterias\Eloquent\OrderByCreationDateDescendingCriteria;
10
11
/**
12
 * Class ListUsersTask.
13
 *
14
 * @author Mahmoud Zalt <[email protected]>
15
 */
16
class ListUsersTask extends Action
17
{
18
19
    /**
20
     * @var \App\Containers\User\Contracts\UserRepositoryInterface
21
     */
22
    private $userRepository;
23
24
    /**
25
     * ListAndSearchUsersAction constructor.
26
     *
27
     * @param \App\Containers\User\Contracts\UserRepositoryInterface $userRepository
28
     */
29
    public function __construct(UserRepositoryInterface $userRepository)
30
    {
31
        $this->userRepository = $userRepository;
32
    }
33
34
    /**
35
     * The search text is auto-magically applied.
36
     *
37
     * @param bool|true $order
38
     *
39
     * @return  mixed
40
     */
41
    public function run($order = true, $roles = null)
42
    {
43
        if ($order) {
44
            $this->userRepository->pushCriteria(new OrderByCreationDateDescendingCriteria());
45
        }
46
47
        if ($roles) {
48
            $this->userRepository->pushCriteria(new RoleCriteria($roles));
49
        }
50
51
        $users = $this->userRepository->paginate();
52
53
        return $users;
54
    }
55
}
56