From 4d7dbd634bce2bce55e19e3f039ffe2d6c63fb1e Mon Sep 17 00:00:00 2001 From: alissonalbuquerque Date: Wed, 24 Apr 2024 22:59:45 -0300 Subject: [PATCH] =?UTF-8?q?feat(user/search):=20add=20camp=C3=B3s=20de=20c?= =?UTF-8?q?onsulta=20em=20cadastros=20de=20usu=C3=A1rios=20em=20admin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/UserController.php | 12 ++-- app/Search/UserSearch.php | 78 +++++++++++++++++++++ resources/views/users/_search.blade.php | 91 +++++++++++++++++++++++++ resources/views/users/index.blade.php | 9 ++- routes/users.php | 2 +- 5 files changed, 183 insertions(+), 9 deletions(-) create mode 100644 app/Search/UserSearch.php create mode 100644 resources/views/users/_search.blade.php diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 794ca7b..f1e836e 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -10,6 +10,7 @@ use App\Models\UserType; use App\Models\Util\MaskHelper; use App\Models\Util\Menu; use App\Models\Util\Status; +use App\Search\UserSearch; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; @@ -64,14 +65,13 @@ class UserController extends Controller } public function actionIndex(Request $request) - { - $users = - User::initQuery(); + { + $model_search = new UserSearch(); + + $users = $model_search->search($request->all()); - $users = $users->get(); return view('users.index', [ - 'users' => $users, - 'menu' => Menu::USERS, + 'model_search' => $model_search, 'users' => $users, 'menu' => Menu::USERS, ]); } diff --git a/app/Search/UserSearch.php b/app/Search/UserSearch.php new file mode 100644 index 0000000..f66c0d3 --- /dev/null +++ b/app/Search/UserSearch.php @@ -0,0 +1,78 @@ +_attributes as $_attribute) { + $this->$_attribute = isset($params[$_attribute]) ? $params[$_attribute] : null; + } + } + + /** @return Illuminate\Database\Eloquent\Collection */ + public function search($params = []) + { + /** @var Illuminate\Database\Eloquent\Builder */ + $query = User::where([]); + + $this->load($params); + + if($this->name) { + $name = $this->name; + $query->where("name", "like", "%{$name}%"); + } + + if($this->email) { + $email = $this->email; + $query->where("email", "like", "%{$email}%"); + } + + if($this->campus_id) { + $campus_id = $this->campus_id; + $query->where("campus_id", '=', "{$campus_id}"); + } + + if($this->curso_id) { + $curso_id = $this->curso_id; + $query->where("curso_id", '=', "{$curso_id}"); + } + + return $query->get(); + } + + /** @return Illuminate\Database\Eloquent\Relations\BelongsTo */ + public function campus() { + return $this->belongsTo(Campus::class); + } + + /** @return Illuminate\Database\Eloquent\Relations\BelongsTo */ + public function curso() { + return $this->belongsTo(Curso::class); + } +} \ No newline at end of file diff --git a/resources/views/users/_search.blade.php b/resources/views/users/_search.blade.php new file mode 100644 index 0000000..113efa6 --- /dev/null +++ b/resources/views/users/_search.blade.php @@ -0,0 +1,91 @@ + + +
+ +
+ +
+
+ + +
+
+ +
+
+ + +
+
+ +
+ +
+ +
+
+ + +
+
+ +
+
+ + +
+
+ +
+ + + +
+ + \ No newline at end of file diff --git a/resources/views/users/index.blade.php b/resources/views/users/index.blade.php index 124452e..114b5c6 100644 --- a/resources/views/users/index.blade.php +++ b/resources/views/users/index.blade.php @@ -17,11 +17,16 @@
-

Usuários

- +
+

Usuários

+
+
+
@include('components.alerts') + @include('users\_search', ['model' => $model_search]) +
@include('components.buttons.btn-create', [ 'id' => 'user_create', diff --git a/routes/users.php b/routes/users.php index 39f1564..3f6d953 100644 --- a/routes/users.php +++ b/routes/users.php @@ -3,7 +3,7 @@ use App\Http\Controllers\UserController; use Illuminate\Support\Facades\Route; -Route::prefix('/users')->group(function() { +Route::prefix('/usuarios')->group(function() { Route::get('/index', [UserController::class, 'actionIndex'])->name('user_index'); Route::get('/create', [UserController::class, 'actionCreate'])->name('user_create'); Route::post('/store', [UserController::class, 'actionStore'])->name('user_store'); -- GitLab