UsersController::listUsers()   A
last analyzed

Complexity

Conditions 6
Paths 17

Size

Total Lines 22
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 6
eloc 16
c 1
b 0
f 0
nc 17
nop 3
dl 0
loc 22
rs 9.1111
1
<?php
2
3
4
namespace App\Http\Controllers;
5
6
7
use App\Http\Common\Form\UserForm;
8
use App\Src\UseCases\Domain\Organizations\GetOrganization;
9
use App\Src\UseCases\Domain\Organizations\GrantUserAsAdminOrganization;
10
use App\Src\UseCases\Domain\Organizations\Invitation\DeleteUserFromOrganization;
11
use App\Src\UseCases\Domain\Organizations\RevokeUserAsAdminOrganization;
12
use App\Src\UseCases\Domain\Users\DeleteUser;
13
use App\Src\UseCases\Domain\Users\EditUser;
14
use App\Src\UseCases\Domain\Users\GetUser;
15
use App\Src\UseCases\Domain\Users\GetUserStats;
16
use App\Src\UseCases\Domain\Users\ListUsers;
17
use Illuminate\Http\Request;
18
use Illuminate\Support\Facades\Auth;
19
20
class UsersController extends Controller
21
{
22
    public function showListUsers(string $organizationId)
23
    {
24
        return view('users/list', ['organization_id' => $organizationId]);
25
    }
26
27
    public function listUsers(string $organizationId, Request $request, ListUsers $listUsers)
28
    {
29
        $page = $request->input('start')/10 + 1;
30
31
        $users = $listUsers->list($organizationId, $page, 10);
32
        $total = init($users['total'], 0);
33
        $list = [];
34
        foreach ($users['list'] as $user){
35
            $user = $user->toArray();
36
            $list[] = [
37
                '',
38
                $user['firstname'].' '.$user['lastname'],
39
                $user['email'],
40
                $user['state'] == false ? __('users.table.invitation_send') : __('users.table.state_active'),
41
                isset($user['last_login_at']) ?  __('users.table.last_login_occ').(new \DateTime())->setTimestamp(strtotime($user['last_login_at']))->format('Y-m-d H:i:s') : __('common.never'),
0 ignored issues
show
Bug introduced by
Are you sure __('users.table.last_login_occ') of type array|string can be used in concatenation? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

41
                isset($user['last_login_at']) ?  /** @scrutinizer ignore-type */ __('users.table.last_login_occ').(new \DateTime())->setTimestamp(strtotime($user['last_login_at']))->format('Y-m-d H:i:s') : __('common.never'),
Loading history...
42
                $user['uuid'],
43
                isset($user['url_picture']) && $user['url_picture'] !== "" ? $user['url_picture'] : url('').'/'.config('adminlte.logo_img'),
44
                route('user.edit.form', ['id' => $user['uuid']]),
45
            ];
46
        }
47
48
        return format($total, $list);
49
    }
50
51
    public function editShowForm(string $userId, GetUser $getUser, GetOrganization $getOrganization, GetUserStats $getUserStats)
52
    {
53
        $user = $getUser->get($userId);
54
        if($user->organizationId() !== null) {
55
            $organization = $getOrganization->get($user->organizationId());
56
        }
57
        $stats = $getUserStats->get($userId);
58
        return view('users/edit_form', [
59
            'user' => $user->toArray(),
60
            'stats' => $stats->toArray(),
61
            'organization' => isset($organization) ? $organization->toArray() : null,
62
            'action' => route('user.edit', ['id' => $userId])
63
        ]);
64
    }
65
66
    public function editProcess(string $userId, Request $request, EditUser $editUser, UserForm $form)
67
    {
68
        list($firstname, $lastname, $email, $picture) = $form->process();
69
        $editUser->edit($userId, $email, $firstname, $lastname, $picture);
70
        $request->session()->flash('notif_msg', __('users.message.user.updated'));
71
        return redirect()->back();
72
    }
73
74
    public function grantAsAdmin(string $userId, string $organizationId, Request $request, GrantUserAsAdminOrganization $grantUserAsAdminOrganization)
75
    {
76
        $grantUserAsAdminOrganization->grant($userId, $organizationId);
77
        $request->session()->flash('notif_msg', __('users.message.user.updated'));
78
        return redirect()->back();
79
    }
80
81
    public function revokeAsAdmin(string $userId, string $organizationId, Request $request, RevokeUserAsAdminOrganization $grantUserAsAdminOrganization)
82
    {
83
        $grantUserAsAdminOrganization->revoke($userId, $organizationId);
84
        $request->session()->flash('notif_msg', __('users.message.user.updated'));
85
        return redirect()->back();
86
    }
87
88
    public function delete(string $userId, Request $request, DeleteUser $deleteUser)
89
    {
90
        $redirect = 'back';
91
        if($userId === Auth::id()){
92
            $redirect = 'login';
93
        }
94
        $deleteUser->delete($userId);
95
        if($redirect === 'login') {
96
            return redirect()->route('login');
97
        }
98
        $request->session()->flash('notif_msg', __('users.message.user.deleted'));
99
        return redirect()->route('home');
100
    }
101
102
    public function leaveOrganization(string $userId, Request $request, DeleteUserFromOrganization $deleteUserFromOrganization)
103
    {
104
        $deleteUserFromOrganization->delete($userId);
105
        $request->session()->flash('notif_msg', __('users.message.user.updated'));
106
        return redirect()->back();
107
    }
108
}
109