From 2f563f7e4d0c39966b60c99296d9997f895234ff Mon Sep 17 00:00:00 2001 From: Admin Date: Wed, 19 Aug 2026 15:40:38 -0700 Subject: [PATCH] feat: implement users edit request in admin panel --- app/Http/Controllers/Admin/UserController.php | 94 +++++++++++++++++++ .../Requests/Admin/Users/UserEditRequest.php | 62 ++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 app/Http/Controllers/Admin/UserController.php create mode 100644 app/Http/Requests/Admin/Users/UserEditRequest.php diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php new file mode 100644 index 0000000..791769f --- /dev/null +++ b/app/Http/Controllers/Admin/UserController.php @@ -0,0 +1,94 @@ +when($request->filled('search'), function (Builder $query) use ($request){ + $search = $request->input('search'); + + $query->whereAny([ + 'first_name', + 'last_name', + 'mobile', + 'email' + ],'LIKE',"%$search%"); + }) + ->when($request->filled('sort'), function (Builder $query) use ($request) { + $sort = $request->input('sort'); + + switch ($sort){ + case 'name_asc' : { + $query + ->orderBy('first_name') + ->orderBy('last_name'); + + break; + } + case 'name_desc' : { + $query + ->orderByDesc('first_name') + ->orderByDesc('last_name'); + + break; + } + default: { + $query->orderByDesc('created_at'); + } + } + }) + ->paginate(); + + return view('admin.users.index',compact('users')); + } + + + public function edit(User $user) + { + return view('admin.users.edit', compact('user')); + } + + public function update(User $user, UserEditRequest $request) + { + + $inputs = $request->only([ + 'first_name', + 'last_name', + 'mobile', + 'email' + ]); + + if ($request->filled('password')){ + $inputs['password'] = Hash::make($request->input('password')); + } + + $user->update($inputs); + + return redirect()->route('admin.users.index'); + + } + + public function destroy(User $user) + { + $user->delete(); + + return redirect()->route('admin.users.index'); + + } +} diff --git a/app/Http/Requests/Admin/Users/UserEditRequest.php b/app/Http/Requests/Admin/Users/UserEditRequest.php new file mode 100644 index 0000000..74f6ac7 --- /dev/null +++ b/app/Http/Requests/Admin/Users/UserEditRequest.php @@ -0,0 +1,62 @@ +|string> + */ + public function rules(): array + { + return [ + 'first_name' => [ + 'nullable', + 'min:2', + 'max:100', + 'persian_alpha', + ], + + 'last_name' => [ + 'nullable', + 'min:3', + 'max:100', + 'persian_alpha', + ], + + 'email' => [ + 'nullable', + 'max:150', + 'email', + Rule::unique('users', 'email')->ignore($this->route('user')) + ], + + 'mobile' => [ + 'nullable', + 'ir_mobile:zero', + Rule::unique('users', 'mobile')->ignore($this->route('user')) + ], + 'password' => [ + 'nullable', + 'string', + 'min:6', + 'max:255', + ] + + ]; + } +}