diff --git a/app/Http/Controllers/AvaliadorTaskTimeController.php b/app/Http/Controllers/AvaliadorTaskTimeController.php new file mode 100644 index 0000000000000000000000000000000000000000..ecce6c9019de5ae2720432fc553289c9d13b85fd --- /dev/null +++ b/app/Http/Controllers/AvaliadorTaskTimeController.php @@ -0,0 +1,22 @@ +<?php + +namespace App\Http\Controllers; + +use App\Models\Util\MenuItemsAvaliador; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; + +class AvaliadorTaskTimeController extends Controller +{ + public function index() + { + $menu = MenuItemsAvaliador::TASK_TIME; + $user = Auth::user(); + // $userPads = + // AvaliadorPad::where('user_id', '=', $user->id) + // ->join('pad', 'avaliador_pad.pad_id', '=', 'pad.id') + // ->get(); + + return view('avaliador-task-time.index', ['index_menu' => $menu]); + } +} diff --git a/app/Http/Controllers/PadController.php b/app/Http/Controllers/PadController.php index 5d1039b8184867769015e9990ec5ff829f04de90..32c782d40a0d9a8a0d99a5c111dc01e43547ca3b 100644 --- a/app/Http/Controllers/PadController.php +++ b/app/Http/Controllers/PadController.php @@ -81,7 +81,7 @@ class PadController extends Controller * @return \Illuminate\Http\Response */ public function view($id) - { + { $ensinoTotalHoras = EnsinoAtendimentoDiscente::whereUserPadId($id)->sum('ch_semanal') + EnsinoAula::whereUserPadId($id)->sum('ch_semanal') diff --git a/app/Http/Controllers/TaskController.php b/app/Http/Controllers/TaskController.php new file mode 100644 index 0000000000000000000000000000000000000000..1a3663d550e5e7f963f1eca0ebb11704cd3f13b2 --- /dev/null +++ b/app/Http/Controllers/TaskController.php @@ -0,0 +1,324 @@ +<?php + +namespace App\Http\Controllers; + +use App\Models\Tabelas\Ensino\EnsinoAtendimentoDiscente; +use App\Models\Tabelas\Ensino\EnsinoCoordenacaoRegencia; +use App\Models\Tabelas\Ensino\EnsinoOrientacao; +use App\Models\Tabelas\Ensino\EnsinoParticipacao; +use App\Models\Tabelas\Ensino\EnsinoSupervisao; +use App\Models\Tabelas\Ensino\EnsinoAula; +use App\Models\Tabelas\Ensino\EnsinoMembroDocente; +use App\Models\Tabelas\Ensino\EnsinoOutros; +use App\Models\Tabelas\Ensino\EnsinoProjeto; + +use App\Models\Tabelas\Pesquisa\PesquisaCoordenacao; +use App\Models\Tabelas\Pesquisa\PesquisaLideranca; +use App\Models\Tabelas\Pesquisa\PesquisaOrientacao; +use App\Models\Tabelas\Pesquisa\PesquisaOutros; + +use App\Models\Tabelas\Extensao\ExtensaoCoordenacao; +use App\Models\Tabelas\Extensao\ExtensaoOrientacao; +use App\Models\Tabelas\Extensao\ExtensaoOutros; + +use App\Models\Tabelas\Gestao\GestaoCoordenacaoLaboratoriosDidaticos; +use App\Models\Tabelas\Gestao\GestaoMembroCamaras; +use App\Models\Tabelas\Gestao\GestaoMembroConselho; +use App\Models\Tabelas\Gestao\GestaoOutros; +use App\Models\Tabelas\Gestao\GestaoCoordenacaoProgramaInstitucional; +use App\Models\Tabelas\Gestao\GestaoMembroComissao; +use App\Models\Tabelas\Gestao\GestaoMembroTitularConselho; +use App\Models\Tabelas\Gestao\GestaoRepresentanteUnidadeEducacao; +use App\Models\TaskTime; +use Illuminate\Http\Request; +use Illuminate\Support\Collection; +use Illuminate\Support\Facades\Response; + +class TaskController extends Controller +{ + public function search(Request $request) { + + $q = $request->query('q'); + $user_pad_id = $request->query('user_pad_id'); + + //ENSINO + //--------------------------------------------- + $type_ensino_aula = TaskTime::TYPE_ENSINO_AULA; + $list_ensino_aula = + EnsinoAula::whereUserPadId($user_pad_id)->get()->map(function(EnsinoAula $model) use ($type_ensino_aula) { + return [ + 'id' => "id_{$model->id}|type_{$type_ensino_aula}", + 'text' => $model->componente_curricular + ]; + }); + + $type_ensino_coordenacao_regencia = TaskTime::TYPE_ENSINO_COORDENACAO_REGENCIA; + $list_ensino_coordenacao_regencia = + EnsinoCoordenacaoRegencia::whereUserPadId($user_pad_id)->get()->map(function(EnsinoCoordenacaoRegencia $model) use ($type_ensino_coordenacao_regencia) { + return [ + 'id' => "id_{$model->id}|type_{$type_ensino_coordenacao_regencia}", + 'text' => $model->componente_curricular + ]; + }); + + $type_ensino_orientacao = TaskTime::TYPE_ENSINO_ORIENTACAO; + $list_ensino_orientacao = + EnsinoOrientacao::whereUserPadId($user_pad_id)->get()->map(function(EnsinoOrientacao $model) use ($type_ensino_orientacao) { + return [ + 'id' => "id_{$model->id}|type_{$type_ensino_orientacao}", + 'text' => $model->atividade + ]; + }); + + $type_ensino_supervisao = TaskTime::TYPE_ENSINO_SUPERVISAO; + $list_ensino_supervisao = + EnsinoSupervisao::whereUserPadId($user_pad_id)->get()->map(function(EnsinoSupervisao $model) use ($type_ensino_supervisao) { + return [ + 'id' => "id_{$model->id}|type_{$type_ensino_supervisao}", + 'text' => $model->atividade + ]; + }); + + + $type_ensino_atendimento_discente = TaskTime::TYPE_ENSINO_ATENDIMENTO_DISCENTE; + $list_ensino_atendimento_discente = + EnsinoAtendimentoDiscente::whereUserPadId($user_pad_id)->get()->map(function(EnsinoAtendimentoDiscente $model) use ($type_ensino_atendimento_discente) { + return [ + 'id' => "id_{$model->id}|type_{$type_ensino_atendimento_discente}", + 'text' => $model->componente_curricular + ]; + }); + + $type_ensino_projeto = TaskTime::TYPE_ENSINO_PROJETO; + $list_ensino_projeto = + EnsinoProjeto::whereUserPadId($user_pad_id)->get()->map(function(EnsinoProjeto $model) use ($type_ensino_projeto) { + return [ + 'id' => "id_{$model->id}|type_{$type_ensino_projeto}", + 'text' => $model->componente_curricular + ]; + }); + + $type_ensino_participacao = TaskTime::TYPE_ENSINO_PARTICIPACAO; + $list_ensino_participacao = + EnsinoParticipacao::whereUserPadId($user_pad_id)->get()->map(function(EnsinoParticipacao $model) use ($type_ensino_participacao) { + return [ + 'id' => "id_{$model->id}|type_{$type_ensino_participacao}", + 'text' => $model->curso + ]; + }); + + $type_ensino_membro_docente = TaskTime::TYPE_ENSINO_MEMBRO_DOCENTE; + $list_ensino_membro_docente = + EnsinoMembroDocente::whereUserPadId($user_pad_id)->get()->map(function(EnsinoMembroDocente $model) use ($type_ensino_membro_docente) { + return [ + 'id' => "id_{$model->id}|type_{$type_ensino_membro_docente}", + 'text' => $model->nucleo + ]; + }); + + $type_ensino_outros = TaskTime::TYPE_ENSINO_OUTROS; + $list_ensino_outros = + EnsinoOutros::whereUserPadId($user_pad_id)->get()->map(function(EnsinoOutros $model) use ($type_ensino_outros) { + return [ + 'id' => "id_{$model->id}|type_{$type_ensino_outros}", + 'text' => $model->atividade + ]; + }); + //--------------------------------------------- + + //PESQUISA + //--------------------------------------------- + $type_pesquisa_coordenacao = TaskTime::TYPE_PESQUISA_COORDENACAO; + $list_pesquisa_coordenacao = + PesquisaCoordenacao::whereUserPadId($user_pad_id)->get()->map(function(PesquisaCoordenacao $model) use ($type_pesquisa_coordenacao) { + return [ + 'id' => "id_{$model->id}|type_{$type_pesquisa_coordenacao}", + 'text' => $model->titulo_projeto + ]; + }); + + $type_pesquisa_orientacao = TaskTime::TYPE_PESQUISA_ORIENTACAO; + $list_pesquisa_orientacao = + PesquisaOrientacao::whereUserPadId($user_pad_id)->get()->map(function(PesquisaOrientacao $model) use ($type_pesquisa_orientacao) { + return [ + 'id' => "id_{$model->id}|type_{$type_pesquisa_orientacao}", + 'text' => $model->titulo_projeto + ]; + }); + + $type_pesquisa_lideranca = TaskTime::TYPE_PESQUISA_LIDERANCA; + $list_pesquisa_lideranca = + PesquisaLideranca::whereUserPadId($user_pad_id)->get()->map(function(PesquisaLideranca $model) use ($type_pesquisa_lideranca) { + return [ + 'id' => "id_{$model->id}|type_{$type_pesquisa_lideranca}", + 'text' => $model->grupo_pesquisa + ]; + }); + + $type_pesquisa_outros = TaskTime::TYPE_PESQUISA_OUTROS; + $list_pesquisa_outros = + PesquisaOutros::whereUserPadId($user_pad_id)->get()->map(function(PesquisaOutros $model) use ($type_pesquisa_outros) { + return [ + 'id' => "id_{$model->id}|type_{$type_pesquisa_outros}", + 'text' => $model->atividade + ]; + }); + //--------------------------------------------- + + //EXTENSÃO + //--------------------------------------------- + $type_extensao_coordenacao = TaskTime::TYPE_EXTENSAO_COORDENACAO; + $list_extensao_coordenacao = + ExtensaoCoordenacao::whereUserPadId($user_pad_id)->get()->map(function(ExtensaoCoordenacao $model) use ($type_extensao_coordenacao) { + return [ + 'id' => "id_{$model->id}|type_{$type_extensao_coordenacao}", + 'text' => $model->titulo_projeto + ]; + }); + + $type_extensao_orientacao = TaskTime::TYPE_EXTENSAO_ORIENTACAO; + $list_extensao_orientacao = + ExtensaoOrientacao::whereUserPadId($user_pad_id)->get()->map(function(ExtensaoOrientacao $model) use ($type_extensao_orientacao) { + return [ + 'id' => "id_{$model->id}|type_{$type_extensao_orientacao}", + 'text' => $model->titulo_projeto + ]; + }); + + $type_extensao_outros = TaskTime::TYPE_EXTENSAO_OUTROS; + $list_extensao_outros = + ExtensaoOutros::whereUserPadId($user_pad_id)->get()->map(function(ExtensaoOutros $model) use ($type_extensao_outros) { + return [ + 'id' => "id_{$model->id}|type_{$type_extensao_outros}", + 'text' => $model->atividade + ]; + }); + //--------------------------------------------- + + //GESTÃO + //--------------------------------------------- + + $type_gestao_coordenacao_laboratorios_didaticos = TaskTime::TYPE_GESTAO_COORDENACAO_LABORATORIOS_DIDATICOS; + $list_gestao_coordenacao_laboratorios_didaticos = + GestaoCoordenacaoLaboratoriosDidaticos::whereUserPadId($user_pad_id)->get()->map(function(GestaoCoordenacaoLaboratoriosDidaticos $model) use ($type_gestao_coordenacao_laboratorios_didaticos) { + return [ + 'id' => "id_{$model->id}|type_{$type_gestao_coordenacao_laboratorios_didaticos}", + 'text' => $model->nome + ]; + }); + + $type_gestao_membro_conselho = TaskTime::TYPE_GESTAO_MEMBRO_CONSELHO; + $list_gestao_membro_conselho = + GestaoMembroConselho::whereUserPadId($user_pad_id)->get()->map(function(GestaoMembroConselho $model) use ($type_gestao_membro_conselho) { + return [ + 'id' => "id_{$model->id}|type_{$type_gestao_membro_conselho}", + 'text' => $model->nome + ]; + }); + + $type_gestao_coordenacao_programa_institucional = TaskTime::TYPE_GESTAO_COORDENACAO_PROGRAMA_INSTITUCIONAL; + $list_gestao_coordenacao_programa_institucional = + GestaoCoordenacaoProgramaInstitucional::whereUserPadId($user_pad_id)->get()->map(function(GestaoCoordenacaoProgramaInstitucional $model) use ($type_gestao_coordenacao_programa_institucional) { + return [ + 'id' => "id_{$model->id}|type_{$type_gestao_coordenacao_programa_institucional}", + 'text' => $model->nome + ]; + }); + + $type_gestao_membro_titular_conselho = TaskTime::TYPE_GESTAO_MEMBRO_TITULAR_CONSELHO; + $list_gestao_membro_titular_conselho = + GestaoMembroTitularConselho::whereUserPadId($user_pad_id)->get()->map(function(GestaoMembroTitularConselho $model) use ($type_gestao_membro_titular_conselho) { + return [ + 'id' => "id_{$model->id}|type_{$type_gestao_membro_titular_conselho}", + 'text' => $model->nome + ]; + }); + + $type_gestao_membro_camaras = TaskTime::TYPE_GESTAO_MEMBRO_CAMARAS; + $list_gestao_membro_camaras = + GestaoMembroCamaras::whereUserPadId($user_pad_id)->get()->map(function(GestaoMembroCamaras $model) use ($type_gestao_membro_camaras) { + return [ + 'id' => "id_{$model->id}|type_{$type_gestao_membro_camaras}", + 'text' => $model->nome + ]; + }); + + $type_gestao_representante_unidade_educacao = TaskTime::TYPE_GESTAO_REPRESENTANTE_UNIDADE_EDUCACAO; + $list_gestao_representante_unidade_educacao = + GestaoRepresentanteUnidadeEducacao::whereUserPadId($user_pad_id)->get()->map(function(GestaoRepresentanteUnidadeEducacao $model) use ($type_gestao_representante_unidade_educacao) { + return [ + 'id' => "id_{$model->id}|type_{$type_gestao_representante_unidade_educacao}", + 'text' => $model->nome + ]; + }); + + $type_gestao_membro_comissao = TaskTime::TYPE_GESTAO_MEMBRO_COMISSAO; + $list_gestao_membro_comissao = + GestaoMembroComissao::whereUserPadId($user_pad_id)->get()->map(function(GestaoMembroComissao $model) use ($type_gestao_membro_comissao) { + return [ + 'id' => "id_{$model->id}|type_{$type_gestao_membro_comissao}", + 'text' => $model->nome + ]; + }); + + $type_gestao_outros = TaskTime::TYPE_GESTAO_OUTROS; + $list_gestao_outros = + GestaoOutros::whereUserPadId($user_pad_id)->get()->map(function(GestaoOutros $model) use ($type_gestao_outros) { + return [ + 'id' => "id_{$model->id}|type_{$type_gestao_outros}", + 'text' => $model->atividade + ]; + }); + //--------------------------------------------- + + $dimension_collections = [ + $list_ensino_aula, + $list_ensino_coordenacao_regencia, + $list_ensino_orientacao, + $list_ensino_supervisao, + $list_ensino_atendimento_discente, + $list_ensino_projeto, + $list_ensino_participacao, + $list_ensino_membro_docente, + $list_ensino_outros, + + $list_pesquisa_coordenacao, + $list_pesquisa_orientacao, + $list_pesquisa_lideranca, + $list_pesquisa_outros, + + $list_extensao_coordenacao, + $list_extensao_orientacao, + $list_extensao_outros, + + $list_gestao_coordenacao_laboratorios_didaticos, + $list_gestao_membro_conselho, + $list_gestao_coordenacao_programa_institucional, + $list_gestao_membro_titular_conselho, + $list_gestao_membro_camaras, + $list_gestao_representante_unidade_educacao, + $list_gestao_membro_comissao, + $list_gestao_outros, + ]; + + $combined_collections = collect([]); + + $list_tasks = + collect($dimension_collections) + ->reduce( + function ($carry, $collection) { + return $carry->concat($collection); + }, + $combined_collections + ); + + $results = ['results' => $list_tasks]; + + return Response::json($results); + } + + public function searchById(Request $request) { + + dd($request->all()); + } +} diff --git a/app/Http/Controllers/TaskTimeController.php b/app/Http/Controllers/TaskTimeController.php index 25fb7572cf911b78dc10a5d40f144ad1dda026be..b01dea12654f333caa3564ce3d46f2aae9a7fcf7 100644 --- a/app/Http/Controllers/TaskTimeController.php +++ b/app/Http/Controllers/TaskTimeController.php @@ -2,31 +2,118 @@ namespace App\Http\Controllers; +use App\Models\TaskTime; +use App\Models\Util\Menu; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Response; +use Illuminate\Support\Facades\Validator; class TaskTimeController extends Controller { - public function index() { + public function index($user_pad_id) + { + $menu = Menu::PADS; + return view('task-time.index', [ + 'menu' => $menu, + 'user_pad_id' => $user_pad_id + ]); } - public function createView() { + public function create($user_pad_id) { + return view('task-time.create', [ + 'user_pad_id' => $user_pad_id] + ); + } + + public function save(Request $request) { + + $model = new TaskTime($request->all()); + + if($model->save()) { + return redirect() + ->route('TaskTimeIndex', ['user_pad_id' => $model->user_pad_id]) + ->with('success', 'Cadastro realizado com sucesso!'); + } + } + public function edit($id) { + $model = TaskTime::find($id); + return view('task-time.update', [ + 'model' => $model + ]); } - public function create() { + public function update($id, Request $request) { + $request->merge(['start_time' => TaskTime::traitHour($request->get('start_time'))]); + $request->merge(['end_time' => TaskTime::traitHour($request->get('end_time'))]); + + $model = TaskTime::find($id); + $model->fill($request->all()); + + if($model->save()) { + return redirect() + ->route('TaskTimeIndex', ['user_pad_id' => $model->user_pad_id]) + ->with('success', 'Atualizado com sucesso!'); + } + + return redirect() + ->route('TaskTimeIndex', ['user_pad_id' => $model->user_pad_id]) + ->with('fail', 'Erro ao Atualizar!'); + } - public function updateView() { + public function delete($id) { + + $model = TaskTime::find($id); + + if($model->delete()) { + return redirect() + ->route('TaskTimeIndex', ['user_pad_id' => $model->user_pad_id]) + ->with('success', 'Deletado com sucesso!'); + } + + return redirect() + ->route('TaskTimeIndex', ['user_pad_id' => $model->user_pad_id]) + ->with('fail', 'Erro ao Deletar!'); } - public function update() { + public function searchTask(Request $request) { + + $type = $request->get('type'); + $tarefa_id = $request->get('tarefa_id'); + + $model = new TaskTime(); + $model->tarefa_id = $tarefa_id; + $model->type = $type; + + $attributes = $model->tarefa->getAttributes(); + return Response::json(['task' => $attributes]); } - public function delete() { - + public function ajaxValidation(Request $request) + { + $request->merge(['start_time' => TaskTime::traitHour($request->get('start_time'))]); + $request->merge(['end_time' => TaskTime::traitHour($request->get('end_time'))]); + + $attributes = [ + 'id' => $request->get('id'), + 'user_pad_id' => $request->get('user_pad_id'), + 'tarefa_id' => $request->get('tarefa_id'), + 'type' => $request->get('type'), + 'start_time' => $request->get('start_time'), + 'end_time' => $request->get('end_time'), + ]; + + $validator = Validator::make($request->all(), TaskTime::rules($attributes), TaskTime::messages()); + + if($validator->passes()) { + return Response::json(['message' => true, 'status' => 200]); + } + + return Response::json(['errors' => $validator->errors(), 'status' => 400]); } } diff --git a/app/Models/TaskTime.php b/app/Models/TaskTime.php index 4d7a76426742e542b87559805237642a1a331262..9ccbe6ce97aeaea586bcaa66134e9c2421888bf4 100644 --- a/app/Models/TaskTime.php +++ b/app/Models/TaskTime.php @@ -2,7 +2,37 @@ namespace App\Models; +use Illuminate\Validation\Rule; + +use App\Models\Tabelas\Ensino\EnsinoAtendimentoDiscente; +use App\Models\Tabelas\Ensino\EnsinoAula; +use App\Models\Tabelas\Ensino\EnsinoCoordenacaoRegencia; +use App\Models\Tabelas\Ensino\EnsinoMembroDocente; +use App\Models\Tabelas\Ensino\EnsinoOrientacao; +use App\Models\Tabelas\Ensino\EnsinoOutros; +use App\Models\Tabelas\Ensino\EnsinoParticipacao; +use App\Models\Tabelas\Ensino\EnsinoProjeto; +use App\Models\Tabelas\Ensino\EnsinoSupervisao; +use App\Models\Tabelas\Extensao\ExtensaoCoordenacao; +use App\Models\Tabelas\Extensao\ExtensaoOrientacao; +use App\Models\Tabelas\Extensao\ExtensaoOutros; +use App\Models\Tabelas\Gestao\GestaoCoordenacaoLaboratoriosDidaticos; +use App\Models\Tabelas\Gestao\GestaoCoordenacaoProgramaInstitucional; +use App\Models\Tabelas\Gestao\GestaoMembroCamaras; +use App\Models\Tabelas\Gestao\GestaoMembroComissao; +use App\Models\Tabelas\Gestao\GestaoMembroConselho; +use App\Models\Tabelas\Gestao\GestaoMembroTitularConselho; +use App\Models\Tabelas\Gestao\GestaoOutros; +use App\Models\Tabelas\Gestao\GestaoRepresentanteUnidadeEducacao; +use App\Models\Tabelas\Pesquisa\PesquisaCoordenacao; +use App\Models\Tabelas\Pesquisa\PesquisaLideranca; +use App\Models\Tabelas\Pesquisa\PesquisaOrientacao; +use App\Models\Tabelas\Pesquisa\PesquisaOutros; +use App\Rules\ValidationLimitTime; +use DateInterval; +use DateTime; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Collection; class TaskTime extends Model { @@ -39,6 +69,7 @@ class TaskTime extends Model CONST TYPE_GESTAO_MEMBRO_COMISSAO = 23; CONST TYPE_GESTAO_OUTROS = 24; + CONST WEEK_HOUR = 0; CONST WEEK_DAY_SUNDAY = 1; CONST WEEK_DAY_MONDAY = 2; CONST WEEK_DAY_TUESDAY = 3; @@ -49,114 +80,158 @@ class TaskTime extends Model protected $table = 'task_time'; - protected $fillable = ['user_pad_upe', 'tarefa_id', 'type', 'weekday', 'start_time', 'end_time']; + protected $fillable = ['user_pad_id', 'tarefa_id', 'type', 'weekday', 'start_time', 'end_time']; + + public static function rules($attributes) + { + return [ + 'cod_atividade' => ['required'], + 'slct_tarefa_id' => ['required'], + 'tarefa_id' => ['required', 'integer'], + 'type' => ['required', 'integer', Rule::in(array_keys(self::listTaskTypes()))], + 'weekday' => ['required', 'integer', Rule::in(array_keys(self::listWeekDays()))], + 'start_time' => ['required', 'date_format:H:i', 'after_or_equal:07:30', 'before_or_equal:21:15'], + // 'end_time' => ['required', 'date_format:H:i', 'after_or_equal:07:30', 'before_or_equal:21:15'], + 'end_time' => ['required', 'date_format:H:i', 'after_or_equal:07:30', 'before_or_equal:21:15', new ValidationLimitTime($attributes)], + ]; + } + + + public static function messages() + { + return [ + //cod_atividade + 'cod_atividade.required' => '', + + //tarefa_id + 'slct_tarefa_id.required' => 'O campo "Atividade" é obrigatório!', + + // //type + // 'type.required' => 'O campo "Atividade" é obrigatório!', + + //weekday + 'weekday.required' => 'O campo "Dia da Semana" é obrigatório!', + 'weekday.in' => 'Selecione uma opção da lista de "Dia da Semana"!', + 'weekday.integer' => 'O campo "Dia da Semana" deve cónter um inteiro!', + + //start_time + 'start_time.required' => 'O campo "Horário Inicial" é obrigatório!', + 'start_time.after_or_equal' => 'O valor minÃmo do "Horário Inicial" é 07:30!', + 'start_time.before_or_equal' => 'O valor máximo do "Horário Inicial" é 21:15!', + + //end_time + 'end_time.required' => 'O campo "Horário Final" é obrigatório!', + 'end_time.after_or_equal' => 'O valor minÃmo do "Horário Final" é 07:30!', + 'end_time.before_or_equal' => 'O valor máximo do "Horário Final" é 21:15!' + ]; + } public function tarefa() { // Return Ensino Models // - - - - - - - - - - - if($this->type === self::TYPE_ENSINO_ATENDIMENTO_DISCENTE) { + if($this->type == self::TYPE_ENSINO_ATENDIMENTO_DISCENTE) { return $this->hasOne(EnsinoAtendimentoDiscente::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_ENSINO_AULA) { + if($this->type == self::TYPE_ENSINO_AULA) { return $this->hasOne(EnsinoAula::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_ENSINO_COORDENACAO_REGENCIA) { + if($this->type == self::TYPE_ENSINO_COORDENACAO_REGENCIA) { return $this->hasOne(EnsinoCoordenacaoRegencia::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_ENSINO_MEMBRO_DOCENTE) { + if($this->type == self::TYPE_ENSINO_MEMBRO_DOCENTE) { return $this->hasOne(EnsinoMembroDocente::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_ENSINO_ORIENTACAO) { + if($this->type == self::TYPE_ENSINO_ORIENTACAO) { return $this->hasOne(EnsinoOrientacao::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_ENSINO_OUTROS) { + if($this->type == self::TYPE_ENSINO_OUTROS) { return $this->hasOne(EnsinoOutros::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_ENSINO_PARTICIPACAO) { + if($this->type == self::TYPE_ENSINO_PARTICIPACAO) { return $this->hasOne(EnsinoParticipacao::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_ENSINO_PROJETO) { + if($this->type == self::TYPE_ENSINO_PROJETO) { return $this->hasOne(EnsinoProjeto::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_ENSINO_SUPERVISAO) { + if($this->type == self::TYPE_ENSINO_SUPERVISAO) { return $this->hasOne(EnsinoSupervisao::class, 'id', 'tarefa_id'); } // - - - - - - - - - - // Return Pesquisa Models // - - - - - - - - - - - if($this->type === self::TYPE_PESQUISA_COORDENACAO) { + if($this->type == self::TYPE_PESQUISA_COORDENACAO) { return $this->hasOne(PesquisaCoordenacao::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_PESQUISA_LIDERANCA) { + if($this->type == self::TYPE_PESQUISA_LIDERANCA) { return $this->hasOne(PesquisaLideranca::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_PESQUISA_ORIENTACAO) { + if($this->type == self::TYPE_PESQUISA_ORIENTACAO) { return $this->hasOne(PesquisaOrientacao::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_PESQUISA_OUTROS) { + if($this->type == self::TYPE_PESQUISA_OUTROS) { return $this->hasOne(PesquisaOutros::class, 'id', 'tarefa_id'); } // - - - - - - - - - - // Return Extensao Models // - - - - - - - - - - - if($this->type === self::TYPE_EXTENSAO_COORDENACAO) { + if($this->type == self::TYPE_EXTENSAO_COORDENACAO) { return $this->hasOne(ExtensaoCoordenacao::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_EXTENSAO_ORIENTACAO) { + if($this->type == self::TYPE_EXTENSAO_ORIENTACAO) { return $this->hasOne(ExtensaoOrientacao::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_EXTENSAO_OUTROS) { + if($this->type == self::TYPE_EXTENSAO_OUTROS) { return $this->hasOne(ExtensaoOutros::class, 'id', 'tarefa_id'); } // - - - - - - - - - - // Return Gestao Models // - - - - - - - - - - - if($this->type === self::TYPE_GESTAO_COORDENACAO_LABORATORIOS_DIDATICOS) { + if($this->type == self::TYPE_GESTAO_COORDENACAO_LABORATORIOS_DIDATICOS) { return $this->hasOne(GestaoCoordenacaoLaboratoriosDidaticos::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_GESTAO_COORDENACAO_PROGRAMA_INSTITUCIONAL) { + if($this->type == self::TYPE_GESTAO_COORDENACAO_PROGRAMA_INSTITUCIONAL) { return $this->hasOne(GestaoCoordenacaoProgramaInstitucional::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_GESTAO_MEMBRO_CAMARAS) { + if($this->type == self::TYPE_GESTAO_MEMBRO_CAMARAS) { return $this->hasOne(GestaoMembroCamaras::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_GESTAO_MEMBRO_COMISSAO) { + if($this->type == self::TYPE_GESTAO_MEMBRO_COMISSAO) { return $this->hasOne(GestaoMembroComissao::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_GESTAO_MEMBRO_CONSELHO) { + if($this->type == self::TYPE_GESTAO_MEMBRO_CONSELHO) { return $this->hasOne(GestaoMembroConselho::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_GESTAO_MEMBRO_TITULAR_CONSELHO) { + if($this->type == self::TYPE_GESTAO_MEMBRO_TITULAR_CONSELHO) { return $this->hasOne(GestaoMembroTitularConselho::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_GESTAO_OUTROS) { + if($this->type == self::TYPE_GESTAO_OUTROS) { return $this->hasOne(GestaoOutros::class, 'id', 'tarefa_id'); } - if($this->type === self::TYPE_GESTAO_REPRESENTANTE_UNIDADE_EDUCACAO) { + if($this->type == self::TYPE_GESTAO_REPRESENTANTE_UNIDADE_EDUCACAO) { return $this->hasOne(GestaoRepresentanteUnidadeEducacao::class, 'id', 'tarefa_id'); } // - - - - - - - - - - @@ -166,9 +241,164 @@ class TaskTime extends Model return $this->hasOne(UserPad::class, 'id', 'user_pad_id'); } - public static function listWeekDays($value) { + /** + * @return string + */ + public function getCode() { + return $this->tarefa->cod_atividade; + } + + /** + * @return string + */ + public function getName() { + // Return Ensino Models + // - - - - - - - - - - + if($this->type == self::TYPE_ENSINO_ATENDIMENTO_DISCENTE) { + return $this->tarefa->componente_curricular; + } + + if($this->type == self::TYPE_ENSINO_AULA) { + return $this->tarefa->componente_curricular; + } + + if($this->type == self::TYPE_ENSINO_COORDENACAO_REGENCIA) { + return $this->tarefa->componente_curricular; + } + + if($this->type == self::TYPE_ENSINO_MEMBRO_DOCENTE) { + return $this->tarefa->nucleo; + } + + if($this->type == self::TYPE_ENSINO_ORIENTACAO) { + return $this->tarefa->atividade; + } + + if($this->type == self::TYPE_ENSINO_OUTROS) { + return $this->tarefa->atividade; + } + + if($this->type == self::TYPE_ENSINO_PARTICIPACAO) { + return $this->tarefa->curso; + } + + if($this->type == self::TYPE_ENSINO_PROJETO) { + return $this->tarefa->componente_curricular; + } + + if($this->type == self::TYPE_ENSINO_SUPERVISAO) { + return $this->tarefa->atividade; + } + // - - - - - - - - - - + + // Return Pesquisa Models + // - - - - - - - - - - + if($this->type == self::TYPE_PESQUISA_COORDENACAO) { + return $this->tarefa->titulo_projeto; + } + + if($this->type == self::TYPE_PESQUISA_LIDERANCA) { + return $this->tarefa->grupo_pesquisa; + } + + if($this->type == self::TYPE_PESQUISA_ORIENTACAO) { + return $this->tarefa->titulo_projeto; + } + + if($this->type == self::TYPE_PESQUISA_OUTROS) { + return $this->tarefa->atividade; + } + // - - - - - - - - - - + + // Return Extensao Models + // - - - - - - - - - - + if($this->type == self::TYPE_EXTENSAO_COORDENACAO) { + return $this->tarefa->titulo_projeto; + } + + if($this->type == self::TYPE_EXTENSAO_ORIENTACAO) { + return $this->tarefa->titulo_projeto; + } + + if($this->type == self::TYPE_EXTENSAO_OUTROS) { + return $this->tarefa->atividade; + } + // - - - - - - - - - - + + // Return Gestao Models + // - - - - - - - - - - + if($this->type == self::TYPE_GESTAO_COORDENACAO_LABORATORIOS_DIDATICOS) { + return $this->tarefa->nome; + } + + if($this->type == self::TYPE_GESTAO_COORDENACAO_PROGRAMA_INSTITUCIONAL) { + return $this->tarefa->nome; + } + + if($this->type == self::TYPE_GESTAO_MEMBRO_CAMARAS) { + return $this->tarefa->nome; + } + + if($this->type == self::TYPE_GESTAO_MEMBRO_COMISSAO) { + return $this->tarefa->nome; + } + + if($this->type == self::TYPE_GESTAO_MEMBRO_CONSELHO) { + return $this->tarefa->nome; + } + + if($this->type == self::TYPE_GESTAO_MEMBRO_TITULAR_CONSELHO) { + return $this->tarefa->nome; + } + + if($this->type == self::TYPE_GESTAO_OUTROS) { + return $this->tarefa->atividade; + } + + if($this->type == self::TYPE_GESTAO_REPRESENTANTE_UNIDADE_EDUCACAO) { + return $this->tarefa->nome; + } + // - - - - - - - - - - + } + + /** + * @return string + */ + public function intervalTime($format = 'H:i:s') { + + $startTime = DateTime::createFromFormat('H:i:s', $this->start_time); + + $endTime = DateTime::createFromFormat('H:i:s', $this->end_time); + + $interval = $startTime->diff($endTime); + + $dateTime = new DateTime('00:00'); + $dateTime->add($interval); // Popular com Interval + + return $dateTime->format($format); + } + + /** + * STATIC METHODS + */ + + public static function listWeekDaysTable($value = null) { + $values = [ + self::WEEK_HOUR => "HORÃRIO", + self::WEEK_DAY_MONDAY => "SEGUNDA-FEIRA", + self::WEEK_DAY_TUESDAY => "TERÇA-FEIRA", + self::WEEK_DAY_WEDNESDAY => "QUARTA-FEIRA", + self::WEEK_DAY_THURSDAY => "QUINTA-FEIRA", + self::WEEK_DAY_FRIDAY => "SEXTA-FEIRA", + self::WEEK_DAY_SATURDAY => "SÃBADO", + ]; + + return $value != null ? $values[$value] : $values; + } + + public static function listWeekDays($value = null) { $values = [ - self::WEEK_DAY_SUNDAY => "DOMINGO", + // self::WEEK_DAY_SUNDAY => "DOMINGO", self::WEEK_DAY_MONDAY => "SEGUNDA-FEIRA", self::WEEK_DAY_TUESDAY => "TERÇA-FEIRA", self::WEEK_DAY_WEDNESDAY => "QUARTA-FEIRA", @@ -180,4 +410,234 @@ class TaskTime extends Model return $value != null ? $values[$value] : $values; } + public static function listTaskTypes($value = null) { + $values = [ + + self::TYPE_ENSINO_AULA => '', + self::TYPE_ENSINO_COORDENACAO_REGENCIA => '', + self::TYPE_ENSINO_ORIENTACAO => '', + self::TYPE_ENSINO_SUPERVISAO => '', + self::TYPE_ENSINO_ATENDIMENTO_DISCENTE => '', + self::TYPE_ENSINO_PROJETO => '', + self::TYPE_ENSINO_PARTICIPACAO => '', + self::TYPE_ENSINO_MEMBRO_DOCENTE => '', + self::TYPE_ENSINO_OUTROS => '', + + self::TYPE_PESQUISA_COORDENACAO => '', + self::TYPE_PESQUISA_ORIENTACAO => '', + self::TYPE_PESQUISA_LIDERANCA => '', + self::TYPE_PESQUISA_OUTROS => '', + + self::TYPE_EXTENSAO_COORDENACAO => '', + self::TYPE_EXTENSAO_ORIENTACAO => '', + self::TYPE_EXTENSAO_OUTROS => '', + + self::TYPE_GESTAO_COORDENACAO_LABORATORIOS_DIDATICOS => '', + self::TYPE_GESTAO_MEMBRO_CONSELHO => '', + self::TYPE_GESTAO_COORDENACAO_PROGRAMA_INSTITUCIONAL => '', + self::TYPE_GESTAO_MEMBRO_TITULAR_CONSELHO => '', + self::TYPE_GESTAO_MEMBRO_CAMARAS => '', + self::TYPE_GESTAO_REPRESENTANTE_UNIDADE_EDUCACAO => '', + self::TYPE_GESTAO_MEMBRO_COMISSAO => '', + self::TYPE_GESTAO_OUTROS => '', + ]; + + return $value != null ? $values[$value] : $values; + } + + /** + * @param $floatValue + * @return string|time + */ + public static function convertFloatToHour($floatValue) { + + $percent = $floatValue * 100.0; // float to percent + $one_percent_from_hour = 0.6; // 0.6 min + + $minutes = $one_percent_from_hour * $percent; // minutes + + // Criar um objeto DateTime com um intervalo de minutos + $interval = new DateInterval('PT' . $minutes . 'M'); + + // Criar um objeto DateTime base com 0 horas e 0 minutos + $dateTime = new DateTime('00:00'); + $dateTime->add($interval); // Popular com Interval + + return $dateTime->format('H:i:s'); + } + + /** + * Recebe e formata uma string para formato H:i + * Pode ser recebido uma hora completa H:i:s ou uma hora padrão H:i + * @return string|date + */ + public static function traitHour(string|null $hour = "") + { + if(!empty($hour)) { + $hour_splited = explode(':', $hour ); + + $hour_h_i = "{$hour_splited[0]}:$hour_splited[1]"; + + return $hour_h_i; + } + + return $hour; + } + + /** + * @param $taskTimes + * @return DateTime + */ + public static function sumIntervalTimes(Collection $taskTimes) { + + $sumDateTime = new DateTime("00:00:00"); + + foreach($taskTimes as $taskTime) { + + $split_time = explode(":", $taskTime->intervalTime()); + + $hours = $split_time[0]; + $minutes = $split_time[1]; + $seconds = $split_time[2]; + + $sumDateTime->modify("+{$hours} hours +{$minutes} minutes +{$seconds} seconds"); + } + + return $sumDateTime; + } + + /** + * @param DateTime $dateTimeX + * @param DateTime $dateTimeY + * @return DateTime + */ + public static function sumDateTimes(DateTime $dateTimeX, DateTime $dateTimeY) + { + $time_x = $dateTimeX->format("H:i:s"); + $time_y = $dateTimeY->format("H:i:s"); + + $newDateTime = new DateTime($time_x); + + $split_time = explode(":", $time_y); + + $hours = $split_time[0]; + $minutes = $split_time[1]; + $seconds = $split_time[2]; + + $newDateTime->modify("+{$hours} hours +{$minutes} minutes +{$seconds} seconds"); + + return $newDateTime; + } + + /** @return mixed */ + public static function tarefaByStatic($type, $tarefa_id) + { + // Return Ensino Models + // - - - - - - - - - - + if($type == self::TYPE_ENSINO_ATENDIMENTO_DISCENTE) { + return EnsinoAtendimentoDiscente::find($tarefa_id); + } + + if($type == self::TYPE_ENSINO_AULA) { + return EnsinoAula::find($tarefa_id); + } + + if($type == self::TYPE_ENSINO_COORDENACAO_REGENCIA) { + return EnsinoCoordenacaoRegencia::find($tarefa_id); + } + + if($type == self::TYPE_ENSINO_MEMBRO_DOCENTE) { + return EnsinoMembroDocente::find($tarefa_id); + } + + if($type == self::TYPE_ENSINO_ORIENTACAO) { + return EnsinoOrientacao::find($tarefa_id); + } + + if($type == self::TYPE_ENSINO_OUTROS) { + return EnsinoOutros::find($tarefa_id); + } + + if($type == self::TYPE_ENSINO_PARTICIPACAO) { + return EnsinoParticipacao::find($tarefa_id); + } + + if($type == self::TYPE_ENSINO_PROJETO) { + return EnsinoProjeto::find($tarefa_id); + } + + if($type == self::TYPE_ENSINO_SUPERVISAO) { + return EnsinoSupervisao::find($tarefa_id); + } + // - - - - - - - - - - + + // Return Pesquisa Models + // - - - - - - - - - - + if($type == self::TYPE_PESQUISA_COORDENACAO) { + return PesquisaCoordenacao::find($tarefa_id); + } + + if($type == self::TYPE_PESQUISA_LIDERANCA) { + return PesquisaLideranca::find($tarefa_id); + } + + if($type == self::TYPE_PESQUISA_ORIENTACAO) { + return PesquisaOrientacao::find($tarefa_id); + } + + if($type == self::TYPE_PESQUISA_OUTROS) { + return PesquisaOutros::find($tarefa_id); + } + // - - - - - - - - - - + + // Return Extensao Models + // - - - - - - - - - - + if($type == self::TYPE_EXTENSAO_COORDENACAO) { + return ExtensaoCoordenacao::find($tarefa_id); + } + + if($type == self::TYPE_EXTENSAO_ORIENTACAO) { + return ExtensaoOrientacao::find($tarefa_id); + } + + if($type == self::TYPE_EXTENSAO_OUTROS) { + return ExtensaoOutros::find($tarefa_id); + } + // - - - - - - - - - - + + // Return Gestao Models + // - - - - - - - - - - + if($type == self::TYPE_GESTAO_COORDENACAO_LABORATORIOS_DIDATICOS) { + return GestaoCoordenacaoLaboratoriosDidaticos::find($tarefa_id); + } + + if($type == self::TYPE_GESTAO_COORDENACAO_PROGRAMA_INSTITUCIONAL) { + return GestaoCoordenacaoProgramaInstitucional::find($tarefa_id); + } + + if($type == self::TYPE_GESTAO_MEMBRO_CAMARAS) { + return GestaoMembroCamaras::find($tarefa_id); + } + + if($type == self::TYPE_GESTAO_MEMBRO_COMISSAO) { + return GestaoMembroComissao::find($tarefa_id); + } + + if($type == self::TYPE_GESTAO_MEMBRO_CONSELHO) { + return GestaoMembroConselho::find($tarefa_id); + } + + if($type == self::TYPE_GESTAO_MEMBRO_TITULAR_CONSELHO) { + return GestaoMembroTitularConselho::find($tarefa_id); + } + + if($type == self::TYPE_GESTAO_OUTROS) { + return GestaoOutros::find($tarefa_id); + } + + if($type == self::TYPE_GESTAO_REPRESENTANTE_UNIDADE_EDUCACAO) { + return GestaoRepresentanteUnidadeEducacao::find($tarefa_id); + } + // - - - - - - - - - - + } } diff --git a/app/Models/Util/MenuItemsAvaliador.php b/app/Models/Util/MenuItemsAvaliador.php index 8d443c019113b10523240b1a77205151de90d568..6f8a1d1227a022b792615a40ed73f3e0d97e429c 100644 --- a/app/Models/Util/MenuItemsAvaliador.php +++ b/app/Models/Util/MenuItemsAvaliador.php @@ -8,4 +8,5 @@ class MenuItemsAvaliador const HOME = 0; const PADs = 1; const REPORT = 2; + const TASK_TIME = 3; } diff --git a/app/Rules/ValidationLimitTime.php b/app/Rules/ValidationLimitTime.php new file mode 100644 index 0000000000000000000000000000000000000000..efa151b4fcf1874deb9ae43b021cc509a75d9dc6 --- /dev/null +++ b/app/Rules/ValidationLimitTime.php @@ -0,0 +1,162 @@ +<?php + +namespace App\Rules; + +use App\Models\TaskTime; +use DateTime; +use Illuminate\Contracts\Validation\Rule; +use Illuminate\Database\Eloquent\Collection; + +class ValidationLimitTime implements Rule +{ + /** @var string|integer */ + protected $id; + + /** @var string|integer */ + protected $user_pad_id; + + /** @var string|integer */ + protected $tarefa_id; + + /** @var string|integer */ + protected $type; + + /** @var string|date */ + protected $start_time; + + /** @var string|date */ + protected $end_time; + + /** @var string */ + protected $limit_hours; + + /** @var DateInterval */ + protected $outLineTime; + + /** @var mixed */ + protected $task; + + /** @var TaskTime */ + protected $taskTime; + + /** @var Collection */ + protected $taskTimes; + + /** + * Create a new rule instance. + * + * @param array $attributes + * @return void + * + * Example + * $attributes = ['user_pad_id' => $user_pad_id, 'tarefa_id' => $tarefa_id, 'type' => $type, 'start_time' => $start_time, 'end_time' => $end_time] + */ + public function __construct($attributes = []) + { + $this->id = $attributes['id']; + $this->user_pad_id = $attributes['user_pad_id']; + $this->tarefa_id = $attributes['tarefa_id']; + $this->type = $attributes['type']; + $this->start_time = $attributes['start_time']; + $this->end_time = $attributes['end_time']; + + $this->task = TaskTime::tarefaByStatic($this->type, $this->tarefa_id); + + $this->limit_hours = TaskTime::convertFloatToHour($this->task->ch_semanal); + + $this->taskTimes = $this->getTaskTimes(); + + $this->taskTime = $this->createTaskTime(); + } + + /** + * Determine if the validation rule passes. + * + * @param string $attribute + * @param mixed $value + * @return bool + */ + public function passes($attribute, $value) + { + $limitDateTime = new DateTime($this->limit_hours); + $sumDateTime = TaskTime::sumIntervalTimes($this->taskTimes); + + $newDateTime = new DateTime($this->taskTime->intervalTime()); + + $totalDateTime = TaskTime::sumDateTimes($sumDateTime, $newDateTime); + + $this->outLineTime = $totalDateTime->diff($limitDateTime); + + // dd([ + // 'limite' => $limitDateTime, + // 'total' => $totalDateTime, + // 'interval' => $this->outLineTime + // ]); + + return $limitDateTime >= $totalDateTime; + } + + /** + * Get the validation error message. + * + * @return string + */ + public function message() + { + $limitDateTime = new DateTime($this->limit_hours); + + $sumDateTime = TaskTime::sumIntervalTimes($this->taskTimes); + + $diffInterval = $sumDateTime->diff($limitDateTime); + + $dateTime = new DateTime('00:00:00'); + + $dateTime->add($diffInterval); + + $diff_time = $dateTime->format('H:i'); + + $taskTime = $this->createTaskTime(); + $interval_time = $taskTime->intervalTime('H:i'); + + $msgError = "Carga horária disponÃvel restante: {$diff_time} hora(s)!"; + $msgError .= $diff_time == "00:00"? " Atividade IndisponÃvel!" : " Intervalo entre inicio e fim : {$interval_time} hora(s)!"; + + return $msgError; + } + + /** + * @return App\Models\TaskTime[] + */ + public function getTaskTimes() + { + $id = $this->id; + + return ( + TaskTime::where('user_pad_id', '=', $this->user_pad_id) + ->where('tarefa_id', '=', $this->tarefa_id) + ->where('type', '=', $this->type) + ->get() + ->reject(function(TaskTime $model, int $key) use ($id) { + return $model->id == $id; + }) + ); + } + + /** + * @return App\Models\TaskTime + */ + public function createTaskTime() + { + $model = new TaskTime(); + $model->user_pad_id = $this->user_pad_id; + $model->tarefa_id = $this->tarefa_id; + $model->type = $this->type; + $model->start_time = $this->start_time; + $model->end_time = $this->end_time; + + $model->start_time = "{$model->start_time}:00"; + $model->end_time = "{$model->end_time}:00"; + + return $model; + } +} diff --git a/resources/views/avaliador-task-time/card_horario.blade.php b/resources/views/avaliador-task-time/card_horario.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..020965cc3c0bbdbad3e6983e35653fa8fec32cb5 --- /dev/null +++ b/resources/views/avaliador-task-time/card_horario.blade.php @@ -0,0 +1,8 @@ +<div class="card mx-2" style="width: 12rem;"> + <div class="card-body"> + <h3 class="text-center"> <i class="bi bi-clock-fill"></i> </h3> + <h5 class="text-center"> PAD: {{ $userPad->pad->nome }} </h4> + <h5 class="text-center"> Status: {{ $userPad->pad->statusAsString() }} </h4> + <a class="stretched-link" href="{{ route('pad_relatório', ['id' => $userPad->id]) }}"></a> + </div> +</div> diff --git a/resources/views/avaliador-task-time/index.blade.php b/resources/views/avaliador-task-time/index.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..084e021cf2b693e7fa306d34fece8b1cce445595 --- /dev/null +++ b/resources/views/avaliador-task-time/index.blade.php @@ -0,0 +1,34 @@ +@extends('layouts.main') + +@section('header') + @include('layouts.header', [ + 'user' => Auth::user(), + ]) +@endsection + +@section('nav') + @include('layouts.navigation', ['menu' => $index_menu]) +@endsection +@section('title', 'Horários') +@section('body') + <div class="tab-content"> + + <div class="tab-pane active" id="home" role="tabpanel" aria-labelledby="home-tab"> + <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom"> + <h1 class="h2">Horários</h1> + </div> + <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3"> + <h3> <i class="bi bi-clock-fill"></i> Horários DisponÃveis </h3> + </div> + <div class="d-flex"> + {{-- @foreach($userPads as $userPad) + @include('avaliador-task-time.card_horario', ['userPad' => $userPad]) + @endforeach --}} + </div> + </div> + + + </div> + + +@endsection \ No newline at end of file diff --git a/resources/views/components/buttons/btn-delete-by-alert.blade.php b/resources/views/components/buttons/btn-delete-by-alert.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..5fe980ea70d4919e787254afb9fe80f4a84cd15c --- /dev/null +++ b/resources/views/components/buttons/btn-delete-by-alert.blade.php @@ -0,0 +1,24 @@ +{{-- + @include('components.buttons.btn-delete-by-alert', [ + '_id' => '', + '_class' => '', + '_route' => route('') + ]) +--}} + +<!-- Button trigger alert --> +<button type="button" id="{{ $_id }}" class="btn btn-danger {{$_class}}"> + <i class="bi bi-trash"></i> +</button> + +<script> + $('.{{$_class}}').click(function(e) + { + const _id = $(this).attr('id') + const is_delete = confirm('Você tem certeza que deseja excluir esse item?') + + if(is_delete) { + $('#form-delete-'+_id).submit() + } + }) +</script> \ No newline at end of file diff --git a/resources/views/components/buttons/btn-show-modal.blade.php b/resources/views/components/buttons/btn-show-modal.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..06ecbadd9d8e4b427e31e4e7708edbf3921eb8fc --- /dev/null +++ b/resources/views/components/buttons/btn-show-modal.blade.php @@ -0,0 +1,25 @@ +{{-- + @include('components.buttons.btn-show-modal', [ + '_id' => '', + '_icon' => '', + '_class' => '', + '_content' => '', + '_target_class' => '', + ]) +--}} + +@php + $_id = !isset($_id) ? '' : $_id; + + $_icon = !isset($_icon) ? '' : "bi bi-{$_icon}"; + + $_class = !isset($_class) ? "btn {$_target_class}" : "btn {$_class} {$_target_class}"; + + $_content = !isset($_content) ? '' : $_content; +@endphp + +<div class="btn-show-modal"> + <button type="button" id="{{$_id}}" class="{{$_class}}"> + <i class="{{$_icon}}"></i> {{$_content}} + </button> +</div> \ No newline at end of file diff --git a/resources/views/components/cards/relatorio_pad.blade.php b/resources/views/components/cards/relatorio_pad.blade.php index 8fdc35ab4cba4fb6a02ffd0bfd9a4b6fa46d691e..50c2da77c6a1da40a7952ff1f07d1a742dcd62ac 100644 --- a/resources/views/components/cards/relatorio_pad.blade.php +++ b/resources/views/components/cards/relatorio_pad.blade.php @@ -1,7 +1,8 @@ <div class="card mx-2" style="width: 12rem;"> <div class="card-body"> - <h3 class="text-center"> <i class="bi bi-file-bar-graph-fill"></i> </h3> - <h5 class="text-center"> PDA: {{ $userPad->pad->nome }} </h4> + <h3 class="text-center"> <i class="bi bi-file-earmark-word-fill"></i> </h3> + <h5 class="text-center"> PAD: {{ $userPad->pad->nome }} </h4> + <h5 class="text-center"> Status: {{ $userPad->pad->statusAsString() }} </h4> <a class="stretched-link" href="{{ route('pad_relatório', ['id' => $userPad->id]) }}"></a> </div> diff --git a/resources/views/layouts/user-navigation/navigation_avaliador.blade.php b/resources/views/layouts/user-navigation/navigation_avaliador.blade.php index fac25d3199e111e80b80abf7ceb01c0fda2bfc36..831fd56be05600664db990c9694415e01f8a48ab 100644 --- a/resources/views/layouts/user-navigation/navigation_avaliador.blade.php +++ b/resources/views/layouts/user-navigation/navigation_avaliador.blade.php @@ -7,6 +7,7 @@ $home_active = $index_menu === MenuItemsAvaliador::HOME ? 'active' : ''; $report_active = $index_menu === MenuItemsAvaliador::REPORT ? 'active' : ''; + $task_time_active = $index_menu === MenuItemsAvaliador::TASK_TIME ? 'active' : ''; @endphp <!-- SidebarMenu : Vertical Options --> @@ -19,10 +20,12 @@ </li> <li class="nav-item"> <a href="{{ route('avaliador_relatorio') }}" class="custom-nav-link {{ $report_active }}"> - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-file-bar-graph-fill" viewBox="0 0 16 16"> - <path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm-2 11.5v-6a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm-2.5.5a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-1zm-3 0a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-1z"/> - </svg> - Relatórios + <i class="bi bi-file-earmark-word-fill"></i> Relatórios </a> </li> + {{-- <li class="nav-item"> + <a href="{{ route('avaliador_task_time_index') }}" class="custom-nav-link {{ $task_time_active }}"> + <i class="bi bi-clock-fill"></i> Horários + </a> + </li> --}} </ul> \ No newline at end of file diff --git a/resources/views/pad/anexo/_form.blade.php b/resources/views/pad/anexo/_form.blade.php index d4d7a80a911a9a25abeec6494bf4d0824f4e7707..f8f0c417c070072a00fbad837de86f31307cc637 100644 --- a/resources/views/pad/anexo/_form.blade.php +++ b/resources/views/pad/anexo/_form.blade.php @@ -177,9 +177,9 @@ $yes = YesOrNo::YES; $no = YesOrNo::NO; @endphp - <script type="text/javascript"> + /** Interpolação: PHP => JS*/ const yes = "{{ $yes }}" const no = "{{ $no }}" diff --git a/resources/views/pad/components/scripts/dimensao/ensino/show_modal.blade.php b/resources/views/pad/components/scripts/dimensao/ensino/show_modal.blade.php index c38a38bafaaf5059ba8983b28bddfc5d3cc1265e..e953f065e1228e615aec2b98af74dea99cda3197 100644 --- a/resources/views/pad/components/scripts/dimensao/ensino/show_modal.blade.php +++ b/resources/views/pad/components/scripts/dimensao/ensino/show_modal.blade.php @@ -6,7 +6,6 @@ ]) --}} - <script type="text/javascript"> $('.{{ $btn_class }}').click(function(e) { diff --git a/resources/views/pad/teacher/view.blade.php b/resources/views/pad/teacher/view.blade.php index a71bc4efcccb90be92c482acc43f64a9df65a3e9..3c97e230a953d7f416e5aeb746b079540870054e 100644 --- a/resources/views/pad/teacher/view.blade.php +++ b/resources/views/pad/teacher/view.blade.php @@ -71,6 +71,14 @@ </div> </div> + <div class="card mx-2" style="width: 10rem;"> + <div class="card-body"> + <h2 class="text-center"> <i class="bi bi-clock"></i> </h2> + <h3 class="text-center">Horário</h3> + <a class="stretched-link btn-pad-horario" href="{{ route('TaskTimeIndex', ['user_pad_id' => $user_pad_id]) }}"></a> + </div> + </div> + <div class="card mx-2" style="width: 10rem;"> <div class="card-body"> <h2 class="text-center"> <i class="bi bi-exclamation-circle-fill"></i> </h2> diff --git a/resources/views/task-time/create.blade.php b/resources/views/task-time/create.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..2a7d96e914f964f24d2e09793aa82d0a8018f6e9 --- /dev/null +++ b/resources/views/task-time/create.blade.php @@ -0,0 +1,171 @@ +@php + use App\Models\TaskTime; +@endphp + +<form id="task-time-form" action="{{ route('TaskTimeSave') }}" method="post"> + @csrf + @method('POST') + + <div class="row"> + + <input type="hidden" id="user_pad_id" name="user_pad_id" value="{{ $user_pad_id }}"> + + <input type="hidden" id="tarefa_id" name="tarefa_id" value=""> + + <input type="hidden" id="type" name="type" value=""> + + <input type="hidden" id="id" name="id" value=""> + + <div class="mb-4 col-sm-2"> + <div class=""> + <label class="form-label" for="cod_atividade">Cód. Atividade</label> + <input class="form-control @error('cod_atividade') is-invalid @enderror ajax-errors" type="text" name="cod_atividade" id="cod_atividade" readonly> + </div> + + @include('components.divs.errors', [ + 'field' => 'cod_atividade_create' + ]) + </div> + + <div class="col-sm-10"> + <div class="mt-3"> + <label for="weekday">Dia da Semana</label> + <select name="weekday" id="weekday" class="form-select @error('weekday') is-invalid @enderror ajax-errors"> + @foreach(TaskTime::listWeekDays() as $id => $text) + <option value="{{$id}}">{{$text}}</option> + @endforeach + </select> + + @include('components.divs.errors', [ + 'field' => 'weekday_create' + ]) + </div> + </div> + + <div class="col-sm-12"> + <div class=""> + <label for="slct_tarefa_id">Atividade</label> + <select name="slct_tarefa_id" id="slct_tarefa_id" class="form-select @error('slct_tarefa_id') is-invalid @enderror ajax-errors"> + </select> + </div> + + @include('components.divs.errors', [ + 'field' => 'slct_tarefa_id_create' + ]) + </div> + + <div class="col-sm-6"> + <div class="mt-3"> + <label class="form-label" for="start_time">Horário Inicial</label> + <input type="time" min="07:30" max="21:15" name="start_time" id="start_time" class="form-control @error('start_time') is-invalid @enderror ajax-errors" > + + @include('components.divs.errors', [ + 'field' => 'start_time_create', + ]) + </div> + </div> + + <div class="col-sm-6"> + <div class="mt-3"> + <label class="form-label" for="end_time">Horário Final</label> + <input type="time" min="07:30" max="21:15" name="end_time" id="end_time" class="form-control @error('end_time') is-invalid @enderror ajax-errors" > + + @include('components.divs.errors', [ + 'field' => 'end_time_create', + ]) + </div> + </div> + + </div> + + <div class="mt-1 text-end"> + <div class="modal-footer"> + @include('components.buttons.btn-save', [ + 'id' => 'btn_submit', + 'content' => 'Cadastrar', + ]) + + @include('components.buttons.btn-close_modal') + </div> + </div> + +</form> + +@include('pad.components.scripts.ajaxValidation', [ + 'btn_submit_id' => 'btn_submit', + 'form_id' => 'task-time-form', + 'route' => route('TaskTimeValidation'), + 'form_type' => 'create', +]) + +<script type="text/javascript"> + + $('#weekday').select2( + { + allowClear: true, + placeholder: 'Dia da Semana', + dropdownParent: $('#modal') + }) + + $('#slct_tarefa_id').select2( + { + allowClear: true, + placeholder: 'Tarefa', + language: { + noResults: function() { + return "Resultados não Encontrados"; + } + }, + ajax: { + url: '{{ route("TaskSearch") }}', + data: function(params) { + return { + q: params.term, + user_pad_id : {{$user_pad_id}} + } + }, + dataType: 'json' + }, + dropdownParent: $('#modal') + }) + + $('#slct_tarefa_id').on('change', function(e) + { + const type = $('#type') + const tarefa_id = $('#tarefa_id') + + $('#cod_atividade').val('') + + if($(this).val()) { + const value = $(this).val() + const split_data = value.split('|') + + const split_tarefa_id = split_data[0].split('_') + const split_type = split_data[1].split('_') + + const _tarefa_id = split_tarefa_id[1] + const _type = split_type[1] + + type.val(_type) + tarefa_id.val(_tarefa_id) + + $.ajax({ + url: '{{ route("TaskTimeSearchTask") }}', + type: 'GET', + data: { + tarefa_id: _tarefa_id, + type: _type + }, + dataType: 'json', + success: (response) => { + const cod_atividade = response.task.cod_atividade + $('#cod_atividade').val(cod_atividade) + }, + error: (xhr, status, error) => { + console.error('Erro na requisição!'); + } + }); + } + }) + +</script> diff --git a/resources/views/task-time/index.blade.php b/resources/views/task-time/index.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..08de9e3fa6ef012f727b0a46d677196053bea9aa --- /dev/null +++ b/resources/views/task-time/index.blade.php @@ -0,0 +1,157 @@ +@extends('layouts.main') + +@section('title', 'InÃcio') + +@section('header') + @include('layouts.header', [ + 'user' => Auth::user(), + ]) +@endsection + +@section('nav') + @include('layouts.navigation', ['menu' => $menu]) +@endsection + +@section('body') + +<div class="container"> + + @include('components.alerts') + + @include('components.buttons.btn-show-modal', [ + '_class' => 'btn-success', + '_content' => 'Cadastrar', + '_target_class' => 'task-time-create', + ]) + + @php + use App\Models\TaskTime; + + // $hours = ['07:30', '08:20', '09:10', '10:00', '10:50', '11:40', '12:30', '13:30', '14:30', '15:30', '16:30', '17:30', '19:00', '19:45', '20:30', '21:15']; + + $rangeHours = [ + ['07:30', '08:20'], + ['08:20', '09:10'], + ['09:10', '10:00'], + ['10:00', '10:50'], + ['10:50', '11:40'], + ['11:40', '12:30'], + ['12:30', '13:30'], + ['13:30', '14:30'], + ['14:30', '15:30'], + ['15:30', '16:30'], + ['16:30', '17:30'], + ['17:30', '19:00'], + ['19:00', '19:45'], + ['19:45', '20:30'], + ['20:30', '21:15'], + ['21:15', '21:15'], + ]; + + $calendar = []; + + $row = []; + + foreach ($rangeHours as $rangeHour) + { + $start_time = $rangeHour[0]; + $end_time = $rangeHour[1]; + + $row[0] = $start_time; + + foreach (array_keys(TaskTime::listWeekDays()) as $weekday) + { + $row[$weekday] = + TaskTime::where('user_pad_id', '=', $user_pad_id) + ->where('weekday', '=', $weekday) + ->where(function($query) use ($rangeHour) { + $query->orWhereBetween('start_time', $rangeHour)->orWhereBetween('end_time', $rangeHour); + })->first(); + + $row[$weekday] = $row[$weekday] ? $row[$weekday] : ''; + } + + $calendar[] = $row; + } + @endphp + + <div class="my-4"> + + <table class="table table-hover"> + <thead> + <tr> + @foreach(TaskTime::listWeekDaysTable() as $key => $weekday) + <th scope="col">{{$weekday}}</th> + @endforeach + </tr> + </thead> + <tbody> + @foreach($calendar as $rowHour) + <tr> + @foreach ($rowHour as $model) + + @if(gettype($model) == 'string') + <th scope="col">{{ $model }}</th> + @endif + + @if(gettype($model) == 'object') + <td> + <a href="#modal" class="btn btn-edit_task" id="{{ $model->id }}"> + {{ "{$model->getCode()} : {$model->getName()}" }} + </a> + </td> + @endif + + @endforeach + </tr> + @endforeach + </tbody> + </table> + </div> + + @include('components.modal', ['size' => 'modal-lg', 'header' => '']) + +</div> + +@endsection + +@section('scripts') + + @include('pad.components.scripts.dimensao.ensino.show_modal', [ + 'modal_id' => 'modal', + 'route' => route('TaskTimeCreate', ['user_pad_id' => $user_pad_id]), + 'btn_class' => 'task-time-create', + ]) + + @include('pad.components.scripts.dimensao.ensino.show_modal', [ + 'modal_id' => 'modal', + 'route' => route('TaskTimeEdit'), + 'btn_class' => 'btn-edit_task', + ]) + +@endsection + +{{-- @include('components.buttons.btn-edit', [ + 'route' => route('TaskTimeEdit', ['id' => $model->id]) +]) + +@include('components.buttons.btn-delete', [ + 'id' => $model->id, + 'route' => route('TaskTimeDelete', ['id' => $model->id]) +]) --}} + +{{-- @foreach($listTaskTime as $key => $taskTimes) +<tr> + @foreach($taskTimes as $model) + + @if(gettype($model) == 'string') + <th>{{ $model }}</th> + @endif + + @if(gettype($model) == 'object') + + @endif + + @endforeach +</tr> +@endforeach --}} \ No newline at end of file diff --git a/resources/views/task-time/update.blade.php b/resources/views/task-time/update.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..f1c19f60956650b2b525d825f6cfe35ba1746a47 --- /dev/null +++ b/resources/views/task-time/update.blade.php @@ -0,0 +1,192 @@ +@php + use App\Models\TaskTime; + + /** + * @var App\Models\TaskTime $model + */ +@endphp + +<form id="form-delete-{{$model->id}}" action="{{ route('TaskTimeDelete', ['id' => $model->id]) }}" method="post"> + @method('DELETE') + @csrf +</form> + +<form id="task-time-update-form" action="{{ route('TaskTimeUpdate', ['id' => $model->id]) }}" method="post"> + @csrf + @method('POST') + + <div class="row"> + + <input type="hidden" id="user_pad_id" name="user_pad_id" value="{{ $model->user_pad_id }}"> + + <input type="hidden" id="tarefa_id" name="tarefa_id" value="{{ $model->tarefa_id }}"> + + <input type="hidden" id="type" name="type" value="{{ $model->type }}">´ + + <input type="hidden" id="id" name="id" value="{{ $model->id }}"> + + <div class="mb-4 col-sm-2"> + <div class=""> + <label class="form-label" for="cod_atividade">Cód. Atividade</label> + <input type="text" id="cod_atividade" name="cod_atividade" value="{{ $model->tarefa->cod_atividade }}" readonly class="form-control @error('cod_atividade') is-invalid @enderror ajax-errors"> + </div> + + @include('components.divs.errors', [ + 'field' => 'cod_atividade_update' + ]) + </div> + + <div class="col-sm-10"> + <div class="mt-3"> + <label for="weekday">Dia da Semana</label> + <select name="weekday" id="weekday" class="form-select @error('weekday') is-invalid @enderror ajax-errors"> + @foreach(TaskTime::listWeekDays() as $id => $text) + @if( $model->weekday == $id) + <option selected value="{{$id}}">{{$text}}</option> + @else + <option value="{{$id}}">{{$text}}</option> + @endif + @endforeach + </select> + + @include('components.divs.errors', [ + 'field' => 'weekday_update' + ]) + </div> + </div> + + <div class="col-sm-12"> + <div class=""> + <label for="slct_tarefa_id">Atividade</label> + <select name="slct_tarefa_id" id="slct_tarefa_id" class="form-select @error('slct_tarefa_id') is-invalid @enderror ajax-errors"> + <option selected value="{{$model->tarefa_id}}">{{$model->getName()}}</option> + </select> + </div> + + @include('components.divs.errors', [ + 'field' => 'slct_tarefa_id' + ]) + </div> + + <div class="col-sm-6"> + <div class="mt-3"> + <label class="form-label" for="start_time">Horário Inicial</label> + <input type="time" name="start_time" id="start_time" value="{{$model->start_time}}" class="form-control @error('start_time') is-invalid @enderror ajax-errors" > + + @include('components.divs.errors', [ + 'field' => 'start_time_update', + ]) + </div> + </div> + + <div class="col-sm-6"> + <div class="mt-3"> + <label class="form-label" for="end_time">Horário Final</label> + <input type="time" name="end_time" id="end_time" value="{{$model->end_time}}" class="form-control @error('end_time') is-invalid @enderror ajax-errors" > + + @include('components.divs.errors', [ + 'field' => 'end_time_update', + ]) + </div> + </div> + </div> + + <div class="mt-4"> + <div class="modal-footer"> + <div class="text-start"> + @include('components.buttons.btn-delete-by-alert', [ + '_id' => $model->id, + '_class' => "delete_task_time", + ]) + </div> + <div class="text-end"> + @include('components.buttons.btn-save', [ + 'id' => 'btn_submit', + 'content' => 'Atualizar', + ]) + + @include('components.buttons.btn-close_modal') + </div> + </div> + </div> + +</form> + +@include('pad.components.scripts.ajaxValidation', [ + 'btn_submit_id' => 'btn_submit', + 'form_id' => 'task-time-update-form', + 'route' => route('TaskTimeValidation'), + 'form_type' => 'update', +]) + +<script type="text/javascript"> + + $('#weekday').select2( + { + allowClear: true, + placeholder: 'Dia da Semana', + dropdownParent: $('#modal') + }) + + $('#slct_tarefa_id').select2( + { + allowClear: true, + placeholder: 'Tarefa', + language: { + noResults: function() { + return "Resultados não Encontrados"; + } + }, + ajax: { + url: '{{ route("TaskSearch") }}', + data: function(params) { + return { + q: params.term, + user_pad_id : {{$model->user_pad_id}} + } + }, + dataType: 'json' + }, + dropdownParent: $('#modal') + }) + + $('#slct_tarefa_id').on('change', function(e) + { + const type = $('#type') + const tarefa_id = $('#tarefa_id') + + $('#cod_atividade').val('') + + if($(this).val()) { + const value = $(this).val() + const split_data = value.split('|') + + const split_tarefa_id = split_data[0].split('_') + const split_type = split_data[1].split('_') + + const _tarefa_id = split_tarefa_id[1] + const _type = split_type[1] + + type.val(_type) + tarefa_id.val(_tarefa_id) + + $.ajax({ + url: '{{ route("TaskTimeSearchTask") }}', + type: 'GET', + data: { + tarefa_id: _tarefa_id, + type: _type + }, + dataType: 'json', + success: (response) => { + const cod_atividade = response.task.cod_atividade + $('#cod_atividade').val(cod_atividade) + }, + error: (xhr, status, error) => { + console.error('Erro na requisição!'); + } + }); + } + }) + +</script> diff --git a/routes/Task.php b/routes/Task.php new file mode 100644 index 0000000000000000000000000000000000000000..dd14d7065f87c3257b5c7d3bceec967af8eda8c6 --- /dev/null +++ b/routes/Task.php @@ -0,0 +1,9 @@ +<?php + +use App\Http\Controllers\TaskController; +use Illuminate\Support\Facades\Route; + +Route::prefix('/tarefa/geral')->group(function () { + Route::get('/search', [TaskController::class, 'search'])->name('TaskSearch'); + Route::get('/search-by-id', [TaskController::class, 'searchById'])->name('TaskSearchById'); +}); \ No newline at end of file diff --git a/routes/TaskTime.php b/routes/TaskTime.php new file mode 100644 index 0000000000000000000000000000000000000000..eb560106530cf44b9c0895abb043c152c7e7cb27 --- /dev/null +++ b/routes/TaskTime.php @@ -0,0 +1,15 @@ +<?php + +use App\Http\Controllers\TaskTimeController; +use Illuminate\Support\Facades\Route; + +Route::prefix('/tarefa/horario')->group(function () { + Route::get('/index/{user_pad_id}', [TaskTimeController::class, 'index'])->name('TaskTimeIndex'); + Route::get('/create/{user_pad_id}', [TaskTimeController::class, 'create'])->name('TaskTimeCreate'); + Route::post('/save', [TaskTimeController::class, 'save'])->name('TaskTimeSave'); + Route::get('/edit/{id?}', [TaskTimeController::class, 'edit'])->name('TaskTimeEdit'); + Route::post('/update/{id}', [TaskTimeController::class, 'update'])->name('TaskTimeUpdate'); + Route::delete('/delete/{id}', [TaskTimeController::class, 'delete'])->name('TaskTimeDelete'); + Route::get('/search-task', [TaskTimeController::class, 'searchTask'])->name('TaskTimeSearchTask'); + Route::post('/validation', [TaskTimeController::class, 'ajaxValidation'])->name('TaskTimeValidation'); +}); diff --git a/routes/avaliador.php b/routes/avaliador.php new file mode 100644 index 0000000000000000000000000000000000000000..4edaa30d11771fc937c4a1997a6e6e5a530afcbf --- /dev/null +++ b/routes/avaliador.php @@ -0,0 +1,21 @@ +<?php + +use App\Http\Controllers\AvaliadorController; +use App\Http\Controllers\AvaliadorTaskTimeController; +use App\Http\Controllers\PadController; +use Illuminate\Support\Facades\Route; + +Route::prefix('/avaliador')->group(function () { + Route::get('/index', [AvaliadorController::class, 'index'])->name('avaliador_index'); + Route::put('/avaliar', [AvaliadorController::class, 'avaliar'])->name('avaliador_avaliar'); + Route::get('/create', [AvaliadorController::class, 'create'])->name('avaliador_create'); + Route::post('/store', [AvaliadorController::class, 'store'])->name('avaliador_store'); + Route::get('/edit/{id}', [AvaliadorController::class, 'edit'])->name('avaliador_edit'); + Route::post('/update/{id}', [AvaliadorController::class, 'update'])->name('avaliador_update'); + Route::delete('/delete/{id}', [AvaliadorController::class, 'destroy'])->name('avaliador_delete'); + Route::get('/relatorio', [AvaliadorController::class, 'relatorio'])->name('avaliador_relatorio'); + Route::get('/relatorio/{id}', [PadController::class, 'relatorio'])->name('pad_relatório'); + Route::get('/relatorio/{id}/pdf', [PadController::class, 'generatePDF'])->name('pad_relatório_pdf'); + + Route::get('/horario/index', [AvaliadorTaskTimeController::class, 'index'])->name('avaliador_task_time_index'); +}); diff --git a/routes/web.php b/routes/web.php index 8b2f322caf5951bd123313575d3a0c4ac3c9ac57..56a1ad8e613a7f20e489b18cae55b2caf7fd3fb2 100644 --- a/routes/web.php +++ b/routes/web.php @@ -30,7 +30,11 @@ require __DIR__ . '/auth.php'; require __DIR__ . '/profile.php'; require __DIR__ . '/pad.php'; + +require __DIR__ . '/avaliador.php'; + require __DIR__ . '/avaliador_pad.php'; + require __DIR__ . '/professor_pad.php'; require __DIR__ . '/unidade.php'; @@ -43,6 +47,10 @@ require __DIR__ . '/users.php'; require __DIR__ . '/user_type.php'; +require __DIR__ . '/Task.php'; + +require __DIR__ . '/TaskTime.php'; + require __DIR__ . '/dimensao/dimensao.php'; require __DIR__ . '/dimensao/ensino.php'; @@ -94,19 +102,6 @@ Route::prefix('/professor')->group(function () { Route::delete('/delete/{id}', [ProfessorController::class, 'destroy'])->name('professor_delete'); }); -Route::prefix('/avaliador')->group(function () { - Route::get('/index', [AvaliadorController::class, 'index'])->name('avaliador_index'); - Route::put('/avaliar', [AvaliadorController::class, 'avaliar'])->name('avaliador_avaliar'); - Route::get('/create', [AvaliadorController::class, 'create'])->name('avaliador_create'); - Route::post('/store', [AvaliadorController::class, 'store'])->name('avaliador_store'); - Route::get('/edit/{id}', [AvaliadorController::class, 'edit'])->name('avaliador_edit'); - Route::post('/update/{id}', [AvaliadorController::class, 'update'])->name('avaliador_update'); - Route::delete('/delete/{id}', [AvaliadorController::class, 'destroy'])->name('avaliador_delete'); - Route::get('/relatorio', [AvaliadorController::class, 'relatorio'])->name('avaliador_relatorio'); - Route::get('/relatorio/{id}', [PadController::class, 'relatorio'])->name('pad_relatório'); - Route::get('/relatorio/{id}/pdf', [PadController::class, 'generatePDF'])->name('pad_relatório_pdf'); -}); - Route::prefix('/user')->group(function () { Route::get('/edit/perfil/{tab?}', [UserController::class, 'editPerfil'])->name('edit_perfil'); Route::post('/update/perfil', [UserController::class, 'updatePerfil'])->name('update_perfil');