Commit 1551eb52 authored by alissonalbuquerque's avatar alissonalbuquerque
Browse files

refact(routes): sepacação de rotas (group) em arquivos especificos

feat(avaliador-pad): impl de cadastro (parcialmente concluída)
parent e3988fec
<?php
namespace App\Http\Controllers;
use App\Models\AvaliadorPad;
use App\Models\Pad;
use App\Models\User;
use App\Models\Util\Dimensao;
use App\Models\Util\Status;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Validator;
class AvaliadorPadController extends Controller
{
public function actionStore(Request $request)
{
dd($request->all());
// $validator = Validator::make(
// $request->all(), UserPad::rules(), UserPad::messages()
// );
// if($validator->fails())
// {
// }
// $model = new UserPad();
// $model->fill($request->all());
// $model->save();
// $pad = Pad::find($request->pad_id);
// return redirect()
// ->route('pad_edit', ['id' => $request->pad_id])
// ->with('success', sprintf('Professor cadastrado no PAD(%s) com Sucesso!', $pad->nome));
}
public function actionUpdate(Request $request, $id)
{
}
public function actionDelete($id)
{
}
public function actionCreate($pad_id)
{
$pad = Pad::find($pad_id);
$model = new AvaliadorPad();
$status = Status::listStatus();
$users = User::all();
$dimensoes = Dimensao::listDimensao();
return view('avaliator-pad.create', [
'pad' => $pad,
'model' => $model,
'users' => $users,
'status' => $status,
'dimensoes' => $dimensoes,
]);
}
public function actionEdit($id)
{
}
public function ajaxValidation(Request $request)
{
return Response::json(['message' => true, 'status' => 200]);
$validator = Validator::make(
$request->all(), AvaliadorPad::rules(), AvaliadorPad::messages()
);
if($validator->passes()) {
return Response::json(['message' => true, 'status' => 200]);
}
return Response::json(['errors' => $validator->errors(), 'status' => 400]);
}
}
<?php
namespace App\Http\Controllers;
use App\Models\Disciplina;
use App\Queries\DisciplinaQuery;
use Illuminate\Http\Request;
class DisciplinaController extends Controller
{
/**
* @return array
*/
public function getDisciplinaByCurso($curso_id) {
$query = new DisciplinaQuery();
return $query->whereCursoId($curso_id)->get();
}
}
......@@ -212,7 +212,6 @@ class PadController extends Controller
$status = Constants::listStatus();
return view('pad.admin.edit', [
'pad' => $pad,
'menu' => $menu,
......
......@@ -11,7 +11,7 @@ use App\Models\Util\Status;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Storage;
use Maatwebsite\Excel\Facades\Excel;
......@@ -233,4 +233,40 @@ class UserController extends Controller
{
return view('users.importView');
}
}
\ No newline at end of file
/**
*
* @params Illuminate\Http\Request\Request
*/
public function actionSearch(Request $request)
{
// QueryParams
$q = $request->query('q');
$id = $request->query('id');
$user = User::where([]);
if($id) {
$user = $user->whereId($id);
}
if($q) {
$user = $user->where('name', 'like', '%'.$q.'%');
}
$users = $user->get();
$array =
$users->map(function($user, $key)
{
return [
'id' => $user->id,
'text' => $user->name,
];
});
$array = ['results' => $array];
return Response::json($array);
}
}
......@@ -5,16 +5,22 @@ namespace App\Models;
use App\Queries\UserPadQuery;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class AvaliadorPad extends Model
{
use HasFactory;
use SoftDeletes;
public $dimensoes_multiples = [];
protected $table = 'avaliador_pad';
protected $fillable = ['id', 'dimensao', 'user_id', 'pad_id'];
protected $fillable = ['user_id' , 'pad_id', 'status'];
protected $dates = ['deleted_at'];
public function Avaliador() {
public function avaliador() {
return $this->belongsTo(User::class);
}
......@@ -34,4 +40,17 @@ class AvaliadorPad extends Model
return $this->hasMany(Dimension::class);
}
public static function rules()
{
return [
];
}
public static function messages()
{
return [
];
}
}
......@@ -18,7 +18,6 @@ class Dimensao
self::PESQUISA => 'Pesquisa',
self::EXTENSAO => 'Extensão',
self::GESTAO => 'Gestão',
self::ANEXO => 'Anexo',
];
return $value !== null? $values[$value] : $values;
......
<div class="mb-3">
<h3 class="h3"> Cadastrar Avaliador (PAD) </h3>
</div>
<form id="form-user_pad" action="{{ route('avaliator-pad_store') }}" method="post">
@csrf
@method('POST')
@include('avaliator-pad.form', [
'pad' => $pad,
'model' => $model,
'users' => $users,
'status' => $status,
])
<div class="mt-1 text-end">
<div class="modal-footer">
@include('components.buttons.btn-save', [
'id' => 'btn_submit',
'content' => 'Cadastrar',
])
@include('components.buttons.btn-close_modal')
</div>
</div>
</form>
@include('pad.components.scripts.ajaxValidationById', [
'btn_submit_id' => 'btn_submit',
'form_id' => 'form-user_pad',
'form_type' => 'create_and_update',
'route' => route('avaliador-pad_ajax_validation'),
])
\ No newline at end of file
@php
function field_validate($field)
{
$type_form = 'create_and_update';
return sprintf("%s_%s", $type_form, $field);
}
@endphp
<div class="row">
<input type="hidden" name="pad_id" id="pad_id" value="{{ $pad->id }}">
<div class="mb-3 col-sm-12">
<label class="form-label" for="user_id"> Avaliador </label>
<select class="form-select @error('user_id') is-invalid @enderror ajax-errors" name="user_id" id="user_id">
<option value="0">Selecione um Avaliador</option>
@foreach($users as $user)
@if( $user->id == $model->user_id )
<option selected value="{{$user->id}}">{{$user->name}}</option>
@else
<option value="{{$user->id}}">{{$user->name}}</option>
@endif
@endforeach
</select>
@include('components.divs.errors', [
'field' => field_validate('user_id')
])
</div>
<div class="mb-3 col-sm-6">
<label class="form-label" for="pad_name"> PAD </label>
<input class="form-control" type="text" disabled value="{{ $pad->nome }}">
</div>
<div class="mb-3 col-sm-6">
<label class="form-label" for="status">Status</label>
<select class="form-select @error('status') is-invalid @enderror ajax-errors" name="status" id="status">
<option value="0">Selecione um Status</option>
@foreach($status as $value => $stat)
@if( $value == $model->status )
<option selected value="{{$value}}">{{$stat}}</option>
@else
<option value="{{$value}}">{{$stat}}</option>
@endif
@endforeach
</select>
@include('components.divs.errors', [
'field' => field_validate('nivel')
])
</div>
<div class="mb-3 col-sm-12">
<label class="form-label" for="status">Dimensões</label>
<select class="form-select @error('dimensoes_multiples') is-invalid @enderror ajax-errors" id="dimensoes_multiples" name="dimensoes_multiples[]" multiple="multiple">
@foreach ($dimensoes as $value => $dimensao)
<option value="{{$value}}">{{$dimensao}}</option>
@endforeach
</select>
{{-- @include('components.divs.errors', [
'field' => field_validate('dimensoes_multiples')
]) --}}
</div>
</div>
<script type="text/javascript">
$('#user_id').select2(
{
placeholder: 'Avaliador...',
allowClear: true,
ajax: {
url: '{{ route("user_search") }}',
dataType: 'json'
},
dropdownParent: $('#modal')
});
$('#dimensoes_multiples').select2(
{
dropdownParent: $('#modal')
});
</script>
\ No newline at end of file
......@@ -106,7 +106,6 @@
</div>
</div>
<div id="user_pad-container" class="tab-pane fade" role="tabpanel" aria-labelledby="user_pad-tab">
<div class="border rounded px-2">
......@@ -145,13 +144,13 @@
<div class="border rounded px-2">
<div class="text-end my-2">
<button type="button" class="btn btn-success valiator-pad-create"> Cadastrar Avaliador </button>
<button type="button" class="btn btn-success avaliator-pad-create"> Cadastrar Avaliador </button>
</div>
<table id="avaliator_pad-table" class="table table-hover">
<thead>
<tr>
<th scope="col"> Professor </th>
<th scope="col"> Avaliador </th>
<th scope="col"> PAD </th>
<th scope="col"> Dimensão </th>
<th scope="col"> Opções </th>
......@@ -199,7 +198,7 @@
@include('pad.components.scripts.dimensao.ensino.show_modal', [
'modal_id' => 'modal',
'route' => route('user-pad_create', ['pad_id' => $pad->id]),
'btn_class' => 'valiator-pad-create',
'route' => route('avaliator-pad_create', ['pad_id' => $pad->id]),
'btn_class' => 'avaliator-pad-create',
])
@endsection
{{--
@include('pad.components.scripts.ajaxValidation', [
'btn_submit_id' => '',
'form_id' => '',
'route' => '',
'form_type' => '',
])
--}}
<script type="text/javascript">
$('#{{ $btn_submit_id }}').click(function(e) {
e.preventDefault()
const form = $('#{{ $form_id }}').serializeArray()
$('.ajax-errors').removeClass('alert alert-danger is-valid is-invalid')
$('.ajax-errors span').empty();
$.ajax({
type: 'POST',
url: "{{ $route }}",
data: form
}).done(function(data, status) {
if(data.status == 200) {
Toastify({
text: "Campos preenchidos com sucesso",
style: {
background: "linear-gradient(to right, #00b09b, #96c93d)",
},
duration: 3000
}).showToast();
let form_keys = form.map((item) => {
return item.id
})
form_keys = cleanFormKeys(form_keys, [])
form_keys.forEach((key) => {
$('#{{ $form_id }} #'+key).addClass('is-valid')
})
$('#{{ $form_id }}').submit()
} else {
Toastify({
text: "Erro no preenchimento dos campos",
style: {
background: "linear-gradient(to right, #fe0944, #feae96)"
},
duration: 3000
}).showToast();
let form_keys = form.map((item) => {
return item.id
})
form_keys = cleanFormKeys(form_keys, Object.keys(data.errors))
form_keys.forEach((key) => {
$('#{{ $form_id }} #'+key).addClass('is-valid')
})
let keys = Object.keys(data.errors)
keys.forEach((key) => {
$('#{{ $form_id }} #'+key).addClass('is-invalid')
$('#'+key+'_'+'{{ $form_type }}'+'-error').addClass('alert alert-danger')
$('#'+key+'_'+'{{ $form_type }}'+'-error span').text(data.errors[key].shift())
})
}
}).fail(function(data, status) {
Toastify({
text: "Erro ao atualizar a atividade",
style: {
background: "linear-gradient(to right, #fe0944, #feae96)"
},
duration: 3000
}).showToast();
})
})
function cleanFormKeys(_form_keys, _errors_keys)
{
let errors_keys = _errors_keys
errors_keys.push('_token')
errors_keys.push('user_pad_id')
return (
_form_keys.filter((key) => {
return !errors_keys.includes(key)
})
)
}
</script>
......@@ -7,7 +7,7 @@
@csrf
@method('POST')
@include('user-pad._form', [
@include('user-pad.form', [
'pad' => $pad,
'model' => $model,
'users' => $users,
......
<?php
use App\Http\Controllers\AvaliadorPadController;
use Illuminate\Support\Facades\Route;
/** UserPad */
Route::prefix('/avaliator-pad')->group(function() {
Route::get('/create/{pad_id?}', [AvaliadorPadController::class, 'actionCreate'])->name('avaliator-pad_create');
Route::post('/store', [AvaliadorPadController::class, 'actionStore'])->name('avaliator-pad_store');
// Route::get('/edit/{id?}', [UserPadController::class, 'actionEdit'])->name('user-pad_edit');
// Route::post('/update/{id}', [UserPadController::class, 'actionUpdate'])->name('user-pad_update');
// Route::delete('/delete/{id}', [UserPadController::class, 'actionDelete'])->name('user-pad_delete');
Route::post('/validate', [AvaliadorPadController::class, 'ajaxValidation'])->name('avaliador-pad_ajax_validation');
});
......@@ -22,8 +22,8 @@ Route::prefix('/pad/professor')->group(function () {
});
/** PadAvaliador */
Route::prefix('/pad/avaliador')->group(function () {
Route::get('/index', [PadAvaliadorController::class, 'index'])->name('pad_index');
// Route::get('/view/{id}', [PadAvaliadorController::class, 'view'])->name('pad_view');
// Route::get('/anexo/{id}', [PadAvaliadorController::class, 'anexo'])->name('pad_anexo');
});
\ No newline at end of file
// Route::prefix('/pad/avaliador')->group(function () {
// Route::get('/index', [PadAvaliadorController::class, 'index'])->name('pad_index');
// // Route::get('/view/{id}', [PadAvaliadorController::class, 'view'])->name('pad_view');
// // Route::get('/anexo/{id}', [PadAvaliadorController::class, 'anexo'])->name('pad_anexo');
// });
\ No newline at end of file
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserPadController;
Route::prefix('/user-pad')->group(function() {
Route::get('/create/{pad_id?}', [UserPadController::class, 'actionCreate'])->name('user-pad_create');
Route::post('/store', [UserPadController::class, 'actionStore'])->name('user-pad_store');
Route::get('/edit/{id?}', [UserPadController::class, 'actionEdit'])->name('user-pad_edit');
Route::post('/update/{id}', [UserPadController::class, 'actionUpdate'])->name('user-pad_update');
Route::delete('/delete/{id}', [UserPadController::class, 'actionDelete'])->name('user-pad_delete');
Route::post('/validate', [UserPadController::class, 'ajaxValidation'])->name('user-pad_ajax_validation');
});
......@@ -7,6 +7,7 @@ Route::prefix('/users')->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');
Route::get('/search', [UserController::class, 'actionSearch'])->name('user_search');
Route::get('/edit/{id}', [UserController::class, 'actionEdit'])->name('user_edit');
Route::post('/update/{id}', [UserController::class, 'actionUpdate'])->name('user_update');
Route::delete('/delete/{id}', [UserController::class, 'actionDelete'])->name('user_delete');
......
......@@ -2,13 +2,12 @@
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\Dimensao\EnsinoController;
use App\Http\Controllers\DisciplinaController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\CoordenadorController;
use App\Http\Controllers\DiretorController;
use App\Http\Controllers\ProfessorController;
use App\Http\Controllers\AvaliadorController;
use App\Http\Controllers\UserPadController;
use Illuminate\Support\Facades\Route;
/*
......@@ -27,6 +26,8 @@ require __DIR__ . '/auth.php';
require __DIR__ . '/profile.php';
require __DIR__ . '/pad.php';
require __DIR__ . '/avaliador_pad.php';
require __DIR__ . '/professor_pad.php';
require __DIR__ . '/unidade.php';
require __DIR__ . '/campus.php';
......@@ -87,15 +88,15 @@ Route::prefix('/professor')->group(function () {
Route::delete('/delete/{id}', [ProfessorController::class, 'destroy'])->name('professor_delete');
});
// Route::prefix('/avaliador')->group(function () {
// Route::get('/index', [AvaliadorController::class, 'index'])->name('avaliador_index');
// Route::get('/avaliar', [AvaliadorController::class, 'avaliar'])->name('avaliador_avaliar');
// Route::get('/create', [AvaliadorController::class, 'create'])->name('avaliador_create');
// Route::post('/store', [AvaliadorController::class, 'store'])->name('avaliador_store');
// Route::get('/edit/{id}', [AvaliadorController::class, 'edit'])->name('avaliador_edit');
// Route::post('/update/{id}', [AvaliadorController::class, 'update'])->name('avaliador_update');
// Route::delete('/delete/{id}', [AvaliadorController::class, 'destroy'])->name('avaliador_delete');
// });
Route::prefix('/avaliador')->group(function () {
Route::get('/index', [AvaliadorController::class, 'index'])->name('avaliador_index');
Route::get('/avaliar', [AvaliadorController::class, 'avaliar'])->name('avaliador_avaliar');
Route::get('/create', [AvaliadorController::class, 'create'])->name('avaliador_create');
Route::post('/store', [AvaliadorController::class, 'store'])->name('avaliador_store');
Route::get('/edit/{id}', [AvaliadorController::class, 'edit'])->name('avaliador_edit');
Route::post('/update/{id}', [AvaliadorController::class, 'update'])->name('avaliador_update');
Route::delete('/delete/{id}', [AvaliadorController::class, 'destroy'])->name('avaliador_delete');
});
Route::prefix('/user')->group(function () {
Route::get('/edit/perfil/{tab?}', [UserController::class, 'editPerfil'])->name('edit_perfil');
......@@ -103,17 +104,3 @@ Route::prefix('/user')->group(function () {
Route::post('/update/password', [UserController::class, 'updatePassword'])->name('update_password');
});
/** json */
Route::get('/disciplina/{curso_id}', [DisciplinaController::class, 'getDisciplinaByCurso'])->name('get_disciplina_by_curso');
/** UserPad */
Route::prefix('/user-pad')->group(function() {
Route::get('/create/{pad_id?}', [UserPadController::class, 'actionCreate'])->name('user-pad_create');
Route::post('/store', [UserPadController::class, 'actionStore'])->name('user-pad_store');
Route::get('/edit/{id?}', [UserPadController::class, 'actionEdit'])->name('user-pad_edit');
Route::post('/update/{id}', [UserPadController::class, 'actionUpdate'])->name('user-pad_update');
Route::delete('/delete/{id}', [UserPadController::class, 'actionDelete'])->name('user-pad_delete');
Route::post('/validate', [UserPadController::class, 'ajaxValidation'])->name('user-pad_ajax_validation');
});
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