Commit 72a7c211 authored by alissonalbuquerque's avatar alissonalbuquerque
Browse files

refatoracao do pad: professor

parent 4b76c368
......@@ -29,9 +29,24 @@ 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) {
return view('pad.teacher.view', ['id' => $id]);
}
/**
* Show the form for creating a new resource.
*
......@@ -47,20 +62,19 @@ class PadController extends Controller
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
*/
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',
......@@ -148,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\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
@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
<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>
\ No newline at end of file
......@@ -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