json(UserService::getData($request->user()->id)); } catch(\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function create(Request $request): JsonResponse { $request->validate([ 'phone' => ['required', 'phone:FR,national'], 'email' => ['required', 'email:strict,rfc', 'unique:users,email'], ]); $phone = new PhoneNumber($request["phone"], 'FR'); $user = User::create([ "name" => $request["name"], "email" => $request["email"], "password" => Hash::make($request["password"]), "lastname" => $request["lastname"], "validate" => 0, "phone" => $phone->formatInternational(), ]); $notification = Notification::create([ 'content' => "Nouvelle demande d'inscription : {$user->name} {$user->lastname}", ]); $admins = User::whereIn('role', [1, 2])->get(); $notification->users()->attach( $admins->pluck('id')->toArray() ); broadcast(new UserCreated($user)); return response()->json(['message' => 'User created successfully']); } public function createUserByAdmin(Request $request): JsonResponse { if(Gate::denies('createOther', $request->user())){ return response()->json(["message" => "Can't create this user"], 403); } $request->validate([ 'phone' => ['required', 'phone:FR,national'], 'email' => ['required', 'email:strict,rfc', 'unique:users,email'], ]); $phone = new PhoneNumber($request["phone"], 'FR'); $password = Str::random(12); $user = User::create([ "name" => $request["name"], "email" => $request["email"], "password" => Hash::make($password), "lastname" => $request["lastname"], "validate" => 1, "role" => 3, "phone" => $phone->formatInternational(), ]); return response()->json([ 'message' => 'User created successfully', "password" => $password, ]); } public function delete(Request $request): JsonResponse { try { $user = User::find($request->user()->id); $user->delete(); return response()->json(['message' => 'User deleted successfully']); } catch(\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function getUser(Request $request, int $id): JsonResponse { try { return response()->json(UserService::getData($id)); } catch (ModelNotFoundException $e) { return response()->json(['message' => 'Utilisateur non trouvé'], 404); } catch (\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function deleteById(Request $request, int $id): JsonResponse { if(Gate::denies('deleteOther', $request->user())){ return response()->json(["message" => "Can't delete this user"], 403); } try { $user = User::find($id); $user->delete(); return response()->json(['message' => 'User deleted successfully']); } catch(\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function deactivate(Request $request, int $id): JsonResponse { $userToDeactivate = User::findOrFail($id); if(Gate::denies('deactivate', $userToDeactivate)){ return response()->json(["message" => "Can't delete this user"], 403); } try { $userToDeactivate->update(['validate' => 0]); return response()->json(['message' => 'User deactivated successfully']); } catch (ModelNotFoundException $e) { return response()->json(['message' => 'Utilisateur non trouvé'], 404); } catch (\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function update(Request $request): JsonResponse { try { $phone = new PhoneNumber($request["phone"], 'FR'); $user = User::find($request->user()->id); $user->name = $request["name"]; $user->lastname = $request["lastname"]; $user->phone = $phone; $user->save(); return response()->json(['message' => 'User updated successfully']); } catch(\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function validate(Request $request, int $id): JsonResponse { if(Gate::denies('validate', $request->user())){ return response()->json(["message" => "Can't validate this user"], 403); } try { $user = User::find($id); $content = "Nouvelle demande d'inscription : {$user->name} {$user->lastname}"; //$notification = Notification::where('user_id', $user->id) $notification = Notification::where('content', $content)->first(); if ($notification) { $notification->users()->detach(); $notification->delete(); } $user->validate = 1; $user->role = 3; $user->verified_at = now(); $user->save(); return response()->json(['message' => 'User validated successfully']); } catch(\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function addRole(Request $request, int $id): JsonResponse { if(Gate::denies('addRole', $request->user())){ return response()->json(["message" => "Can't add role to this user"], 403); } try { $user = User::find($id); $user->role = $request['role']; $user->save(); $role = \App\Services\GetRole::getRole($request['role']); $notification = Notification::create([ 'content' => "Votre rôle à changé pour {$role} !", ]); $notification->users()->attach($user->id); return response()->json(['message' => 'User role added successfully']); } catch(\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function getUsers(Request $request): JsonResponse { try { $users = User::where('validate', 1) ->orderBy('verified_at', 'desc') ->pluck('id'); return response()->json($users); } catch(\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function getUserTasks(Request $request): JsonResponse { try { return response()->json(['data' => $request->user()->tasks]); } catch (\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function getUserByIdTasks(Request $request, int $id): JsonResponse { try { return response()->json(['data' => User::find($id)->tasks]); } catch (\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function getUserTaskById(Request $request, int $idTask): JsonResponse { try { return response()->json(['data' => $request->user()->tasks->find($idTask)]); } catch (\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } public function getInvalidUsers(Request $request): JsonResponse { if(Gate::denies('getInvalidUsers', $request->user())){ return response()->json(["message" => "Can't add role to this user"], 403); } try { $users = User::where('validate', 0)->pluck('id'); return response()->json($users); } catch (\Exception $e) { Log::info($e->getMessage()); return response()->json(['message' => "Server error"], 500); } } }