Commit 07d2782b authored by alissonalbuquerque's avatar alissonalbuquerque
Browse files

add correções de CRUDs de ADMIN

parent dafe5d5e
...@@ -9,7 +9,7 @@ use App\Queries\CampusQuery; ...@@ -9,7 +9,7 @@ use App\Queries\CampusQuery;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\Util\MenuItemsAdmin; use App\Models\Util\MenuItemsAdmin;
use Illuminate\Log\Logger; use Illuminate\Log\Logger;
use Illuminate\Support\Facades\Response;
class CampusController extends Controller class CampusController extends Controller
{ {
...@@ -126,4 +126,40 @@ class CampusController extends Controller ...@@ -126,4 +126,40 @@ class CampusController extends Controller
{ {
return Campus::initQuery()->whereUnidadeId($unidade_id)->orderBy('name')->get(); return Campus::initQuery()->whereUnidadeId($unidade_id)->orderBy('name')->get();
} }
/**
*
* @params Illuminate\Http\Request\Request
*/
public function actionSearch(Request $request)
{
// QueryParams
$q = $request->query('q');
$id = $request->query('id');
$campus = Campus::where([]);
if($id) {
$campus = $campus->whereId($id);
}
if($q) {
$campus = $campus->where('name', 'like', '%'.$q.'%');
}
$campus = $campus->get();
$array =
$campus->map(function($campus, $key)
{
return [
'id' => $campus->id,
'text' => $campus->name,
];
});
$array = ['results' => $array];
return Response::json($array);
}
} }
...@@ -4,10 +4,9 @@ namespace App\Http\Controllers; ...@@ -4,10 +4,9 @@ namespace App\Http\Controllers;
use App\Models\Campus; use App\Models\Campus;
use App\Models\Curso; use App\Models\Curso;
use App\Models\Unidade;
use App\Models\Util\Menu; use App\Models\Util\Menu;
use App\Models\Util\MenuItemsAdmin;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Response;
class CursoController extends Controller class CursoController extends Controller
{ {
...@@ -116,8 +115,9 @@ class CursoController extends Controller ...@@ -116,8 +115,9 @@ class CursoController extends Controller
/** /**
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param int $id * @param string $q
* @param string $id
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function destroy($id) public function destroy($id)
...@@ -126,4 +126,45 @@ class CursoController extends Controller ...@@ -126,4 +126,45 @@ class CursoController extends Controller
$model->delete(); $model->delete();
return redirect()->route('curso_index')->with('success', 'Excluído com sucesso!'); return redirect()->route('curso_index')->with('success', 'Excluído com sucesso!');
} }
/**
*
* @params Illuminate\Http\Request\Request
*/
public function actionSearch(Request $request)
{
// QueryParams
$q = $request->query('q');
$id = $request->query('id');
$campus_id = $request->query('campus_id');
$cursos = Curso::where([]);
if($campus_id) {
$cursos = $cursos->whereId($campus_id);
}
if($id) {
$cursos = $cursos->whereId($id);
}
if($q) {
$cursos = $cursos->where('name', 'like', '%'.$q.'%');
}
$cursos = $cursos->get();
$array =
$cursos->map(function($curso, $key)
{
return [
'id' => $curso->id,
'text' => $curso->name,
];
});
$array = ['results' => $array];
return Response::json($array);
}
} }
...@@ -5,7 +5,6 @@ namespace App\Http\Controllers; ...@@ -5,7 +5,6 @@ namespace App\Http\Controllers;
use App\Models\Unidade; use App\Models\Unidade;
use App\Models\Util\Menu; use App\Models\Util\Menu;
use App\Models\Util\MenuItemsAdmin; use App\Models\Util\MenuItemsAdmin;
use App\Queries\UnidadeQuery;
use Illuminate\Http\Request; use Illuminate\Http\Request;
class UnidadeController extends Controller class UnidadeController extends Controller
...@@ -121,6 +120,6 @@ class UnidadeController extends Controller ...@@ -121,6 +120,6 @@ class UnidadeController extends Controller
*/ */
public function getAll() public function getAll()
{ {
return UnidadeQuery::all(); return Unidade::all();
} }
} }
...@@ -18,9 +18,12 @@ use NunoMaduro\Collision\Adapters\Phpunit\State; ...@@ -18,9 +18,12 @@ use NunoMaduro\Collision\Adapters\Phpunit\State;
class UserController extends Controller class UserController extends Controller
{ {
public function editPerfil() public function editPerfil($tab = null)
{ {
return view('user.update_perfil', ['menu' => Menu::USER]); return view('user.update_perfil', [
'tab' => $tab,
'menu' => Menu::USER,
]);
} }
public function updatePerfil(Request $request) public function updatePerfil(Request $request)
...@@ -42,15 +45,15 @@ class UserController extends Controller ...@@ -42,15 +45,15 @@ class UserController extends Controller
{ {
$validator = User::validatorPassword($request->all()); $validator = User::validatorPassword($request->all());
// if($validator->fails()) { if($validator->fails()) {
// return redirect()->back()->withErrors($validator->errors()); return redirect()->route('edit_perfil', ['tab' => 'password'])->withErrors($validator->errors());
// } }
// $user = User::find(Auth::user()->id); $model = User::find(Auth::user()->id);
// $user->fill($request->all()); $model->password = Hash::make($request->password);
// $user->save(); $model->save();
// return redirect()->route('edit_perfil')->with('success', 'Salvo com sucesso!'); return redirect()->route('edit_perfil', ['tab' => 'user'])->with('success', 'Senha salva com sucesso!');
} }
...@@ -67,7 +70,7 @@ class UserController extends Controller ...@@ -67,7 +70,7 @@ class UserController extends Controller
} }
// Admin // Admin
public function actionCreate(Request $request) public function actionCreate()
{ {
$model = new User(); $model = new User();
...@@ -82,7 +85,7 @@ class UserController extends Controller ...@@ -82,7 +85,7 @@ class UserController extends Controller
$validator = User::validator($request->all()); $validator = User::validator($request->all());
if($validator->fails()) { if($validator->fails()) {
return redirect()->route('user_create')->withErrors($validator); return redirect()->route('user_create')->withErrors($validator)->withInput();
} }
$model = new User(); $model = new User();
...@@ -101,7 +104,8 @@ class UserController extends Controller ...@@ -101,7 +104,8 @@ class UserController extends Controller
} }
public function actionEdit(Request $request, $id) public function actionEdit(Request $request, $id)
{ {
$model = User::find($id); $model = User::find($id);
$profiles = $model->profiles; $profiles = $model->profiles;
$status = [ $status = [
...@@ -113,21 +117,39 @@ class UserController extends Controller ...@@ -113,21 +117,39 @@ class UserController extends Controller
Session::flash('warning', 'Não existem papeis cadastrados para esse usuário!'); Session::flash('warning', 'Não existem papeis cadastrados para esse usuário!');
} }
$tab_active = $request->query('tab_active') ?? 'user';
return view('users.update', [ return view('users.update', [
'menu' => Menu::USERS, 'menu' => Menu::USERS,
'model' => $model, 'model' => $model,
'status' => $status, 'status' => $status,
'profiles' => $profiles, 'profiles' => $profiles,
'tab_active' => $tab_active
]); ]);
} }
public function actionUpdate($id, Request $request) public function actionUpdate(Request $request, $id)
{ {
dd($id); $model = User::find($id);
}
public function actionDelete($id) { $validator = User::validator($request->all(), $model->id);
if($validator->fails()) {
return redirect()->route('user_edit', ['id' => $model->id])->withErrors($validator)->withInput();
}
$model->fill($request->all());
if($model->save()) {
return redirect()->route('user_index')->with('success', 'Usuário atualizado com sucesso!');
}
return redirect()->with('fail', 'Falha ao cadastrar Usuário!');
}
public function actionDelete($id)
{
dd($id);
} }
public function actionImport(Request $request) public function actionImport(Request $request)
......
...@@ -13,9 +13,7 @@ class UserTypeController extends Controller ...@@ -13,9 +13,7 @@ class UserTypeController extends Controller
{ {
public function actionStore(Request $request) public function actionStore(Request $request)
{ {
$validator = Validator::make( $validator = Validator::make($request->all(), UserType::rules(), UserType::messages());
$request->all(), UserType::rules(), UserType::messages()
);
if($validator->fails()) if($validator->fails())
{ {
...@@ -28,7 +26,7 @@ class UserTypeController extends Controller ...@@ -28,7 +26,7 @@ class UserTypeController extends Controller
$model->save(); $model->save();
return redirect() return redirect()
->route('user_edit', ['id' => $request->user_id]) ->route('user_edit', ['id' => $request->user_id, 'tab_active' => 'paper'])
->with('success', 'Papel cadastrado com Sucesso!'); ->with('success', 'Papel cadastrado com Sucesso!');
} }
...@@ -39,7 +37,12 @@ class UserTypeController extends Controller ...@@ -39,7 +37,12 @@ class UserTypeController extends Controller
public function actionDelete($id) public function actionDelete($id)
{ {
$model = UserType::find($id);
$model->delete();
return redirect()
->route('user_edit', ['id' => $model->user_id, 'tab_active' => 'paper'])
->with('success', 'Papel removido com Sucesso!');
} }
public function actionCreate($user_id) public function actionCreate($user_id)
...@@ -74,8 +77,12 @@ class UserTypeController extends Controller ...@@ -74,8 +77,12 @@ class UserTypeController extends Controller
public function ajaxValidation(Request $request) public function ajaxValidation(Request $request)
{ {
$id = $request->id;
$user_id = $request->user_id;
$type = $request->type;
$validator = Validator::make( $validator = Validator::make(
$request->all(), UserType::rules(), UserType::messages() $request->all(), UserType::rules($id, $user_id, $type), UserType::messages()
); );
if($validator->passes()) { if($validator->passes()) {
......
...@@ -2,18 +2,21 @@ ...@@ -2,18 +2,21 @@
namespace App\Models; namespace App\Models;
use App\Models\Util\Status;
use App\Queries\UserQuery; use App\Queries\UserQuery;
use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable; use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
use Laravel\Sanctum\HasApiTokens; use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable class User extends Authenticatable
{ {
use HasApiTokens, HasFactory, Notifiable; use HasApiTokens, HasFactory, Notifiable, SoftDeletes;
protected $table = "users"; protected $table = "users";
...@@ -32,16 +35,30 @@ class User extends Authenticatable ...@@ -32,16 +35,30 @@ class User extends Authenticatable
/** /**
* The attributes that should be cast. * The attributes that should be cast.
* @var array<string, string> * @var array<string, string>
* @var boolean $isUpdate
*/ */
protected $casts = [ protected $casts = [
'email_verified_at' => 'datetime' 'email_verified_at' => 'datetime'
]; ];
public static function validator(array $attributes) protected $dates = ['deleted_at'];
{
public static function validator(array $attributes, $id = null)
{
$rules = [ $rules = [
'name' => ['required', 'min:4'], 'name' => ['required', 'min:4'],
'email' => ['required', 'email'] 'email' => ['required', 'email', Rule::unique('users')->ignore($id)],
'curso_id' => ['integer'],
'campus_id' => ['integer'],
'status' => [
Rule::requiredIf ( function() use($id)
{
return (bool) $id;
}),
Rule::in([Status::ATIVO, Status::INATIVO]),
'required_with:id',
'integer',
],
]; ];
$messages = [ $messages = [
...@@ -51,7 +68,19 @@ class User extends Authenticatable ...@@ -51,7 +68,19 @@ class User extends Authenticatable
//email //email
'email.required' => 'O campo "E-Mail" é obrigatório.', 'email.required' => 'O campo "E-Mail" é obrigatório.',
'email.email' => 'O campo "E-Mail" deve conter um e-mail valido.' 'email.email' => 'O campo "E-Mail" deve conter um e-mail valido.',
'email.unique' => 'O "E-Mail" informado já foi cadastrado no sistema.',
//status
'status.required' => 'O campo "Status" é obrigatório.',
'status.in' => 'Selecione uma opção da lista de "Status"!',
'status.integer' => 'O campo "Status" deve cónter um inteiro!',
//curso_id
'curso_id.integer' => 'O campo "Curso" deve cónter um inteiro!',
//campus_id
'campus_id.integer' => 'O campo "Campus" deve cónter um inteiro!',
]; ];
try { try {
...@@ -64,12 +93,14 @@ class User extends Authenticatable ...@@ -64,12 +93,14 @@ class User extends Authenticatable
public static function validatorPassword(array $attributes) public static function validatorPassword(array $attributes)
{ {
$rules = [ $rules = [
'password' => ['required', 'min:8'], 'password' => ['required', 'min:8', 'max:255', 'confirmed'],
'password_confirmation' => [],
]; ];
$messages = [ $messages = [
'password.required' => 'A "Senha" é obrigatória!',
'password.min' => 'A "Senha" deve contér no minímo 8 caracteres!',
'password.max' => 'A campo "Senha" deve contér no máximo 255 caracteres!',
'password.confirmed' => 'As senhas devem ser iguais!',
]; ];
try{ try{
......
...@@ -6,9 +6,15 @@ use App\Models\Pad; ...@@ -6,9 +6,15 @@ use App\Models\Pad;
use App\Models\Util\Status; use App\Models\Util\Status;
use App\Queries\UserTypeQuery; use App\Queries\UserTypeQuery;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException;
class UserType extends Model class UserType extends Model
{ {
use SoftDeletes;
const ADMIN = 1; // Administrador const ADMIN = 1; // Administrador
const TEACHER = 2; // Professor const TEACHER = 2; // Professor
const DIRECTOR= 3; // Diretor const DIRECTOR= 3; // Diretor
...@@ -19,6 +25,8 @@ class UserType extends Model ...@@ -19,6 +25,8 @@ class UserType extends Model
protected $fillable = ['user_id', 'pad_id', 'type', 'status', 'selected']; protected $fillable = ['user_id', 'pad_id', 'type', 'status', 'selected'];
protected $dates = ['deleted_at'];
public function user() public function user()
{ {
return $this->belongsTo(User::class); return $this->belongsTo(User::class);
...@@ -49,16 +57,43 @@ class UserType extends Model ...@@ -49,16 +57,43 @@ class UserType extends Model
{ {
return new UserTypeQuery(get_called_class()); return new UserTypeQuery(get_called_class());
} }
public static function rules() { public static function rules($id = null, $user_id = null, $type = null) {
return [ return [
//add migration with deleted_at column
'user_id' => ['required', 'integer'],
'status' => ['required', 'integer', Rule::in([Status::ATIVO, Status::INATIVO])],
// 'selected' => []
'type' => [
'required',
'integer',
Rule::in(array_keys(self::listType())),
Rule::unique('user_type')->where(function($query) use($id, $user_id, $type)
{
return $query->where('user_id', '=', $user_id)->where('type', '=', $type);
})->ignore($id)
],
]; ];
} }
public static function messages() { public static function messages() {
return [ return [
//user_id
//type
'type.required' => 'O campo "Papel" é obrigatório!',
'type.in' => 'Selecione uma opção da lista de "Papeis"!',
'type.integer' => 'O campo "Papel" deve cónter um inteiro!',
'type.unique' => 'A opção do campo "Papel" já foi cadastrada!',
//status
'status.required' => 'O campo "Status" é obrigatório!',
'status.in' => 'Selecione uma opção da lista de "Status"!',
'status.integer' => 'O campo "Status" deve cónter um inteiro!',
//selected
]; ];
} }
......
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AlterUserTypeAddDeletedTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('user_type', function (Blueprint $table) {
$table->softDeletes()->after('updated_at');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('user_type', function (Blueprint $table) {
$table->dropColumn('deleted_at');
});
}
}
...@@ -17,3 +17,7 @@ ...@@ -17,3 +17,7 @@
<!-- Toastfy --> <!-- Toastfy -->
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/toastify-js"></script> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/toastify-js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css"> <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css">
<!-- Select2 -->
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
@php
function field_validate($field)
{
$type_form = 'create_and_update';
return sprintf("%s_%s", $type_form, $field);
}
@endphp
<div class="row"> <div class="row">
<input type="hidden" name="user_id" id="user_id" value="{{ $user->id }}"> <input type="hidden" name="user_id" id="user_id" value="{{ $user->id }}">
<input type="hidden" name="id" id="id" value="{{ $model !== null? $model->id : null }}">
<div class="mb-3 col-sm-12"> <div class="mb-3 col-sm-12">
<label class="form-label" for="user_name"> Usuário </label> <label class="form-label" for="user_name"> Usuário </label>
...@@ -30,7 +22,7 @@ ...@@ -30,7 +22,7 @@
</select> </select>
@include('components.divs.errors', [ @include('components.divs.errors', [
'field' => field_validate('type') 'field' => 'type_create_and_update'
]) ])
</div> </div>
...@@ -48,7 +40,7 @@ ...@@ -48,7 +40,7 @@
</select> </select>
@include('components.divs.errors', [ @include('components.divs.errors', [
'field' => field_validate('nivel') 'field' => 'status_create_and_update'
]) ])
</div> </div>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<h3 class="h3"> Cadastrar Papel </h3> <h3 class="h3"> Cadastrar Papel </h3>
</div> </div>
<form id="form-user_type" action="{{ route('user-type_store') }}" method="post"> <form id="form-user_type-create" action="{{ route('user-type_store') }}" method="post">
@csrf @csrf
@method('POST') @method('POST')
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
@include('pad.components.scripts.ajaxValidation', [ @include('pad.components.scripts.ajaxValidation', [
'btn_submit_id' => 'btn_submit', 'btn_submit_id' => 'btn_submit',
'form_id' => 'form-user_type', 'form_id' => 'form-user_type-create',
'form_type' => 'create_and_update',
'route' => route('user-type_ajax_validation'), 'route' => route('user-type_ajax_validation'),
'form_type' => 'create_and_update',
]) ])
\ No newline at end of file
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<h3 class="h3"> Atualizar Papel </h3> <h3 class="h3"> Atualizar Papel </h3>
</div> </div>
<form id="form-user_type" action="{{ route('user-type_update', ['id' => $model->id]) }}" method="post"> <form id="form-user_type-update" action="{{ route('user-type_update', ['id' => $model->id]) }}" method="post">
@csrf @csrf
@method('POST') @method('POST')
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
@include('pad.components.scripts.ajaxValidation', [ @include('pad.components.scripts.ajaxValidation', [
'btn_submit_id' => 'btn_submit', 'btn_submit_id' => 'btn_submit',
'form_id' => 'form-user_type', 'form_id' => 'form-user_type-update',
'form_type' => 'create_and_update',
'route' => route('user-type_ajax_validation'), 'route' => route('user-type_ajax_validation'),
'form_type' => 'create_and_update',
]) ])
\ No newline at end of file
...@@ -16,6 +16,23 @@ ...@@ -16,6 +16,23 @@
@php @php
$user = Auth::user(); $user = Auth::user();
$tabUser = '';
$containerUser = '';
$tabPassword = '';
$containerPassword = '';
if($tab == null || $tab == 'user')
{
$tabUser = 'active';
$containerUser = 'show active';
} else {
$tabPassword = 'active';
$containerPassword = 'show active';
}
@endphp @endphp
@section('body') @section('body')
...@@ -32,18 +49,18 @@ ...@@ -32,18 +49,18 @@
<div> <div>
<ul class="nav nav-tabs"> <ul class="nav nav-tabs">
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link active" id="user-tab" data-bs-toggle="tab" data-bs-target="#user-container" type="button" role="tab" aria-controls="user-container" arial-selected="true"> Usuário </button> <button class="nav-link {{$tabUser}}" id="user-tab" data-bs-toggle="tab" data-bs-target="#user-container" type="button" role="tab" aria-controls="user-container" arial-selected="true"> Usuário </button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link {{$tabPassword}}" id="password-tab" data-bs-toggle="tab" data-bs-target="#password-container" type="button" role="tab" aria-controls="password-container" arial-selected="false"> Senha </button>
</li> </li>
<!-- <li class="nav-item" role="presentation">
<button class="nav-link" id="paper-tab" data-bs-toggle="tab" data-bs-target="#paper-container" type="button" role="tab" aria-controls="paper-container" arial-selected="false"> Papeis </button>
</li> -->
</ul> </ul>
</div> </div>
<!-- Panels --> <!-- Panels -->
<div id="tab-containers" class="tab-content"> <div id="tab-containers" class="tab-content">
<div id="user-container" class="tab-pane fade show active" role="tabpanel" aria-labelledby="user-tab"> <div id="user-container" class="tab-pane fade {{$containerUser}}" role="tabpanel" aria-labelledby="user-tab">
<form class="" method="post" action="{{ route('update_perfil') }}" > <form class="" method="post" action="{{ route('update_perfil') }}" >
@csrf @csrf
...@@ -82,7 +99,7 @@ ...@@ -82,7 +99,7 @@
</div> </div>
<div id="paper-container" class="tab-pane fade" role="tabpanel" aria-labelledby="paper-tab"> <div id="password-container" class="tab-pane fade {{$containerPassword}}" role="tabpanel" aria-labelledby="password-tab">
<form method="post" action="{{ route('update_password') }}"> <form method="post" action="{{ route('update_password') }}">
@csrf @csrf
@method('POST') @method('POST')
...@@ -94,17 +111,18 @@ ...@@ -94,17 +111,18 @@
<div class="form-group"> <div class="form-group">
<label for="password"> Senha </label> <label for="password"> Senha </label>
<input type="password" class="form-control" name="password" id="password" placeholder="Senha"> <input type="password" class="form-control" name="password" id="password" placeholder="Senha">
<small id="password_information" class="form-text text-muted"> {{-- --}} </small> @include('components.divs.errors', [
@error('password') 'field' => 'password',
<span class="text-danger"> {{ $message }} </span> ])
@enderror
</div> </div>
</div> </div>
<div class="col-6"> <div class="col-6">
<div class="form-group"> <div class="form-group">
<label for="password_confirmation"> Confirmar Senha </label> <label for="password_confirmation"> Confirmar Senha </label>
<input type="password_confirmation" class="form-control" name="password_confirmation" id="password_confirmation" placeholder="Senha"> <input type="password" class="form-control" name="password_confirmation" id="password_confirmation" placeholder="Confirmar Senha">
<small id="password_confirmation_information" class="form-text text-muted"> {{-- --}} </small> @include('components.divs.errors', [
'field' => 'password_confirmation',
])
@error('password_confirmation') @error('password_confirmation')
<span class="text-danger"> {{ $message }} </span> <span class="text-danger"> {{ $message }} </span>
@enderror @enderror
......
@php
if($tab_active == 'user')
{
$userTabActive = 'active';
$userContainerActive = 'show active';
$paperTabActive = '';
$paperContainerActive = '';
}
if($tab_active == 'paper')
{
$userTabActive = '';
$userContainerActive = '';
$paperTabActive = 'active';
$paperContainerActive = 'show active';
}
@endphp
<!-- Tabs --> <!-- Tabs -->
<div> <div>
<ul class="nav nav-tabs"> <ul class="nav nav-tabs">
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link active" id="user-tab" data-bs-toggle="tab" data-bs-target="#user-container" type="button" role="tab" aria-controls="user-container" arial-selected="true"> Usuário </button> <button class="nav-link {{ $userTabActive }}" id="user-tab" data-bs-toggle="tab" data-bs-target="#user-container" type="button" role="tab" aria-controls="user-container" arial-selected="true"> Usuário </button>
</li> </li>
@if( $model->exists ) @if( $model->exists )
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link" id="paper-tab" data-bs-toggle="tab" data-bs-target="#paper-container" type="button" role="tab" aria-controls="paper-container" arial-selected="false"> Papeis </button> <button class="nav-link {{ $paperTabActive }}"" id="paper-tab" data-bs-toggle="tab" data-bs-target="#paper-container" type="button" role="tab" aria-controls="paper-container" arial-selected="false"> Papeis </button>
</li> </li>
@endif @endif
</ul> </ul>
...@@ -15,7 +37,7 @@ ...@@ -15,7 +37,7 @@
<!-- Panels --> <!-- Panels -->
<div id="tab-containers" class="tab-content"> <div id="tab-containers" class="tab-content">
<div id="user-container" class="tab-pane fade show active" role="tabpanel" aria-labelledby="user-tab"> <div id="user-container" class="tab-pane fade {{ $userContainerActive }}" role="tabpanel" aria-labelledby="user-tab">
<div class="mt-2 px-2"> <div class="mt-2 px-2">
<form action="{{ $action }}" method="POST"> <form action="{{ $action }}" method="POST">
...@@ -43,7 +65,7 @@ ...@@ -43,7 +65,7 @@
<div class="mb-4 col-12"> <div class="mb-4 col-12">
<div class="form-group"> <div class="form-group">
<label class="form-label" for="status"> Status </label> <label class="form-label" for="status"> Status </label>
<select class="form-select" name="status" id="status"> <select class="form-control" name="status" id="status">
@foreach($status as $value => $text) @foreach($status as $value => $text)
@if($model->status == $value) @if($model->status == $value)
<option value="{{ $value }}" selected> {{ $text }} </option> <option value="{{ $value }}" selected> {{ $text }} </option>
...@@ -52,19 +74,17 @@ ...@@ -52,19 +74,17 @@
@endif @endif
@endforeach @endforeach
</select> </select>
@include('components.divs.errors', ['field' => 'status'])
</div> </div>
</div> </div>
@endif @endif
@if( $model->exists ) @if( $model->exists )
<div class="mb-4 col-6"> <div class="mb-4 col-6">
<div class="form-group"> <div class="form-group">
<label class="form-label" for="curso_id"> Curso </label> <label class="form-label" for="campus_id"> Campus </label>
<select class="form-select" name="curso_id" id="curso_id"> <select class="form-control" name="campus_id" id="campus_id">
<option value="" disabled selected hidden> Selecione... </option>
@foreach([] as $option)
@endforeach
</select> </select>
</div> </div>
</div> </div>
...@@ -73,13 +93,8 @@ ...@@ -73,13 +93,8 @@
@if( $model->exists ) @if( $model->exists )
<div class="mb-4 col-6"> <div class="mb-4 col-6">
<div class="form-group"> <div class="form-group">
<label class="form-label" for="campus_id"> Campus </label> <label class="form-label" for="curso_id"> Curso </label>
<select class="form-select" name="campus_id" id="campus_id"> <select class="form-control" name="curso_id" id="curso_id"> </select>
<option value="" disabled selected hidden> Selecione... </option>
@foreach([] as $option)
@endforeach
</select>
</div> </div>
</div> </div>
@endif @endif
...@@ -101,7 +116,7 @@ ...@@ -101,7 +116,7 @@
</div> </div>
@if( $model->exists ) @if( $model->exists )
<div id="paper-container" class="tab-pane fade" role="tabpanel" aria-labelledby="paper-tab"> <div id="paper-container" class="tab-pane fade {{ $paperContainerActive }}" role="tabpanel" aria-labelledby="paper-tab">
<div class="text-end my-2"> <div class="text-end my-2">
<button type="button" class="btn btn-success user-type-create"> Cadastrar Papel </button> <button type="button" class="btn btn-success user-type-create"> Cadastrar Papel </button>
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
'model' => $model, 'model' => $model,
'status' => $status, 'status' => $status,
'profiles' => $profiles, 'profiles' => $profiles,
'tab_active' => $tab_active,
]) ])
@include('components.modal', [ @include('components.modal', [
...@@ -53,4 +54,42 @@ ...@@ -53,4 +54,42 @@
'btn_class' => 'btn-edit_user_type', 'btn_class' => 'btn-edit_user_type',
]) ])
<script text="type/javascript">
$('#campus_id').select2(
{
placeholder: "Selecione um Campus",
allowClear: true,
ajax: {
url: '{{ route("campus_search") }}',
dataType: 'json'
}
});
$('#curso_id').select2(
{
placeholder: "Selecione um Curso",
allowClear: true,
ajax: {
url: '{{ route("curso_search") }}',
dataType: 'json',
data: function(params) {
return {
q: params.terms,
campus_id: $('#campus_id').val(),
}
},
},
});
$('#status').select2(
{
placeholder: "Selecione um Status",
allowClear: true,
hideSearch: true,
minimumResultsForSearch: -1
});
</script>
@endsection @endsection
\ No newline at end of file
...@@ -49,6 +49,7 @@ Route::prefix('/campus')->group(function () { ...@@ -49,6 +49,7 @@ Route::prefix('/campus')->group(function () {
Route::get('/edit/{id}', [CampusController::class, 'edit'])->name('campus_edit'); Route::get('/edit/{id}', [CampusController::class, 'edit'])->name('campus_edit');
Route::post('/update/{id}', [CampusController::class, 'update'])->name('campus_update'); Route::post('/update/{id}', [CampusController::class, 'update'])->name('campus_update');
Route::delete('/delete/{id}', [CampusController::class, 'destroy'])->name('campus_delete'); Route::delete('/delete/{id}', [CampusController::class, 'destroy'])->name('campus_delete');
Route::get('/search', [CampusController::class, 'actionSearch'])->name('campus_search');
}); });
Route::prefix('/curso')->group(function () { Route::prefix('/curso')->group(function () {
...@@ -58,6 +59,7 @@ Route::prefix('/curso')->group(function () { ...@@ -58,6 +59,7 @@ Route::prefix('/curso')->group(function () {
Route::get('/edit/{id}', [CursoController::class, 'edit'])->name('curso_edit'); Route::get('/edit/{id}', [CursoController::class, 'edit'])->name('curso_edit');
Route::post('/update/{id}', [CursoController::class, 'update'])->name('curso_update'); Route::post('/update/{id}', [CursoController::class, 'update'])->name('curso_update');
Route::delete('/delete/{id}', [CursoController::class, 'destroy'])->name('curso_delete'); Route::delete('/delete/{id}', [CursoController::class, 'destroy'])->name('curso_delete');
Route::get('/search', [CursoController::class, 'actionSearch'])->name('curso_search');
}); });
Route::prefix('/unidade')->group(function () { Route::prefix('/unidade')->group(function () {
...@@ -125,7 +127,7 @@ Route::prefix('/avaliador')->group(function () { ...@@ -125,7 +127,7 @@ Route::prefix('/avaliador')->group(function () {
}); });
Route::prefix('/user')->group(function () { Route::prefix('/user')->group(function () {
Route::get('/edit/perfil', [UserController::class, 'editPerfil'])->name('edit_perfil'); Route::get('/edit/perfil/{tab?}', [UserController::class, 'editPerfil'])->name('edit_perfil');
Route::post('/update/perfil', [UserController::class, 'updatePerfil'])->name('update_perfil'); Route::post('/update/perfil', [UserController::class, 'updatePerfil'])->name('update_perfil');
Route::post('/update/password', [UserController::class, 'updatePassword'])->name('update_password'); Route::post('/update/password', [UserController::class, 'updatePassword'])->name('update_password');
}); });
...@@ -135,7 +137,7 @@ Route::prefix('/users')->group(function() { ...@@ -135,7 +137,7 @@ Route::prefix('/users')->group(function() {
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');
Route::get('/edit/{id}', [UserController::class, 'actionEdit'])->name('user_edit'); Route::get('/edit/{id}', [UserController::class, 'actionEdit'])->name('user_edit');
Route::get('/update/{id}', [UserController::class, 'actionUpdate'])->name('user_update'); Route::post('/update/{id}', [UserController::class, 'actionUpdate'])->name('user_update');
Route::delete('/delete/{id}', [UserController::class, 'actionDelete'])->name('user_delete'); Route::delete('/delete/{id}', [UserController::class, 'actionDelete'])->name('user_delete');
Route::post('/import', [UserController::class, 'actionImport'])->name('user_import'); Route::post('/import', [UserController::class, 'actionImport'])->name('user_import');
......
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