/** * Implementação do método clsCadastro::Novo() * * Recebe os valores com códigos de servidor e instituição atual, junto com * a data. Casos de uso: * - Servidor sem função de professor: apenas é marcado que o servidor está * afastado * - Servidor com função de professor: * - Verifica-se quais professores estão aptos a substituir o servidor, * baseado em critérios como horário de aula, alocação na escola, * disciplinas que ministra. Esse passo é realizado no método * {@see $this->Novo()}, ao possibilitar a escolha do substituto ao * usuário * * @see clsPmieducarServidorAfastamento * @see ieducar/intranet/include/clsCadastro#Novo() * @return bool FALSE em caso de falha */ public function Novo() { session_start(); $this->pessoa_logada = $_SESSION['id_pessoa']; session_write_close(); $this->ref_cod_servidor = isset($_POST['ref_cod_servidor']) ? $_POST['ref_cod_servidor'] : NULL; $urlPermite = sprintf("educar_servidor_det.php?cod_servidor=%d&ref_cod_instituicao=%d", $this->ref_cod_servidor, $this->ref_cod_instituicao); $obj_permissoes = new clsPermissoes(); $obj_permissoes->permissao_cadastra(635, $this->pessoa_logada, 7, $urlPermite); $obj = new clsPmieducarServidorAfastamento($this->ref_cod_servidor, NULL, $this->ref_cod_motivo_afastamento, NULL, $this->pessoa_logada, NULL, NULL, $this->data_retorno, $this->data_saida, 1, $this->ref_cod_instituicao); $cadastrou = $obj->cadastra(); if ($cadastrou) { if (is_array($_POST['ref_cod_servidor_substituto'])) { /* * Itera cada substituto e atualiza o quadro de horário com o código * do servidor substituto, campos: * - ref_cod_instituicao_substituto * - ref_cod_servidor_substituto */ foreach ($_POST['ref_cod_servidor_substituto'] as $key => $valor) { $ref_cod_servidor_substituto = $valor; $ref_cod_escola = $_POST["ref_cod_escola_{$key}"]; $dia_semana = $_POST["dia_semana_{$key}"]; $hora_inicial = urldecode($_POST["hora_inicial_{$key}"]); $hora_final = urldecode($_POST["hora_final_{$key}"]); if (is_numeric($ref_cod_servidor_substituto) && is_numeric($ref_cod_escola) && is_numeric($dia_semana) && is_string($hora_inicial) && is_string($hora_final)) { $obj_horarios = new clsPmieducarQuadroHorarioHorarios(NULL, NULL, $ref_cod_escola, NULL, NULL, NULL, $this->ref_cod_instituicao, $ref_cod_servidor_substituto, $this->ref_cod_servidor, $hora_inicial, $hora_final, NULL, NULL, 1, $dia_semana); $det_horarios = $obj_horarios->detalhe($ref_cod_escola); $obj_horario = new clsPmieducarQuadroHorarioHorarios($det_horarios['ref_cod_quadro_horario'], $det_horarios['ref_cod_serie'], $det_horarios['ref_cod_escola'], $det_horarios['ref_cod_disciplina'], $det_horarios['sequencial'], $det_horarios['ref_cod_instituicao_servidor'], $det_horarios['ref_cod_instituicao_servidor'], $ref_cod_servidor_substituto, $this->ref_cod_servidor, NULL, NULL, NULL, NULL, NULL, NULL); // Caso a atualização não tenha sucesso if (!$obj_horario->edita()) { $this->mensagem = "Cadastro não realizado.<br>"; return FALSE; } } } $this->mensagem .= "Cadastro efetuado com sucesso.<br>"; header("Location: educar_servidor_det.php?cod_servidor={$this->ref_cod_servidor}&ref_cod_instituicao={$this->ref_cod_instituicao}"); die; } } else { $this->mensagem = "Cadastro não realizado.<br>"; return FALSE; } $this->mensagem .= "Cadastro efetuado com sucesso.<br>"; header("Location: educar_servidor_det.php?cod_servidor={$this->ref_cod_servidor}&ref_cod_instituicao={$this->ref_cod_instituicao}"); die; }