diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index c572fbf44333b2304fc518d55f15e317023b91da..a1eb6f4ee0214d7cd2672f12026ec378fb82bc17 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -3,6 +3,10 @@ namespace App\Http\Controllers; use App\Models\PAD; +use App\Models\Tabelas\Constants; +use App\Models\UserPad; +use App\Models\Util\MenuItemsAdmin; +use App\Models\Util\MenuItemsTeacher; use App\Queries\UnidadeQuery; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -14,13 +18,29 @@ class DashboardController extends Controller $user = Auth::user(); - if($user->isTypeAdmin()){ - return view('dashboard', ['unidades' => UnidadeQuery::all(), 'unidade_index' => 1]); - }elseif ($user->isTypeTeacher()) { - return view('dashboard', ['PADs' => PAD::all(), 'menu_index'=> 0]); - }elseif ($user->isTypeDirector()) { + if($user->isTypeAdmin()) + { + return view('dashboard',['menu_index' => MenuItemsAdmin::HOME]); + } + + if($user->isTypeTeacher()) + { + $userPads = + UserPad::find() + ->whereUser($user->id) + ->wherePadStatus(Constants::STATUS_ATIVO) + ->get(); + + return view('dashboard', ['userPads' => $userPads, 'menu_index'=> MenuItemsTeacher::HOME]); + } + + if($user->isTypeDirector()) + { return view('dashboard', ['PADs' => PAD::all(), 'menu_index'=> 0]); - }elseif ($user->isTypeCoordinator()) { + } + + if($user->isTypeCoordinator()) + { return view('dashboard', ['PADs' => PAD::all(), 'menu_index'=> 0]); } diff --git a/app/Http/Controllers/Dimensao/EnsinoController.php b/app/Http/Controllers/Dimensao/EnsinoController.php index 815d4198709aed7bbba03e998e10c41d24b8d72f..e9a836989215b79f4ca119db21aede758dc9ed0d 100644 --- a/app/Http/Controllers/Dimensao/EnsinoController.php +++ b/app/Http/Controllers/Dimensao/EnsinoController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Dimensao; use App\Http\Controllers\Controller; use App\Models\Tabelas\Constants; +use App\Models\Util\MenuItemsTeacher; use App\Models\Util\PadTables; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -19,7 +20,7 @@ class EnsinoController extends Controller * * @return \Illuminate\Http\Response */ - public function index() { + public function index($user_pad_id, $form_selected = null, $model_id = null) { $user = Auth::user(); $niveis = Constants::listNivel(); @@ -28,12 +29,13 @@ class EnsinoController extends Controller $funcoes_projeto = Constants::listFuncao(); $funcoes_ensino = Constants::listFuncao(); $naturezas = Constants::listNatureza(); - $divs = PadTables::tablesEnsino(); return view('pad.dimensao.ensino', [ - 'pad_id' => 1, + 'user_pad_id' => $user_pad_id, + 'form_selected' => $form_selected, + 'model_id' => $model_id, 'niveis' => $niveis, 'modalidades' => $modalidades, 'categorias' => $orientacoes, @@ -41,7 +43,7 @@ class EnsinoController extends Controller 'funcoes_projeto' => array_diff($funcoes_projeto, [Constants::listFuncao(Constants::FUNCAO_MEMBRO)]), 'naturezas' => $naturezas, 'divs' => $divs, - 'index_menu' => self::MENU_PAD, + 'index_menu' => MenuItemsTeacher::PAD, ]); } } diff --git a/app/Http/Controllers/Dimensao/Tabelas/Ensino/EnsinoAulaController.php b/app/Http/Controllers/Dimensao/Tabelas/Ensino/EnsinoAulaController.php index 6996ac3ade6eb71f4ee6f7a6b87ca1d64fbb754e..a7ef0f27db173f9abc530d3f4c2d9e7891591545 100644 --- a/app/Http/Controllers/Dimensao/Tabelas/Ensino/EnsinoAulaController.php +++ b/app/Http/Controllers/Dimensao/Tabelas/Ensino/EnsinoAulaController.php @@ -4,8 +4,10 @@ namespace App\Http\Controllers\Dimensao\Tabelas\Ensino; use App\Http\Controllers\Controller; use App\Models\Tabelas\Ensino\EnsinoAula; +use App\Models\UserPad; use Illuminate\Http\Request; use Illuminate\Support\Facades\Response; +use Illuminate\Support\Facades\Validator; class EnsinoAulaController extends Controller { @@ -15,30 +17,55 @@ class EnsinoAulaController extends Controller * @return \Illuminate\Http\Response */ public function create(Request $request) { + + $validator = Validator::make($request->all(), EnsinoAula::rules(), EnsinoAula::messages()); - dd($request->all()); + if($validator->fails()) + { + return redirect() + ->route('dimensao_ensino', [ + 'user_pad_id' => $request->user_pad_id, + 'form_selected' => 'ensino_aulas' + ]) + ->withErrors($validator) + ->withInput(); + } - $model = new EnsinoAula(); - $model->fill($request->all()); - $model->save(); + $user_pad_id = $request->user_pad_id; + $div_selected = 'ensino_aulas'; - return redirect()->route('dimensao_ensino'); - } + $model = new EnsinoAula($request->all()); - public function update(integer $id, Request $request) { - dd('UPDATE'); + if($model->save()) { + return redirect()->route('dimensao_ensino', ['user_pad_id' => $user_pad_id, 'form_selected' => $div_selected])->with('success', 'Cadastro realizado com sucesso!'); + } else { + return redirect()->route('dimensao_ensino', ['user_pad_id' => $user_pad_id, 'form_selected' => $div_selected])->with('fail', 'Erro ao cadastrar Atividade!'); + } + } - public function delete($id){ - - dd('DELETE'); + public function update($id, Request $request) { + + dd($request->id); + } + public function delete($id = null, $user_pad_id = null) + { $model = EnsinoAula::find($id); + $user_pad_id = $model->user_pad_id; $model->delete(); - return redirect()->route('dimensao_ensino'); + $div_selected = 'ensino_aulas'; + return redirect()->route('dimensao_ensino', ['user_pad_id' => $user_pad_id, 'form_selected' => $div_selected])->with('success', 'Cadastro realizado com sucesso!'); } - public function getAll($pad_id = null) { - return Response::json(['message' => 'teste']); + public function search($user_pad_id = null) { + + $query = EnsinoAula::initQuery(); + + if($user_pad_id) { + $query->whereUserPad($user_pad_id)->orderBy('cod_atividade'); + } + + return Response::json($query->get()); } } diff --git a/app/Http/Controllers/PadController.php b/app/Http/Controllers/PadController.php index b4427fce18d6b3a73aca9519c29fbd7f4c52675c..bc3c5fc5e3deec38007b42a8bd991725fb92a9fc 100644 --- a/app/Http/Controllers/PadController.php +++ b/app/Http/Controllers/PadController.php @@ -9,6 +9,7 @@ use App\Models\Tabelas\Constants; use App\Models\User; use App\Models\UserPad; use App\Models\Util\MenuItemsAdmin; +use App\Models\Util\MenuItemsTeacher; use Database\Seeders\PadSeeder; use Exception; use Illuminate\Support\Facades\Auth; @@ -33,7 +34,7 @@ class PadController extends Controller if(Auth::user()->isTypeTeacher()) { - $index_menu = 1; + $index_menu = MenuItemsTeacher::PAD; $userPads = UserPad::find()->whereUser(Auth::user()->id)->get(); return view('pad.teacher.index', ['index_menu' => $index_menu, 'userPads' => $userPads]); @@ -46,7 +47,7 @@ class PadController extends Controller */ public function view($id) { $index_menu = 1; - return view('pad.teacher.view', ['id' => $id, 'index_menu' => $index_menu]); + return view('pad.teacher.view', ['user_pad_id' => $id, 'index_menu' => $index_menu]); } /** diff --git a/app/Models/Planejamento.php b/app/Models/Planejamento.php index a63e93b73ed701bc36d8b910f4a207075c50c10c..6dd860a627188e86c1714518ef5bb8d914d15d5b 100644 --- a/app/Models/Planejamento.php +++ b/app/Models/Planejamento.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Queries\PlanejamentoQuery; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -49,4 +50,8 @@ class Planejamento extends Model return $this->listDimensao($this->dimensao); } + public static function find() { + return new PlanejamentoQuery(get_called_class()); + } + } diff --git a/app/Models/Tabelas/Ensino/EnsinoAula.php b/app/Models/Tabelas/Ensino/EnsinoAula.php index 0af3e4d3c694bc81cc28701406fddc2c09adf387..fbf128d9b3e6831f85a956f6cc50e042a97e36f6 100644 --- a/app/Models/Tabelas/Ensino/EnsinoAula.php +++ b/app/Models/Tabelas/Ensino/EnsinoAula.php @@ -4,9 +4,13 @@ namespace App\Models\Tabelas\Ensino; use App\Models\Curso; use App\Models\Disciplina; +use App\Models\Planejamento; +use App\Models\Tabelas\Constants; use App\Queries\PlanejamentoQuery; +use App\Queries\Tabelas\Ensino\EnsinoAulaQuery; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Validation\Rule; class EnsinoAula extends Model { @@ -24,7 +28,7 @@ class EnsinoAula extends Model * * @var array */ - protected $fillable = ['pad_id', 'cod_atividade', 'componente_curricular', 'curso', 'nivel', 'modalidade', 'ch_semanal', 'ch_total']; + protected $fillable = ['user_pad_id', 'cod_atividade', 'componente_curricular', 'curso', 'nivel', 'modalidade', 'ch_semanal', 'ch_total']; /** @@ -49,6 +53,41 @@ class EnsinoAula extends Model ]; } + /* + 'user_pad_id', + 'cod_atividade', + 'componente_curricular', + 'curso', + 'nivel', + 'modalidade', + 'ch_semanal', + 'ch_total' + */ + + public static function rules() + { + return [ + 'cod_atividade' => ['required', 'string', 'max:255'], + 'componente_curricular' => ['required', 'string', 'max:255'], + 'curso' => ['required', 'string', 'max:255'], + 'nivel' => ['required', 'integer', Rule::in(array_keys(Constants::listNivel()))], + 'modalidade' => ['required', 'integer', Rule::in(array_keys(Constants::listModalidade()))], + 'ch_semanal' => ['required', 'integer', 'min:1'], + 'ch_total' => ['required', 'integer', 'min:1'], + ]; + } + + public static function messages() + { + return [ + 'required' => 'O campo ":attribute" é obrigatório!', + 'integer' => 'O campo ":attribute" deve cónter um inteiro!', + 'in' => 'Selecione uma opção da lista de ":attribute"!', + 'ch_semanal.min' => 'Carga horária semanal miníma é de 1 Hora!', + 'ch_total.min' => 'Carga horária total miníma é de 1 Hora!', + ]; + } + /** * Get PAD with pad.id = ensino_aulas.pad_id * @@ -57,26 +96,6 @@ class EnsinoAula extends Model public function pad() { return $this->belongsTo(PAD::class); } - - // /** - // * Get Curso with curso.id = ensino_aulas.curso_id - // * - // * @return Curso - // */ - // public function curso() - // { - // return $this->belongsTo(Curso::class); - // } - - // /** - // * Get Disciplina with diciplina.id = ensino_aulas.displina_id - // * - // * @return Disciplina - // */ - // public function disciplina() - // { - // return $this->belongsTo(Disciplina::class); - // } /** * Get Disciplina with diciplina.id = ensino_aulas.displina_id @@ -92,8 +111,12 @@ class EnsinoAula extends Model * @return array */ public function getPlanejamentos() { - $query = new PlanejamentoQuery(); - return $query->whereInCodDimensao($this->codesDimensao)->get(); + return Planejamento::find()->whereInCodDimensao($this->codesDimensao)->get(); + } + + + public static function initQuery() { + return new EnsinoAulaQuery(get_called_class()); } } diff --git a/app/Models/Util/PadTables.php b/app/Models/Util/PadTables.php index 0b92edd428da776264c9ebe5be8f5f2e150b80cd..7dfa93fdc60642ad5e3388dacea40cc8e88d62c5 100644 --- a/app/Models/Util/PadTables.php +++ b/app/Models/Util/PadTables.php @@ -6,14 +6,14 @@ class PadTables { public static function tablesEnsino() { return [ - ['id' => 'ensino_aulas', 'name' => 'ENSINO (AULAS EM COMPONENTES CURRICULARES)'], - ['id' => 'ensino_coordenacao_disciplina', 'name' => 'ENSINO (COORDENAÇÃO/ REGÊNCIA COMPONENTES CURRICULARES)'], - ['id' => 'ensino_orientacao', 'name' => 'ENSINO (ORIENTAÇÕES: ORIENTAÇÃO DE ESTÁGIO, ORIENTAÇÃO DE TCC, ORIENTAÇÃO DE RESIDÊNCIA, ORIENTAÇÃO DE MESTRADO E/OU ORIENTAÇÃO DE DOUTORADO. COORIENTAÇÕES: TCC, MESTRADO E/OU DOUTORADO)'], - ['id' => 'ensino_supervisao', 'name' => 'ENSINO (SUPERVISÕES: SUPERVISÃO/PRECEPTORIA DE ESTÁGIO, SUPERVISÃO DE ESTÁGIO DOCENCIA, SUPERVISÃO/TUTORIA DE RESIDÊNCIA)'], - ['id' => 'ensino_atendimento_discente', 'name' => 'ENSINO – ATENDIMENTO AO DISCENTE (O DOCENTE DEVERÁ PUBLICAR NA UNIDADE OS DIAS, HORÁRIOS E LOCAIS QUE PRESTARÁ O ATENDIMENTO)'], - ['id' => 'ensino_projeto', 'name' => 'ENSINO (PROJETOS OU AÇÕES DE ENSINO)'], - ['id' => 'ensino_participacao', 'name' => 'ENSINO (PARTICIPAÇÃO NAS REUNIÕES DOS COLEGIADOS DE PLENO DE CURSO DE GRADUAÇÃO E PÓS-GRADUAÇÃO)'], - ['id' => 'ensino_coordenacao_docente', 'name' => 'ENSINO (COORDENAÇÃO OU MEMBRO DE NÚCLEO DOCENTE ESTRUTURANTE OU NÚCLEO DOCENTE ESTRUTURANTE ASSISTENCIAL)'], + ['id' => 'ensino_aulas', 'name' => '1. ENSINO (AULAS EM COMPONENTES CURRICULARES)'], + ['id' => 'ensino_coordenacao_disciplina', 'name' => '2. ENSINO (COORDENAÇÃO/ REGÊNCIA COMPONENTES CURRICULARES)'], + ['id' => 'ensino_orientacao', 'name' => '3. ENSINO (ORIENTAÇÕES: ORIENTAÇÃO DE ESTÁGIO, ORIENTAÇÃO DE TCC, ORIENTAÇÃO DE RESIDÊNCIA, ORIENTAÇÃO DE MESTRADO E/OU ORIENTAÇÃO DE DOUTORADO. COORIENTAÇÕES: TCC, MESTRADO E/OU DOUTORADO)'], + ['id' => 'ensino_supervisao', 'name' => '4. ENSINO (SUPERVISÕES: SUPERVISÃO/PRECEPTORIA DE ESTÁGIO, SUPERVISÃO DE ESTÁGIO DOCENCIA, SUPERVISÃO/TUTORIA DE RESIDÊNCIA)'], + ['id' => 'ensino_atendimento_discente', 'name' => '.5 ENSINO – ATENDIMENTO AO DISCENTE (O DOCENTE DEVERÁ PUBLICAR NA UNIDADE OS DIAS, HORÁRIOS E LOCAIS QUE PRESTARÁ O ATENDIMENTO)'], + ['id' => 'ensino_projeto', 'name' => '6. ENSINO (PROJETOS OU AÇÕES DE ENSINO)'], + ['id' => 'ensino_participacao', 'name' => '7. ENSINO (PARTICIPAÇÃO NAS REUNIÕES DOS COLEGIADOS DE PLENO DE CURSO DE GRADUAÇÃO E PÓS-GRADUAÇÃO)'], + ['id' => 'ensino_coordenacao_docente', 'name' => '8. ENSINO (COORDENAÇÃO OU MEMBRO DE NÚCLEO DOCENTE ESTRUTURANTE OU NÚCLEO DOCENTE ESTRUTURANTE ASSISTENCIAL)'], ]; } diff --git a/app/Queries/CustomQuery.php b/app/Queries/CustomQuery.php new file mode 100644 index 0000000000000000000000000000000000000000..165ab04bbf19b2cbdd4a2ee67390391fff08a7b7 --- /dev/null +++ b/app/Queries/CustomQuery.php @@ -0,0 +1,42 @@ +query->toSql(); + } + + public function select($statement) + { + return $this->query->select($statement); + } + + public function orderBy(string $column, string $direction = 'asc') + { + return $this->query->orderBy($column, $direction); + } + + public function get() + { + return $this->query->get(); + } + + public function first() + { + return $this->query->first(); + } +} + diff --git a/app/Queries/PlanejamentoQuery.php b/app/Queries/PlanejamentoQuery.php index c8df6bb3cbf9668693d92419e1436abde0f5adea..dee96b596e07d03cb543fae412f3ba10dadcbc79 100644 --- a/app/Queries/PlanejamentoQuery.php +++ b/app/Queries/PlanejamentoQuery.php @@ -6,8 +6,8 @@ use App\Models\Planejamento; class PlanejamentoQuery extends Query { - public function __construct($init = []) { - $this->query = Planejamento::where($init); + public function __construct() { + $this->query = Planejamento::where([]); } /** diff --git a/app/Queries/Tabelas/Ensino/EnsinoAulaQuery.php b/app/Queries/Tabelas/Ensino/EnsinoAulaQuery.php index f0ca1be6a822f9e1c0c13a6fed5c99721674f02d..0b59738ff13d59ec517593f9489c1febf9abeac8 100644 --- a/app/Queries/Tabelas/Ensino/EnsinoAulaQuery.php +++ b/app/Queries/Tabelas/Ensino/EnsinoAulaQuery.php @@ -3,21 +3,23 @@ namespace App\Queries\Tabelas\Ensino; use App\Models\EnsinoAula; +use App\Models\Tabelas\Ensino\EnsinoAula as EnsinoEnsinoAula; +use App\Queries\CustomQuery; use App\Queries\Query; -class EnsinoAulaQuery extends Query { +class EnsinoAulaQuery extends CustomQuery { - public function __construct($init = []) { - $this->query = EnsinoAula::where($init); + public function __construct() + { + $this->query = EnsinoEnsinoAula::where([]); + + self::$instance = $this; } - /** - * @param integer $pad_id - * @param string $expression - * @return Builder - */ - public function wherePadId(int $pad_id, string $expression = '=') { - $this->query->where('pad_id', $expression, $pad_id); + public function whereUserPad($user_pad_id, $operator = '=') + { + $this->query = $this->query->where('user_pad_id', $operator, $user_pad_id); + return self::$instance; } } \ No newline at end of file diff --git a/app/Queries/UserPadQuery.php b/app/Queries/UserPadQuery.php index 14111131c2180655b62238133d1ef548eff0de20..93058f857e0ff29cb903c7cb7c1785ff2ea91605 100644 --- a/app/Queries/UserPadQuery.php +++ b/app/Queries/UserPadQuery.php @@ -4,13 +4,12 @@ namespace App\Queries; use App\Models\UserPad; -class UserPadQuery { - - private $query; +class UserPadQuery extends CustomQuery { public function __construct() { $this->query = UserPad::where([]); + self::$instance = $this; } /** @@ -18,9 +17,9 @@ class UserPadQuery { * @return UserPadQuery|Builder */ public function whereId($id, $expression = '=') - { + { $this->query = $this->query->where('id', $expression, $id); - return $this->query; + return self::$instance; } /** @@ -28,16 +27,32 @@ class UserPadQuery { * @return UserPadQuery|Builder */ public function whereUser($user_id, $expression = '=') - { + { $this->query = $this->query->where('user_id', $expression, $user_id); - return $this->query; + return self::$instance; } /** - * @return Builder + * @param integer $pad_id + * @return UserPadQuery|Builder */ - public function getQuery() + public function wherePad($pad_id, $expression = '=') { - return $this->query; + $this->query = $this->query->where('pad_id', $expression, $pad_id); + return self::$instance; + } + + /** + * @param integer $status + * @return UserPadQuery|Builder + */ + public function wherePadStatus($status, $expression = '=') { + $this->query = + $this->query + ->leftJoin('pad', 'user_pad.pad_id', '=', 'pad.id') + ->where('pad.status', $expression, $status); + + return self::$instance; } + } \ No newline at end of file diff --git a/database/migrations/2022_03_22_225548_create_ensino_aulas_table.php b/database/migrations/2022_03_22_225548_create_ensino_aulas_table.php index 7f2bfc40e359061ab7c1ea0817615be08de93616..14c27a69c44a9ba954f3d447c6cd266960ff217f 100644 --- a/database/migrations/2022_03_22_225548_create_ensino_aulas_table.php +++ b/database/migrations/2022_03_22_225548_create_ensino_aulas_table.php @@ -15,7 +15,7 @@ class CreateEnsinoAulasTable extends Migration { Schema::create('ensino_aulas', function (Blueprint $table) { $table->id(); - $table->foreignId('pad_id')->notNull(); + $table->foreignId('user_pad_id')->notNull(); $table->string('cod_atividade')->notNull(); $table->string('componente_curricular')->notNull(); $table->string('curso')->notNull(); diff --git a/resources/views/components/frontend-libs.blade.php b/resources/views/components/frontend-libs.blade.php index ba8dad6666fa830153f898b8596bbb5227cad778..ce0c394ecb727c83b024b0d108754c8dc32c9247 100644 --- a/resources/views/components/frontend-libs.blade.php +++ b/resources/views/components/frontend-libs.blade.php @@ -5,14 +5,14 @@ - + - + diff --git a/resources/views/layouts/user-dashboard/dashboard_teacher.blade.php b/resources/views/layouts/user-dashboard/dashboard_teacher.blade.php index 64dca5ea2130ca614964ab91389833f75849b539..db3075c21381479c501b5c6951e3420fe9e9fefc 100644 --- a/resources/views/layouts/user-dashboard/dashboard_teacher.blade.php +++ b/resources/views/layouts/user-dashboard/dashboard_teacher.blade.php @@ -3,20 +3,24 @@

Bem Vindo ao PAD

-

- - - - Atividades a serem realizdas -

+

+ + Atividades pendentes +

-
- +
+ @foreach($userPads as $userPad) +
+
+ +

+ +
PAD: {{ $userPad->pad->nome }}
+
Status: {{ $userPad->pad->getStatusAsText() }}
+ +
+
+ @endforeach
diff --git a/resources/views/pad/components/scripts/dimensao/ensino/ensino.blade.php b/resources/views/pad/components/scripts/dimensao/ensino/ensino.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..9a5092560d9b650404790b40e8c24b71a663db6d --- /dev/null +++ b/resources/views/pad/components/scripts/dimensao/ensino/ensino.blade.php @@ -0,0 +1,40 @@ + \ No newline at end of file diff --git a/resources/views/pad/components/scripts/dimensao/ensino/ensino_aulas.blade.php b/resources/views/pad/components/scripts/dimensao/ensino/ensino_aulas.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..2ecb924599013ffb70db11a7fa63b8c60f86bec9 --- /dev/null +++ b/resources/views/pad/components/scripts/dimensao/ensino/ensino_aulas.blade.php @@ -0,0 +1,200 @@ + \ No newline at end of file diff --git a/resources/views/pad/components/scripts/dropdown-eixo.blade.php b/resources/views/pad/components/scripts/dropdown-eixo.blade.php index 94b54d1416160e58ae1639c98e2da4d845824519..27423ce4d685a1e638c913b818fe82530f04b7cc 100644 --- a/resources/views/pad/components/scripts/dropdown-eixo.blade.php +++ b/resources/views/pad/components/scripts/dropdown-eixo.blade.php @@ -14,18 +14,19 @@