Commit b27c33b7 authored by Abraão Barbosa's avatar Abraão Barbosa
Browse files

Merge branch 'main' of https://github.com/alissonalbuquerque/pad-upe into main

parents ec98ed8d 08ba7e1c
...@@ -6,6 +6,8 @@ use App\Http\Controllers\Controller; ...@@ -6,6 +6,8 @@ use App\Http\Controllers\Controller;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\PAD; use App\Models\PAD;
use App\Models\Tabelas\Constants; use App\Models\Tabelas\Constants;
use App\Models\User;
use App\Models\UserPad;
use Database\Seeders\PadSeeder; use Database\Seeders\PadSeeder;
use Exception; use Exception;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
...@@ -27,9 +29,24 @@ class PadController extends Controller ...@@ -27,9 +29,24 @@ class PadController extends Controller
return view('pad.admin.index', ['pads' => $pads]); 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]);
}
/** /**
* Show the form for creating a new resource. * Show the form for creating a new resource.
* *
...@@ -45,21 +62,19 @@ class PadController extends Controller ...@@ -45,21 +62,19 @@ class PadController extends Controller
/** /**
* Store a newly created resource in storage. * Store a newly created resource in storage.
* * @param \Illuminate\Http\Request $request
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/ */
public function store(Request $request) public function store(Request $request)
{ {
$validated = $request->validate([ $validated = $request->validate([
'nome' => ['required', 'string', 'min:5', 'max:255'], 'nome' => ['required', 'string', 'min:6', 'max:255'],
'status' => ['required', 'integer'], 'status' => ['required', 'integer'],
'data_inicio' => ['required', 'date', 'before_or_equal:data_fim'], 'data_inicio' => ['required', 'date', 'before_or_equal:data_fim'],
'data_fim' => ['required', 'date', 'after_or_equal:data_inicio'], 'data_fim' => ['required', 'date', 'after_or_equal:data_inicio'],
], ],
[ [
'required' => 'O campo de :attribute é obrigatório', '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', '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_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', '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 ...@@ -69,6 +84,16 @@ class PadController extends Controller
$model = new Pad($request->all()); $model = new Pad($request->all());
if($model->save()) { 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!'); return redirect()->route('pad_index')->with('success', 'PAD cadastrado com sucesso!');
} else { } else {
return redirect()->route('pad_index')->with('success', 'Erro ao cadastrar o PAD!'); return redirect()->route('pad_index')->with('success', 'Erro ao cadastrar o PAD!');
...@@ -137,27 +162,28 @@ class PadController extends Controller ...@@ -137,27 +162,28 @@ class PadController extends Controller
* Update the specified resource in storage. * Update the specified resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @param int $id * @param integer $id
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function update(Request $request, $id) public function update(Request $request, $id)
{ {
$validated = $request->validate([ $validated = $request->validate([
'nome' => ['required', 'string', 'min:5', 'max:255'], 'nome' => ['required', 'string', 'min:6', 'max:255'],
'status' => ['required', 'integer'], 'status' => ['required', 'integer'],
'data_inicio' => ['required', 'date', 'before_or_equal:data_fim'], 'data_inicio' => ['required', 'date', 'before_or_equal:data_fim'],
'data_fim' => ['required', 'date', 'after_or_equal:data_inicio'], 'data_fim' => ['required', 'date', 'after_or_equal:data_inicio'],
], ],
[ [
'required' => 'O campo de :attribute é obrigatório', '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', '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_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', 'data_fim.after_or_equal' => 'A :attribute deve ser uma data posterior ou igual a data de início',
]); ]);
if($validated) { if($validated) {
$model = new Pad($request->all()); $model = Pad::find($id);
$model->fill($request->all());
if($model->save()) { if($model->save()) {
return redirect()->route('pad_index')->with('success', 'PAD atualizado com sucesso!'); return redirect()->route('pad_index')->with('success', 'PAD atualizado com sucesso!');
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
namespace App\Models; namespace App\Models;
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\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
...@@ -135,6 +136,10 @@ class User extends Authenticatable ...@@ -135,6 +136,10 @@ class User extends Authenticatable
return $this->getTable() . '-' . $attribute; return $this->getTable() . '-' . $attribute;
} }
public static function find() {
return new UserQuery(get_called_class());
}
/** /**
* @return string * @return string
*/ */
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
namespace App\Models; namespace App\Models;
use App\Queries\UserPadQuery;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
...@@ -14,11 +15,15 @@ class UserPad extends Model ...@@ -14,11 +15,15 @@ class UserPad extends Model
protected $fillable = ['user_id', 'pad_id']; protected $fillable = ['user_id', 'pad_id'];
public function user() { public function user() {
$this->belongsTo(User::class); return $this->belongsTo(User::class);
} }
public function pad() { 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; ...@@ -4,8 +4,40 @@ namespace App\Queries;
use App\Models\User; 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 () { ...@@ -81,6 +81,19 @@ Route::prefix('/pad')->group(function () {
Route::delete('/delete/{id}', [PadController::class, 'delete'])->name('pad_delete'); 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::prefix('/coordenador')->group(function () {
Route::get('/index', [CoordenadorController::class, 'index'])->name('coordenador_index'); Route::get('/index', [CoordenadorController::class, 'index'])->name('coordenador_index');
Route::get('/create', [CoordenadorController::class, 'create'])->name('coordenador_create'); Route::get('/create', [CoordenadorController::class, 'create'])->name('coordenador_create');
...@@ -103,13 +116,6 @@ Route::prefix('/diretor')->group(function () { ...@@ -103,13 +116,6 @@ Route::prefix('/diretor')->group(function () {
Route::get('/listar/unidade', [UnidadeController::class, 'getAll'])->name('listar_unidades'); 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::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::prefix('/pad/dimensao/ensino')->group(function () {
Route::post('/aulas/create', [EnsinoAulaController::class, 'create'])->name('ensino_aula_create'); Route::post('/aulas/create', [EnsinoAulaController::class, 'create'])->name('ensino_aula_create');
// Route::get('/ensino/aulas/update', [EnsinoAulaController::class, 'update'])->name('ensino_aula_update'); // 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