source: app/Http/Controllers/Dashboard/UsersController.php@ 8fdb18e

Last change on this file since 8fdb18e was 0df7a93, checked in by beratkjufliju <kufliju@…>, 3 years ago

bug fixes

  • Property mode set to 100644
File size: 5.7 KB
Line 
1<?php
2
3namespace App\Http\Controllers\Dashboard;
4
5use App\Helpers\Alert;
6use App\Http\Requests\Dashboard\NewUserRequest;
7use App\Http\Requests\Dashboard\UpdateUserData;
8use App\Http\Requests\Dashboard\UpdateUserRequest;
9use App\Models\Avatar;
10use App\Models\Department;
11use App\Models\Folder;
12use Carbon\Carbon;
13use Illuminate\Support\Facades\File;
14use App\Models\Role;
15use App\Models\User;
16use App\Notifications\VerifyNewEmail;
17use Illuminate\Http\Request;
18use App\Notifications\WelcomeUser;
19use App\Http\Controllers\Controller;
20use Illuminate\Support\Facades\Storage;
21
22class UsersController extends Controller
23{
24
25 public function index()
26 {
27 return view("dashboard.users.index")->with([
28 "users" => User::all(),
29 "roles" => Role::all(),
30 "adminAndReferents" => User::where("role_id", 1)->orWhere("role_id", 2)->get()
31 ]);
32 }
33
34 public function create()
35 {
36 return view("dashboard.users.create")->with([
37 "roles" => Role::all(),
38 ]);
39 }
40
41 public function store(NewUserRequest $request)
42 {
43 $user = new User();
44
45 $user->name = $request->name;
46 $user->surname = $request->surname;
47 $user->email = $request->email;
48 $user->phone_number = $request->phone_number;
49 $user->username = $request->username;
50 $user->password = $user->generateTemporaryPassword();
51 $user->security_code = $user->generateSecurityCode();
52 $user->verify_token = $user->generateVerifyToken();
53
54 $user->role_id = $request->userRole;
55
56 if ($request->hasFile("avatar")) {
57 $image = $request->file("avatar");
58 $avatarName = $user->id . '_avatar' . time() . '.' . request()->avatar->getClientOriginalExtension();
59
60 if (!empty($user->avatar)) {
61 Storage::disk('uploads')->delete("/users/" . $user->avatar);
62 }
63
64 Storage::disk('uploads')->put("/users/" . $avatarName, File::get($image));
65
66 $user->avatar = $avatarName;
67 }
68
69 $user->created_by = auth()->user()->id;
70 $user->save();
71
72 $user->notify(new WelcomeUser($user));
73
74 Alert::flash("New user added successfully");
75
76 return redirect()->route("dashboard.users.index");
77 }
78
79 public function editShow($id)
80 {
81 return view("dashboard.users.edit")->with([
82 "user" => User::findOrFail($id),
83 "roles" => Role::all(),
84 ]);
85 }
86
87 public function edit(UpdateUserRequest $request, $id)
88 {
89 $user = User::findOrFail($id);
90 $user->name = $request->name;
91 $user->surname = $request->surname;
92 $user->username = $request->username;
93 $user->email = $request->email;
94 $user->phone_number = $request->phone_number;
95 $user->role_id = $request->userRole;
96 $user->updated_at = Carbon::now();
97
98 if ($request->hasFile("avatar")) {
99 $image = $request->file("avatar");
100 $avatarName = $user->id . '_avatar' . time() . '.' . request()->avatar->getClientOriginalExtension();
101
102 if (!empty($user->avatar)) {
103 Storage::disk('uploads')->delete("/users/" . $user->avatar);
104 }
105
106 Storage::disk('uploads')->put("/users/" . $avatarName, File::get($image));
107
108 $user->avatar = $avatarName;
109 }
110
111 if($user->isDirty('email')) {
112 $user->notify(new VerifyNewEmail($user));
113 }
114 $user->save();
115
116 Alert::flash("User updated successfully");
117
118 return redirect()->route("dashboard.users.index");
119 }
120
121 public function block(Request $request, $id)
122 {
123 $user = User::find($id);
124 $user->is_active = false;
125 $user->save();
126 Alert::flash($user->name . " User blocked successfully");
127 return redirect()->route("dashboard.users.index");
128 }
129
130 public function unblock(Request $request, $id)
131 {
132 $user = User::find($id);
133 $user->is_active = true;
134 $user->save();
135 Alert::flash($user->name . " User unblocked successfully");
136 return redirect()->route("dashboard.users.index");
137 }
138
139 public function destroy(Request $request, $id)
140 {
141 $user = User::find($id);
142
143 if(Folder::where('user_id', $user->id)->count() == 0) {
144 if (Storage::disk("uploads")->exists("users" . DIRECTORY_SEPARATOR . $user->avatar)) {
145 Storage::disk("uploads")->delete("users" . DIRECTORY_SEPARATOR . $user->avatar);
146 }
147
148 $user->delete();
149
150 Alert::flash($user->name . " deleted successfully");
151
152 return redirect()->route("dashboard.users.index");
153 }
154 else {
155 Alert::flash($user->name . "has associated folders");
156
157 return redirect()->back();
158 }
159 }
160
161 public function getUserRoles()
162 {
163 $roles = Role::get();
164 return $roles;
165 }
166
167 public function editUserData(UpdateUserData $request, $id)
168 {
169 $user = User::findOrFail($id);
170 $user->name = $request->name;
171 $user->surname = $request->surname;
172 $user->phone_number = $request->phone_number;
173
174 if ($request->hasFile("avatar")) {
175 $image = $request->file("avatar");
176 $avatarName = $user->id . '_avatar' . time() . '.' . request()->avatar->getClientOriginalExtension();
177
178 if (!empty($user->avatar)) {
179 Storage::disk('uploads')->delete("/users/" . $user->avatar);
180 }
181
182 Storage::disk('uploads')->put("/users/" . $avatarName, File::get($image));
183
184 $user->avatar = $avatarName;
185 }
186
187 $user->save();
188
189 Alert::flash("User data updated successfully");
190
191 return redirect()->route("dashboard.settings.index");
192 }
193}
Note: See TracBrowser for help on using the repository browser.