Test Setup Failed
Push — master ( b0c301...fb80ed )
by guillaume
01:15 queued 13s
created

UsersController::grantAsAdmin()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 4
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
<?php
2
3
4
namespace App\Http\Controllers;
5
6
7
use App\Src\UseCases\Domain\DeleteUserFromOrganization;
8
use App\Src\UseCases\Domain\Users\DeleteUser;
9
use App\Src\UseCases\Domain\Users\EditUser;
10
use App\Src\UseCases\Domain\Users\GetUser;
11
use App\Src\UseCases\Domain\Users\ListUsers;
12
use App\Src\UseCases\Organizations\GetOrganization;
13
use App\Src\UseCases\Organizations\GrantUserAsAdminOrganization;
14
use App\Src\UseCases\Organizations\RevokeUserAsAdminOrganization;
15
use Illuminate\Http\Request;
16
use Illuminate\Support\Facades\Auth;
17
18
class UsersController extends Controller
19
{
20
    public function showListUsers(string $organizationId)
21
    {
22
        return view('users/list', ['organization_id' => $organizationId]);
23
    }
24
25
    public function listUsers(string $organizationId, Request $request, ListUsers $listUsers)
26
    {
27
        $page = $request->input('start')/10 + 1;
28
29
        $users = $listUsers->list($organizationId, $page, 10);
30
        $total = isset($users['total']) ? $users['total'] : 0;
31
        $list = [];
32
        foreach ($users['list'] as $user){
33
            $user = $user->toArray();
34
            $list[] = [
35
                '',
36
                ucfirst($user['firstname']).' '.ucfirst($user['lastname']),
37
                $user['email'],
38
                '', //$user['state'],
39
                '',
40
                $user['uuid'],
41
                $user['url_picture'],
42
                route('user.edit.form', ['id' => $user['uuid']])
43
            ];
44
        }
45
46
        return [
47
            'draw' => $request->get('draw'),
48
            'recordsTotal' => $total,
49
            'recordsFiltered' => $total,
50
            'data' => $list,
51
        ];
52
    }
53
54
    public function editShowForm(string $userId, GetUser $getUser, GetOrganization $getOrganization)
55
    {
56
        $user = $getUser->get($userId);
57
        if($user->organizationId() !== null) {
58
            $organization = $getOrganization->get($user->organizationId());
59
        }
60
        return view('users/edit_form', [
61
            'user' => $user->toArray(),
62
            'organization' => isset($organization) ? $organization->toArray() : null
63
        ]);
64
    }
65
66
    public function editProcess(string $userId, Request $request, EditUser $editUser)
67
    {
68
        $firstname = $request->input('firstname') !== null ? $request->input('firstname') : '';
69
        $lastname = $request->input('lastname') !== null ? $request->input('lastname') : '';
70
        $email = $request->input('email') !== null ? $request->input('email') : '';
71
        $picture = [];
72
        if($request->has('logo')){
73
            $picture['path_picture'] = $request->file('logo')->path();
74
            $picture['original_name'] = $request->file('logo')->getClientOriginalName();
75
            $picture['mine_type'] = $request->file('logo')->getMimeType();
76
        }
77
        $editUser->edit($userId, $email, $firstname, $lastname, $picture);
78
        $request->session()->flash('notif_msg', 'Mise à jour de l\'utilisateur réussie');
79
        return redirect()->back();
80
    }
81
82
    public function grantAsAdmin(string $userId, string $organizationId, Request $request, GrantUserAsAdminOrganization $grantUserAsAdminOrganization)
83
    {
84
        $grantUserAsAdminOrganization->grant($userId, $organizationId);
85
        $request->session()->flash('notif_msg', 'Mise à jour de l\'utilisateur réussie');
86
        return redirect()->back();
87
    }
88
89
    public function revokeAsAdmin(string $userId, string $organizationId, Request $request, RevokeUserAsAdminOrganization $grantUserAsAdminOrganization)
90
    {
91
        $grantUserAsAdminOrganization->revoke($userId, $organizationId);
92
        $request->session()->flash('notif_msg', 'Mise à jour de l\'utilisateur réussie');
93
        return redirect()->back();
94
    }
95
96
    public function delete(string $userId, Request $request, DeleteUser $deleteUser)
97
    {
98
        $redirect = 'back';
99
        if($userId === Auth::id()){
100
            $redirect = 'login';
101
        }
102
        $deleteUser->delete($userId);
103
        if($redirect === 'login') {
104
            return redirect()->route('login');
105
        }
106
        $request->session()->flash('notif_msg', 'L\'utilisateur a été supprimé');
107
        return redirect()->route('home');
108
    }
109
110
    public function leaveOrganization(string $userId, Request $request, DeleteUserFromOrganization $deleteUserFromOrganization)
111
    {
112
        $deleteUserFromOrganization->delete($userId);
113
        $request->session()->flash('notif_msg', 'Mise à jour de l\'utilisateur réussie');
114
        return redirect()->back();
115
    }
116
}
117