From 5bd9ecb8df50ac64839aac2b98cb1c0d3505c6e5 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 5 Jun 2024 13:28:37 +0100 Subject: [PATCH] Created DeleteUser request Signed-off-by: snipe --- app/Http/Requests/DeleteUserRequest.php | 89 +++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 app/Http/Requests/DeleteUserRequest.php diff --git a/app/Http/Requests/DeleteUserRequest.php b/app/Http/Requests/DeleteUserRequest.php new file mode 100644 index 0000000000..a640d6a9d2 --- /dev/null +++ b/app/Http/Requests/DeleteUserRequest.php @@ -0,0 +1,89 @@ +|string> + */ + public function rules(): array + { + + $user_to_delete = User::find(request()->route('user')); + + if ($user_to_delete) { + $this->merge([ + 'user' => request()->route('user'), + 'admin_id' => Auth::user()->id, + 'managed_users' => $user_to_delete->managesUsers()->count(), + 'managed_locations' => $user_to_delete->managedLocations()->count(), + 'assigned_assets' => $user_to_delete->assets()->count(), + 'assigned_licenses' => $user_to_delete->licenses()->count(), + 'assigned_accessories' => $user_to_delete->accessories()->count(), + ]); + } + + return [ + 'id' => ['exists:users,id'], + 'user' => Rule::notIn([Auth::user()->id]), + 'managed_users' => Rule::in([0]), + 'managed_locations' => Rule::in([0]), + 'assigned_assets' => Rule::in([0]), + 'assigned_licenses' => Rule::in([0]), + 'assigned_accessories' => Rule::in([0]), + ]; + } + + public function messages(): array + { + + $user_to_delete = User::find(request()->route('user')); + $messages = ['id.exists' => trans('admin/users/message.user_not_found')]; + + if ($user_to_delete) { + + $messages = array_merge([ + + // Cannot delete yourself + 'user.not_in' => trans('admin/users/message.error.cannot_delete_yourself'), + + // managed users is not 0 + 'managed_users.in' => trans_choice('admin/users/message.error.delete_has_users_var', $user_to_delete->managesUsers()->count(), ['count' => $user_to_delete->managesUsers()->count()]), + + // managed locations is not 0 + 'managed_locations.in' => trans_choice('admin/users/message.error.delete_has_locations_var', $user_to_delete->managedLocations()->count(), ['count' => $user_to_delete->managedLocations()->count()]), + + + // assigned_assets is not 0 + 'assigned_assets.in' => trans_choice('admin/users/message.error.delete_has_assets_var', $user_to_delete->assets()->count(), ['count' => $user_to_delete->assets()->count()]), + + // assigned licenses is not 0 + 'assigned_licenses.in' => trans_choice('admin/users/message.error.delete_has_licenses_var', $user_to_delete->licenses()->count(), ['count' => $user_to_delete->licenses()->count()]), + + // assigned accessories is not 0 + 'assigned_accessories.in' => trans_choice('admin/users/message.error.delete_has_accessories_var', $user_to_delete->accessories()->count(), ['count' => $user_to_delete->accessories()->count()]), + + ], $messages); + } + + return $messages; + } +}