diff --git a/app/Http/Controllers/PadController.php b/app/Http/Controllers/PadController.php index 375db1b9987374255d1c65e4272f8eb8e9922417..1c0da82e9e513fd99b9749a634886edba08b8f74 100644 --- a/app/Http/Controllers/PadController.php +++ b/app/Http/Controllers/PadController.php @@ -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,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) { + $index_menu = 1; + return view('pad.teacher.view', ['id' => $id, 'index_menu' => $index_menu]); + } + /** * Show the form for creating a new resource. * @@ -45,21 +62,19 @@ class PadController extends Controller /** * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response + * @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', @@ -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!'); diff --git a/app/Models/User.php b/app/Models/User.php index f090565c46c99cad949fcf9644ad808380db02cb..dfb728885e5ffaf62539a772aa488335665db40d 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -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 */ diff --git a/app/Models/UserPad.php b/app/Models/UserPad.php index 6a3b17d8fa4aa964454b4dfec9ace4518650c1e6..032f2b1b57a7031ef4915520ef4a205c85c1b538 100644 --- a/app/Models/UserPad.php +++ b/app/Models/UserPad.php @@ -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()); } } diff --git a/app/Queries/UserPadQuery.php b/app/Queries/UserPadQuery.php new file mode 100644 index 0000000000000000000000000000000000000000..14111131c2180655b62238133d1ef548eff0de20 --- /dev/null +++ b/app/Queries/UserPadQuery.php @@ -0,0 +1,43 @@ +<?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 diff --git a/app/Queries/UserQuery.php b/app/Queries/UserQuery.php index 78e61a4410cb3e2c7d824b123a8b4ac5cf4577d1..85612fba1a39a944f5d7fff4daa2cfc1d5e03b56 100644 --- a/app/Queries/UserQuery.php +++ b/app/Queries/UserQuery.php @@ -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 diff --git a/resources/views/pad/index.blade.php b/resources/views/pad/index.blade.php deleted file mode 100644 index e6e432d691aa4687e1702203ff22b58cde29076a..0000000000000000000000000000000000000000 --- a/resources/views/pad/index.blade.php +++ /dev/null @@ -1,51 +0,0 @@ -@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 diff --git a/resources/views/pad/teacher/index.blade.php b/resources/views/pad/teacher/index.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..b107821aae12cf872079ce5b0fe354b30e901ac6 --- /dev/null +++ b/resources/views/pad/teacher/index.blade.php @@ -0,0 +1,35 @@ +@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 diff --git a/resources/views/pad/teacher/view.blade.php b/resources/views/pad/teacher/view.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..af0196a35dcbc5891de739078cc370e5568b5df5 --- /dev/null +++ b/resources/views/pad/teacher/view.blade.php @@ -0,0 +1,73 @@ +@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 diff --git a/routes/web.php b/routes/web.php index 6b292652e7bcf8fe8e03c624b2ff75637e91e681..042c48d79e899a24ba1551240554f41921db9204 100644 --- a/routes/web.php +++ b/routes/web.php @@ -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');