ProfileController   A
last analyzed

Complexity

Total Complexity 20

Size/Duplication

Total Lines 141
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 88
c 1
b 0
f 0
dl 0
loc 141
rs 10
wmc 20

11 Methods

Rating   Name   Duplication   Size   Complexity  
A searchCharacteristics() 0 8 1
B updateContext() 0 12 8
A autoCompleteStructure() 0 4 1
A createCharacteristic() 0 6 1
A removeAvatar() 0 5 1
A updateCharacteristics() 0 5 1
A show() 0 23 1
A updateDescription() 0 5 1
A addCharacteristicsToContext() 0 5 1
A showEdit() 0 32 2
A updateProfilePicture() 0 11 2
1
<?php
2
3
4
namespace App\Http\Controllers\Profile;
5
6
use App\Http\Controllers\Controller;
7
use App\Src\UseCases\Domain\Context\Model\Characteristic;
8
use App\Src\UseCases\Domain\Context\Queries\GetContextByUser;
9
use App\Src\UseCases\Domain\Context\Queries\GetAllCharacteristics;
10
use App\Src\UseCases\Domain\Context\Queries\GetUserPractises;
11
use App\Src\UseCases\Domain\Context\Queries\GetInteractionsByUser;
12
use App\Src\UseCases\Domain\Context\Queries\SearchCharacteristics;
13
use App\Src\UseCases\Domain\Context\Queries\SearchStructure;
14
use App\Src\UseCases\Domain\Context\UseCases\AddCharacteristicsToContext;
15
use App\Src\UseCases\Domain\Context\UseCases\CreateCharacteristic;
16
use App\Src\UseCases\Domain\Context\UseCases\UpdateCharacteristics;
17
use App\Src\UseCases\Domain\Context\UseCases\UpdateDescription;
18
use App\Src\UseCases\Domain\Context\UseCases\UpdateMainData;
19
use App\Src\UseCases\Domain\Shared\Gateway\AuthGateway;
20
use App\Src\UseCases\Domain\Users\Dto\GetUserRole;
21
use App\Src\UseCases\Domain\Users\GetUser;
22
use App\Src\UseCases\Domain\Users\RemoveAvatar;
23
use App\Src\UseCases\Domain\Users\UpdateUserAvatar;
24
use GuzzleHttp\Client;
25
use Illuminate\Http\Request;
26
use Illuminate\Support\Facades\Auth;
27
use Illuminate\Support\Facades\Log;
28
use Ramsey\Uuid\Uuid;
29
30
class ProfileController extends Controller
31
{
32
    public function showEdit(GetContextByUser $contextQueryByUser)
33
    {
34
        $allCharacteristics = app(GetAllCharacteristics::class)->get();
35
        try {
36
            $context = $contextQueryByUser->execute(Auth::user()->uuid)->toArray();
37
        }catch (\Throwable $e){
38
            Log::emergency($e->getMessage().' '.$e->getLine().' '.$e->getFile().' '.$e->getTraceAsString());
39
            return redirect()->route('wizard.profile');
40
        }
41
42
        $user = app(AuthGateway::class)->current()->toArray();
43
        $roles = app(GetUserRole::class)->get()->toArray();
44
        $practises = app(GetUserPractises::class)->get(Auth::user()->uuid);
45
        $interactions = app(GetInteractionsByUser::class)->get(Auth::user()->uuid);
46
        $usersCharacteristics =  array_merge($context['productions'], $context['characteristics'], $context['characteristics_departement']);
47
        $uuidsUserCharacteristics = array_column($usersCharacteristics, 'uuid');
48
        $role = last($user['roles']);
49
        $routeComment = route('profile.comments.show');
50
51
        return view('users.profile.profile', [
52
            'edit' => true,
53
            'context' => $context,
54
            'userRoles' => $roles,
55
            'role' => $role,
56
            'user' => $user,
57
            'characteristics' => $usersCharacteristics,
58
            'uuidsUserCharacteristics' => $uuidsUserCharacteristics,
59
            'farmingType' => $allCharacteristics[Characteristic::FARMING_TYPE],
60
            'croppingType' => $allCharacteristics[Characteristic::CROPPING_SYSTEM],
61
            'practises' => $practises,
62
            'interactions' => $interactions,
63
            'routeComment' => $routeComment
64
        ]);
65
    }
66
67
    public function show(string $username, string $userId, GetContextByUser $contextQueryByUser)
0 ignored issues
show
Unused Code introduced by
The parameter $username is not used and could be removed. ( Ignorable by Annotation )

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

67
    public function show(/** @scrutinizer ignore-unused */ string $username, string $userId, GetContextByUser $contextQueryByUser)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
68
    {
69
        $user = app(GetUser::class)->get($userId)->toArray();
70
        $routeComment = route('profile.comments.show', ['user_id' => $userId]);
71
        $context = $contextQueryByUser->execute($userId)->toArray();
72
        $roles = app(GetUserRole::class)->get()->toArray();
73
        $practises = app(GetUserPractises::class)->get($userId);
74
        $interactions = app(GetInteractionsByUser::class)->get($userId);
75
        $usersCharacteristics =  array_merge($context['productions'], $context['characteristics']);
76
        $uuidsUserCharacteristics = array_column($usersCharacteristics, 'uuid');
77
        $role = last($user['roles']);
78
79
        return view('users.profile.profile', [
80
            'edit' => false,
81
            'context' => $context,
82
            'userRoles' => $roles,
83
            'role' => $role,
84
            'user' => $user,
85
            'characteristics' => $usersCharacteristics,
86
            'uuidsUserCharacteristics' => $uuidsUserCharacteristics,
87
            'practises' => $practises,
88
            'interactions' => $interactions,
89
            'routeComment' => $routeComment
90
        ]);
91
    }
92
93
    public function updateProfilePicture(Request $request, UpdateUserAvatar $updateUserAvatar)
94
    {
95
        $picture = [];
96
        if ($request->has('file')) {
97
            $picture['path_picture'] = $request->file('file')->path();
98
            $picture['original_name'] = $request->file('file')->getClientOriginalName();
99
            $picture['mine_type'] = $request->file('file')->getMimeType();
100
        }
101
102
        $pathPicture = $updateUserAvatar->execute(Auth::user()->uuid, $picture);
103
        return asset('storage/'.str_replace('app/public/', '', $pathPicture));
104
    }
105
106
    public function updateDescription(Request $request, UpdateDescription $updateDescription)
107
    {
108
        $description = $request->input('description', '');
109
        $updateDescription->execute($descProcessed = nl2br(htmlspecialchars($description)));
110
        return $descProcessed;
111
    }
112
113
    public function updateContext(Request $request, UpdateMainData $updateMainData)
114
    {
115
        $role = $request->input('role') !== null ? $request->input('role') : '';
116
        $firstname = $request->input('firstname') !== null ? $request->input('firstname') : '';
117
        $lastname = $request->input('lastname') !== null ? $request->input('lastname') : '';
118
        $postalCode = $request->input('postal_code') !== null ? $request->input('postal_code') : '';
119
        $email = $request->input('email') !== null ? $request->input('email') : '';
120
        $sector = $request->input('sector') !== null ? $request->input('sector') : '';
121
        $structure = $request->input('structure') !== null ? $request->input('structure') : '';
122
123
        $updateMainData->execute($postalCode, $sector, $structure, $email, $firstname, $lastname, $role);
124
        return [];
125
    }
126
127
    public function updateCharacteristics(Request $request, UpdateCharacteristics $updateCharacteristics)
128
    {
129
        $characteristics = $request->input('farming_type', []);
130
        $updateCharacteristics->execute($characteristics);
131
        return [];
132
    }
133
134
    public function autoCompleteStructure(Request $request, SearchStructure $searchStructure)
135
    {
136
        $qry = $request->input('q');
137
        return $searchStructure->execute($qry);
138
    }
139
140
    public function searchCharacteristics(Request $request, SearchCharacteristics $searchCharacteristics)
141
    {
142
        $search = $request->input('search', '');
143
        $type = $request->input('type', '');
144
        return view('users.profile.search-characteristics', [
145
            'pages' => $searchCharacteristics->execute($type, $search),
146
            'search' => $search,
147
            'type' => $type,
148
        ]);
149
    }
150
151
    public function createCharacteristic(Request $request, CreateCharacteristic $createCharacteristic)
152
    {
153
        $title = $request->input('title', '');
154
        $type = $request->input('type', '');
155
        $createCharacteristic->execute(Uuid::uuid4(), $type, $title);
156
        return redirect()->back();
157
    }
158
159
    public function addCharacteristicsToContext(Request $request, AddCharacteristicsToContext $addCharacteristicsToContext)
160
    {
161
        $characteristics = $request->input('farming_type');
162
        $addCharacteristicsToContext->execute($characteristics);
163
        return redirect()->back();
164
    }
165
166
    public function removeAvatar(RemoveAvatar $removeAvatar, AuthGateway $authGateway)
167
    {
168
        $currentUser = $authGateway->current();
169
        $removeAvatar->execute($currentUser->id());
170
        return redirect()->back();
171
    }
172
}
173