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 @@ +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/TaskController.php b/app/Http/Controllers/TaskController.php index 145bb02e0f3669737d3c8634d4a60fdf5f538d6f..1a3663d550e5e7f963f1eca0ebb11704cd3f13b2 100644 --- a/app/Http/Controllers/TaskController.php +++ b/app/Http/Controllers/TaskController.php @@ -316,4 +316,9 @@ class TaskController extends Controller 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 5f59d1b36f3c30db4b858ffce709592ff324d0ec..b01dea12654f333caa3564ce3d46f2aae9a7fcf7 100644 --- a/app/Http/Controllers/TaskTimeController.php +++ b/app/Http/Controllers/TaskTimeController.php @@ -5,6 +5,8 @@ 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 { @@ -12,8 +14,6 @@ class TaskTimeController extends Controller { $menu = Menu::PADS; - $taskTimes = TaskTime::whereUserPadId($user_pad_id)->get(); - return view('task-time.index', [ 'menu' => $menu, 'user_pad_id' => $user_pad_id @@ -28,20 +28,92 @@ class TaskTimeController extends Controller public function save(Request $request) { - $array = TaskTime::splitTarefaAndType($request->get('tarefa_id')); + $model = new TaskTime($request->all()); - dd($request->get('tarefa_id'), $array); + if($model->save()) { + return redirect() + ->route('TaskTimeIndex', ['user_pad_id' => $model->user_pad_id]) + ->with('success', 'Cadastro realizado com sucesso!'); + } } - public function updateView() { - + public function edit($id) { + $model = TaskTime::find($id); + return view('task-time.update', [ + 'model' => $model + ]); } - public function update() { + 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 delete() { + 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 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 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 ef8555cee8ed1f5bde87cbe0daf35c6c1ebe8cef..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'); } + /** + * @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,25 +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'); + } + /** - * Explode string with format "id_{id}|type_{type}" to array ['tarefa_id' => 'integer', 'type' => 'integer'] - * @return array + * 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 splitTarefaAndType(string $task_type) { + 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); - $split_task_type = explode("|", $task_type); + $hours = $split_time[0]; + $minutes = $split_time[1]; + $seconds = $split_time[2]; + + $newDateTime->modify("+{$hours} hours +{$minutes} minutes +{$seconds} seconds"); - $task_data = $split_task_type[0]; - $split_task = explode("_", $task_data); - $task_id = $split_task[1]; + 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); + } - $type_data = $split_task_type[1]; - $split_type = explode("_", $type_data); - $type = $split_type[1]; + 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); + } - $data = ['tarefa_id' => $task_id, 'type' => $type]; + if($type == self::TYPE_GESTAO_OUTROS) { + return GestaoOutros::find($tarefa_id); + } - return $data; + 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 @@ + $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 @@ +
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') +