diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 794ca7b8dffdccd829307135e63b7c0404fd70f8..f1e836e06ddca08abf20fa927197ad9cefd8fc2c 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 0000000000000000000000000000000000000000..f66c0d34a0d980f6a67339dd6b02344224e1c899 --- /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 0000000000000000000000000000000000000000..113efa66baf304c9e43280d4deb85f913294abb5 --- /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 124452e24b14437584bc10f93ec80e38d808e483..114b5c65dd76177a7454504446194804a86cc097 100644 --- a/resources/views/users/index.blade.php +++ b/resources/views/users/index.blade.php @@ -17,11 +17,16 @@