Commit 08ba7e1c authored by alissonalbuquerque's avatar alissonalbuquerque
Browse files

Merge branch 'crud_pad'

parents a95e9172 bbb52e6a
......@@ -6,6 +6,8 @@ use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\PAD;
use App\Models\Tabelas\Constants;
use App\Models\User;
use App\Models\UserPad;
use Database\Seeders\PadSeeder;
use Exception;
use Illuminate\Support\Facades\Auth;
......@@ -27,7 +29,22 @@ class PadController extends Controller
return view('pad.admin.index', ['pads' => $pads]);
}
dd('refatorar');
if(Auth::user()->isTypeTeacher()) {
$index_menu = 1;
$userPads = UserPad::find()->whereUser(Auth::user()->id)->get();
return view('pad.teacher.index', ['index_menu' => $index_menu, 'userPads' => $userPads]);
}
}
/**
* @param integer $id
* @return \Illuminate\Http\Response
*/
public function view($id) {
$index_menu = 1;
return view('pad.teacher.view', ['id' => $id, 'index_menu' => $index_menu]);
}
/**
......@@ -45,21 +62,19 @@ class PadController extends Controller
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$validated = $request->validate([
'nome' => ['required', 'string', 'min:5', 'max:255'],
'nome' => ['required', 'string', 'min:6', 'max:255'],
'status' => ['required', 'integer'],
'data_inicio' => ['required', 'date', 'before_or_equal:data_fim'],
'data_fim' => ['required', 'date', 'after_or_equal:data_inicio'],
],
[
'required' => 'O campo de :attribute é obrigatório',
'nome.min' => 'O campo de :attribute deve ter no mínimo 5 letras',
'nome.min' => 'O campo de :attribute deve ter no mínimo 6 letras',
'nome.max' => 'O campo de :attribute deve ter no máximo 255 letras',
'data_inicio.before_or_equal' => 'A :attribute deve ser uma data anterior ou igual a data de fim',
'data_fim.after_or_equal' => 'A :attribute deve ser uma data posterior ou igual a data de início',
......@@ -69,6 +84,16 @@ class PadController extends Controller
$model = new Pad($request->all());
if($model->save()) {
$users = User::find()->whereType(User::TYPE_TEACHER)->get();
foreach($users as $user) {
$modelUserPad = new UserPad();
$modelUserPad->user_id = $user->id;
$modelUserPad->pad_id = $model->id;
$modelUserPad->save();
}
return redirect()->route('pad_index')->with('success', 'PAD cadastrado com sucesso!');
} else {
return redirect()->route('pad_index')->with('success', 'Erro ao cadastrar o PAD!');
......@@ -137,27 +162,28 @@ class PadController extends Controller
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @param integer $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$validated = $request->validate([
'nome' => ['required', 'string', 'min:5', 'max:255'],
'nome' => ['required', 'string', 'min:6', 'max:255'],
'status' => ['required', 'integer'],
'data_inicio' => ['required', 'date', 'before_or_equal:data_fim'],
'data_fim' => ['required', 'date', 'after_or_equal:data_inicio'],
],
[
'required' => 'O campo de :attribute é obrigatório',
'nome.min' => 'O campo de :attribute deve ter no mínimo 5 letras',
'nome.min' => 'O campo de :attribute deve ter no mínimo 6 letras',
'nome.max' => 'O campo de :attribute deve ter no máximo 255 letras',
'data_inicio.before_or_equal' => 'A :attribute deve ser uma data anterior ou igual a data de fim',
'data_fim.after_or_equal' => 'A :attribute deve ser uma data posterior ou igual a data de início',
]);
if($validated) {
$model = new Pad($request->all());
$model = Pad::find($id);
$model->fill($request->all());
if($model->save()) {
return redirect()->route('pad_index')->with('success', 'PAD atualizado com sucesso!');
......
......@@ -2,6 +2,7 @@
namespace App\Models;
use App\Queries\UserQuery;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
......@@ -135,6 +136,10 @@ class User extends Authenticatable
return $this->getTable() . '-' . $attribute;
}
public static function find() {
return new UserQuery(get_called_class());
}
/**
* @return string
*/
......
......@@ -2,6 +2,7 @@
namespace App\Models;
use App\Queries\UserPadQuery;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
......@@ -14,11 +15,15 @@ class UserPad extends Model
protected $fillable = ['user_id', 'pad_id'];
public function user() {
$this->belongsTo(User::class);
return $this->belongsTo(User::class);
}
public function pad() {
$this->belongsTo(PAD::class);
return $this->belongsTo(PAD::class);
}
public static function find() {
return new UserPadQuery(get_called_class());
}
}
<?php
namespace App\Queries;
use App\Models\UserPad;
class UserPadQuery {
private $query;
public function __construct()
{
$this->query = UserPad::where([]);
}
/**
* @param integer $id
* @return UserPadQuery|Builder
*/
public function whereId($id, $expression = '=')
{
$this->query = $this->query->where('id', $expression, $id);
return $this->query;
}
/**
* @param integer $user_id
* @return UserPadQuery|Builder
*/
public function whereUser($user_id, $expression = '=')
{
$this->query = $this->query->where('user_id', $expression, $user_id);
return $this->query;
}
/**
* @return Builder
*/
public function getQuery()
{
return $this->query;
}
}
\ No newline at end of file
......@@ -4,8 +4,40 @@ namespace App\Queries;
use App\Models\User;
class UserQuery extends User {
class UserQuery {
// public static function whereType
private $query;
public function __construct()
{
$this->query = User::where([]);
}
/**
* @param integer $id
* @return UserQuery|Builder
*/
public function whereId($id, $expression = '=')
{
$this->query = $this->query->where('id', $expression, $id);
return $this->query;
}
/**
* @param integer $type
* @return UserQuery|Builder
*/
public function whereType($type, $expression = '=')
{
$this->query = $this->query->where('type', $expression, $type);
return $this->query;
}
/**
* @return Builder
*/
public function getQuery()
{
return $this->query;
}
}
\ No newline at end of file
@extends('layouts.main')
@section('title', 'Unidade')
@section('header')
@include('layouts.header', [
'user' => Auth::user(),
])
@endsection
@section('nav')
@include('layouts.navigation', [
'index_menu' => $index_menu,
])
@endsection
@section('body')
<div class="content">
<div class="header" id="bordcab">
<h1 class="titulo pt-4 pb-4 mb-3 border-bottom">PLANO DE ATIVIDADES DOCENTES (PAD)</h1>
<p class="pb-4 mb-3 text-center text-muted align-items-center"><a href="{{ route('pad_anexo') }}">ANEXO B</a>
</p>
<p class="pb-4 mb-3 text-center text-muted align-items-center">
Insira os dados correspondentes nos campos exibidos abaixo
</p>
</div>
</div>
<div class="btn-toolbar" role="toolbar" aria-label="Toolbar with button groups">
<div class="btn-group mr-2" role="group" aria-label="First group">
<a href="{{ route('dimensao_ensino') }}" class="btn-pad-dimensao">
<i class="bi bi-mortarboard-fill"></i>
<h2>ENSINO</h2>
</a>
</div>
<div class="btn-group" role="group" aria-label="Third group">
<a href="{{ route('dimensao_pesquisa') }}" class="btn-pad-dimensao">
<i class="bi bi-search"></i>
<h2>PESQUISA</h2>
</a>
</div>
<div class="btn-group mr-2" role="group" aria-label="Second group">
<a href="{{ route('dimensao_extensao') }}" class="btn-pad-dimensao">
<i class="bi bi-clipboard-data-fill"></i>
<h2>EXTENSÃO</h2>
</a>
</div>
<div class="btn-group" role="group" aria-label="Third group">
<a href="{{ route('dimensao_gestao') }}" class="btn-pad-dimensao">
<i class="bi bi-people-fill"></i>
<h2>GESTÃO</h2>
</a>
</div>
</div>
@endsection
@extends('layouts.main')
@php
use App\Models\Tabelas\Constants;
@endphp
@section('title', 'Unidade')
@section('header')
@include('layouts.header', [
'user' => Auth::user(),
])
@endsection
@section('nav')
@include('layouts.navigation', [
'index_menu' => $index_menu,
])
@endsection
@section('body')
<div class="d-flex">
@foreach($userPads as $userPad)
<div class="card mx-2" style="width: 12rem;">
<div class="card-body">
@if($userPad->pad->status === Constants::STATUS_ATIVO)
<h1 class="text-center"> <i class="bi bi-book-half"></i> </h1>
@else
<h1 class="text-center"> <i class="bi bi-journal-bookmark-fill"></i> </h1>
@endif
<h5 class="text-center"> PAD: {{ $userPad->pad->nome }} </h4>
<h5 class="text-center"> Status: {{ $userPad->pad->getStatusAsText() }} </h4>
<a class="stretched-link" href="{{ route('pad_view', ['id' => $userPad->pad_id]) }}" target="_blank"></a>
</div>
</div>
@endforeach
</div>
@endsection
@extends('layouts.main')
@php
use App\Models\Tabelas\Constants;
@endphp
@section('title', 'Unidade')
@section('header')
@include('layouts.header', [
'user' => Auth::user(),
])
@endsection
@section('nav')
@include('layouts.navigation', [
'index_menu' => $index_menu,
])
@endsection
@section('body')
<!-- <div class="content"> -->
<!-- <div class="header" id="bordcab"> -->
<!-- <h1 class="titulo pt-4 pb-4 mb-3 border-bottom">PLANO DE ATIVIDADES DOCENTES (PAD)</h1> -->
<!-- <p class="pb-4 mb-3 text-center text-muted align-items-center"><a href="{{ route('pad_anexo') }}">ANEXO B</a> -->
<!-- </p> -->
<!-- <p class="pb-4 mb-3 text-center text-muted align-items-center"> -->
<!-- Insira os dados correspondentes nos campos exibidos abaixo -->
<!-- </p> -->
<!-- </div> -->
<!-- </div> -->
<div class="d-flex">
<div class="card mx-2" style="width: 10rem;">
<div class="card-body">
<h2 class="text-center"> <i class="bi bi-mortarboard-fill"></i> </h2>
<h3 class="text-center">Ensino</h3>
<a class="stretched-link" href="{{ route('dimensao_ensino') }}" class="btn-pad-dimensao"></a>
</div>
</div>
<div class="card mx-2" style="width: 10rem;">
<div class="card-body">
<h2 class="text-center"> <i class="bi bi-search"></i> </h2>
<h3 class="text-center">Pesquisa</h3>
<a class="stretched-link" href="{{ route('dimensao_pesquisa') }}" class="btn-pad-dimensao"></a>
</div>
</div>
<div class="card mx-2" style="width: 10rem;">
<div class="card-body">
<h2 class="text-center"> <i class="bi bi-clipboard-data-fill"></i> </h2>
<h3 class="text-center">Extensão</h3>
<a class="stretched-link" href="{{ route('dimensao_extensao') }}" class="btn-pad-dimensao"></a>
</div>
</div>
<div class="card mx-2" style="width: 10rem;">
<div class="card-body">
<h2 class="text-center"> <i class="bi bi-people-fill"></i> </h2>
<h3 class="text-center">Gestão</h3>
<a class="stretched-link" href="{{ route('dimensao_gestao') }}" class="btn-pad-dimensao"></a>
</div>
</div>
<div class="card mx-2" style="width: 10rem;">
<div class="card-body">
<h2 class="text-center"> <i class="bi bi-file-earmark-text-fill"></i> </h2>
<h3 class="text-center">Anexo</h3>
<a class="stretched-link" href="{{-- route('') --}}" class="btn-pad-dimensao"></a>
</div>
</div>
</div>
@endsection
......@@ -81,6 +81,19 @@ Route::prefix('/pad')->group(function () {
Route::delete('/delete/{id}', [PadController::class, 'delete'])->name('pad_delete');
});
Route::prefix('/pad/professor')->group(function () {
Route::get('/index', [PadController::class, 'index'])->name('pad_index');
Route::get('/view/{id}', [PadController::class, 'view'])->name('pad_view');
Route::get('/anexo', [PadController::class, 'anexo'])->name('pad_anexo');
});
Route::prefix('/pad/dimensao/')->group(function () {
Route::get('/gestao', [GestaoController::class, 'index'])->name('dimensao_gestao');
Route::get('/ensino', [EnsinoController::class, 'index'])->name('dimensao_ensino');
Route::get('/pesquisa', [PesquisaController::class, 'index'])->name('dimensao_pesquisa');
Route::get('/extensao', [ExtensaoController::class, 'index'])->name('dimensao_extensao');
});
Route::prefix('/coordenador')->group(function () {
Route::get('/index', [CoordenadorController::class, 'index'])->name('coordenador_index');
Route::get('/create', [CoordenadorController::class, 'create'])->name('coordenador_create');
......@@ -103,13 +116,6 @@ Route::prefix('/diretor')->group(function () {
Route::get('/listar/unidade', [UnidadeController::class, 'getAll'])->name('listar_unidades');
Route::get('/list/campus/{unidade_id}', [CampusController::class, 'findByUnidade'])->name('list_campus_by_unidade');
Route::prefix('/pad/dimensao/')->group(function () {
Route::get('/gestao', [GestaoController::class, 'index'])->name('dimensao_gestao');
Route::get('/ensino', [EnsinoController::class, 'index'])->name('dimensao_ensino');
Route::get('/pesquisa', [PesquisaController::class, 'index'])->name('dimensao_pesquisa');
Route::get('/extensao', [ExtensaoController::class, 'index'])->name('dimensao_extensao');
});
Route::prefix('/pad/dimensao/ensino')->group(function () {
Route::post('/aulas/create', [EnsinoAulaController::class, 'create'])->name('ensino_aula_create');
// Route::get('/ensino/aulas/update', [EnsinoAulaController::class, 'update'])->name('ensino_aula_update');
......
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