Commit 4d7dbd63 authored by alissonalbuquerque's avatar alissonalbuquerque
Browse files

feat(user/search): add campós de consulta em cadastros de usuários em admin

parent 6c2ef404
...@@ -10,6 +10,7 @@ use App\Models\UserType; ...@@ -10,6 +10,7 @@ use App\Models\UserType;
use App\Models\Util\MaskHelper; use App\Models\Util\MaskHelper;
use App\Models\Util\Menu; use App\Models\Util\Menu;
use App\Models\Util\Status; use App\Models\Util\Status;
use App\Search\UserSearch;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
...@@ -64,14 +65,13 @@ class UserController extends Controller ...@@ -64,14 +65,13 @@ class UserController extends Controller
} }
public function actionIndex(Request $request) public function actionIndex(Request $request)
{ {
$users = $model_search = new UserSearch();
User::initQuery();
$users = $model_search->search($request->all());
$users = $users->get();
return view('users.index', [ return view('users.index', [
'users' => $users, 'model_search' => $model_search, 'users' => $users, 'menu' => Menu::USERS,
'menu' => Menu::USERS,
]); ]);
} }
......
<?php
namespace App\Search;
use App\Models\Campus;
use App\Models\Curso;
use App\Models\User;
use Illuminate\Database\Eloquent\Model;
class UserSearch extends Model
{
/** @var User */
public $model_base;
/** @var string */
public $name;
/** @var string */
public $email;
/** @var string|integer */
public $campus_id;
/** @var string|integer */
public $curso_id;
/** @var array */
public $_attributes = ['name', 'email', 'campus_id', 'curso_id'];
/** @return void */
public function load($params = [])
{
foreach($this->_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
<?php
/**
* @var $model App\Models\UserSearch
*/
?>
<form action="{{ route('user_index') }}" method="get">
<div class="row">
<div class="mb-3 col-6">
<div class="form-group">
<label class="form-label" for="name"> Nome </label>
<input type="text" name="name" id="name" class="form-control" placeholder="Nome" value="{{ $model->name }}">
</div>
</div>
<div class="mb-3 col-6">
<div class="form-group">
<label class="form-label" for="email"> E-Mail </label>
<input type="email" name="email" id="email" class="form-control" placeholder="E-Mail" value="{{ $model->email }}">
</div>
</div>
</div>
<div class="row">
<div class="mb-3 col-6">
<div class="form-group">
<label class="form-label" for="campus_id"> Campus </label>
<select class="form-control" name="campus_id" id="campus_id">
@if($model->campus_id)
<option value="{{$model->campus_id}}" selected> {{$model->campus}} </option>
@endif
</select>
</div>
</div>
<div class="mb-3 col-6">
<div class="form-group">
<label class="form-label" for="curso_id"> Curso </label>
<select class="form-control" name="curso_id" id="curso_id">
@if($model->curso_id)
<option value="{{$model->curso_id}}" selected> {{$model->curso}} </option>
@endif
</select>
</div>
</div>
</div>
<button type="submit" class="btn btn-primary"> Buscar </button>
</form>
<script>
//campus_id
$('#campus_id').select2(
{
placeholder: 'Unidade - Campus',
allowClear: true,
ajax: {
url: '{{ route("campus_search") }}',
dataType: 'json'
}
}).on('change', () => {
$('#curso_id').empty()
});
//curso_id
$('#curso_id').select2(
{
placeholder: 'Curso',
allowClear: true,
ajax: {
url: '{{ route("curso_search") }}',
dataType: 'json',
data: function(params) {
return {
q: params.terms,
campus_id: $('#campus_id').val(),
}
},
},
});
</script>
\ No newline at end of file
...@@ -17,11 +17,16 @@ ...@@ -17,11 +17,16 @@
<div> <div>
<h3 class="h3"> Usuários </h3> <div>
<h3 class="h3"> Usuários </h3>
<hr>
</div>
<div> <div>
@include('components.alerts') @include('components.alerts')
@include('users\_search', ['model' => $model_search])
<div class="d-flex justify-content-end mb-2"> <div class="d-flex justify-content-end mb-2">
@include('components.buttons.btn-create', [ @include('components.buttons.btn-create', [
'id' => 'user_create', 'id' => 'user_create',
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
use App\Http\Controllers\UserController; use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route; 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('/index', [UserController::class, 'actionIndex'])->name('user_index');
Route::get('/create', [UserController::class, 'actionCreate'])->name('user_create'); Route::get('/create', [UserController::class, 'actionCreate'])->name('user_create');
Route::post('/store', [UserController::class, 'actionStore'])->name('user_store'); Route::post('/store', [UserController::class, 'actionStore'])->name('user_store');
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment