SetTitulo($this->_instituicao . ' i-Educar - Servidor Afastamento'); $this->processoAp = '635'; $this->addEstilo('localizacaoSistema'); } } class indice extends clsCadastro { /** * Referência a usuário da sessão * @var int */ public $pessoa_logada = NULL; /** * Atributos de mapeamento dos campos de banco de dados */ public $ref_cod_servidor = NULL, $sequencial = NULL, $ref_cod_instituicao = NULL, $ref_cod_motivo_afastamento = NULL, $ref_usuario_exc = NULL, $ref_usuario_cad = NULL, $data_cadastro = NULL, $data_exclusao = NULL, $data_retorno = NULL, $data_saida = NULL, $ativo = NULL, $status = NULL, $alocacao_array = NULL, $parametros = NULL; /** * Dias da semana * @var array */ public $dias_da_semana = array( '' => 'Selecione', 1 => 'Domingo', 2 => 'Segunda', 3 => 'Terça', 4 => 'Quarta', 5 => 'Quinta', 6 => 'Sexta', 7 => 'Sábado' ); /** * Implementação do método clsCadastro::Inicializar() * @see ieducar/intranet/include/clsCadastro#Inicializar() */ public function Inicializar() { session_start(); $this->pessoa_logada = $_SESSION['id_pessoa']; session_write_close(); $retorno = "Novo"; $this->status = "N"; $this->ref_cod_instituicao = $_GET['ref_cod_instituicao']; $this->ref_cod_servidor = $_GET['ref_cod_servidor']; $this->sequencial = $_GET['sequencial']; $urlPermite = sprintf('educar_servidor_det.php?cod_servidor=%s&ref_cod_instituicao=%s', $this->ref_cod_servidor, $this->ref_cod_instituicao); $obj_permissoes = new clsPermissoes(); $obj_permissoes->permissao_cadastra(635, $this->pessoa_logada, 7, $urlPemite); if (is_numeric($this->ref_cod_servidor) && is_numeric($this->sequencial) && is_numeric($this->ref_cod_instituicao)) { $obj = new clsPmieducarServidorAfastamento( $this->ref_cod_servidor, $this->sequencial, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, $this->ref_cod_instituicao); $registro = $obj->detalhe(); if ($registro) { // Passa todos os valores obtidos no registro para atributos do objeto foreach ($registro as $campo => $val) { $this->$campo = $val; } if ($this->data_retorno) { $this->data_retorno = dataFromPgToBr($this->data_retorno); } if ($this->data_saida) { $this->data_saida = dataFromPgToBr($this->data_saida); } $retorno = "Editar"; $this->status = "E"; } } $this->url_cancelar = sprintf( 'educar_servidor_det.php?cod_servidor=%s&ref_cod_instituicao=%s', $this->ref_cod_servidor, $this->ref_cod_instituicao); $this->nome_url_cancelar = "Cancelar"; $localizacao = new LocalizacaoSistema(); $localizacao->entradaCaminhos( array( $_SERVER['SERVER_NAME']."/intranet" => "Início", "educar_index.php" => "i-Educar - Escola", "" => "Afastar servidor" )); $this->enviaLocalizacao($localizacao->montar()); return $retorno; } /** * Implementação do método clsCadastro::Gerar() * @see ieducar/intranet/include/clsCadastro#Gerar() */ public function Gerar() { $this->campoOculto('ref_cod_servidor', $this->ref_cod_servidor); $this->campoOculto('sequencial', $this->sequencial); $this->campoOculto('ref_cod_instituicao', $this->ref_cod_instituicao); $opcoes = array('' => 'Selecione'); $objTemp = new clsPmieducarMotivoAfastamento(); $lista = $objTemp->lista(); if (is_array($lista) && count($lista) > 0) { foreach ($lista as $registro) { $opcoes[$registro['cod_motivo_afastamento']] = $registro['nm_motivo']; } } else { $opcoes = array('' => 'Nenhum motivo de afastamento cadastrado'); } if ($this->status == 'N') { $this->campoLista('ref_cod_motivo_afastamento', 'Motivo Afastamento', $opcoes, $this->ref_cod_motivo_afastamento); } elseif ($this->status == 'E') { $this->campoLista('ref_cod_motivo_afastamento', 'Motivo Afastamento', $opcoes, $this->ref_cod_motivo_afastamento, '', FALSE, '', '', TRUE); } // Datas para registro // Se novo registro if ($this->status == 'N') { $this->campoData('data_saida', 'Data de Afastamento', $this->data_saida, TRUE); } // Se edição, mostra a data de afastamento elseif ($this->status == 'E') { $this->campoRotulo('data_saida', 'Data de Afastamento', $this->data_saida); } // Se edição, mostra campo para entrar com data de retorno if ($this->status == 'E') { $this->campoData('data_retorno', 'Data de Retorno', $this->data_retorno, FALSE); } $obj_servidor = new clsPmieducarServidor($this->ref_cod_servidor, NULL, NULL, NULL, NULL, NULL, 1, $this->ref_cod_instituicao); $det_servidor = $obj_servidor->detalhe(); if ($det_servidor) { $obj_funcao = new clsPmieducarFuncao($det_servidor['ref_cod_funcao'], NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, $this->ref_cod_instituicao); // Se for professor if (TRUE == $obj_servidor->isProfessor()) { $obj = new clsPmieducarQuadroHorarioHorarios(); // Pega a lista de aulas alocadas para este servidor $lista = $obj->lista(NULL, NULL, NULL, NULL, NULL, NULL, NULL, $this->ref_cod_instituicao, NULL, $this->ref_cod_servidor, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL); if ($lista) { // Passa todos os valores obtidos no registro para atributos do objeto foreach ($lista as $campo => $val) { $temp = array(); $temp['hora_inicial'] = $val['hora_inicial']; $temp['hora_final'] = $val['hora_final']; $temp['dia_semana'] = $val['dia_semana']; $temp['ref_cod_escola'] = $val['ref_cod_escola']; $temp['ref_cod_disciplina'] = $val['ref_cod_disciplina']; $temp['ref_cod_substituto'] = $val['ref_servidor_substituto']; $this->alocacao_array[] = $temp; } if ($this->alocacao_array) { $tamanho = sizeof($alocacao); $script = ""; // Print do Javascript print $script; } } } } } /** * 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.
"; return FALSE; } } } $this->mensagem .= "Cadastro efetuado com sucesso.
"; 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.
"; return FALSE; } $this->mensagem .= "Cadastro efetuado com sucesso.
"; header("Location: educar_servidor_det.php?cod_servidor={$this->ref_cod_servidor}&ref_cod_instituicao={$this->ref_cod_instituicao}"); die(); } /** * Implementação do método clsCadastro::Editar() * * Esse método é chamado quando o usuário "Retorna um servidor". Dessa forma, * caso seja professor, precisa atualizar a sua alocação na tabela * pmieducar.quadro_horario_horarios, apagando os valores dos campos * ref_cod_instituicao_ e ref_cod_servidor_ -substituto * * @see ieducar/intranet/include/clsCadastro#Editar() */ public function Editar() { session_start(); $this->pessoa_logada = $_SESSION['id_pessoa']; session_write_close(); $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, $this->sequencial, $this->ref_cod_motivo_afastamento, $this->pessoa_logada, NULL, NULL, NULL, $this->data_retorno, unserialize($this->data_saida), 0, $this->ref_cod_instituicao); $editou = $obj->edita(); if ($editou) { if (is_array($_POST['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); // Os valores NULL apagam os campos ref_cod_instituicao_ e // ref_cod_servidor_ -substituto da tabela pmieducar. // quadro_horario_horarios $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"], NULL, $det_horarios["ref_cod_instituicao_servidor"], NULL, $this->ref_cod_servidor); if (!$obj_horario->edita()) { $this->mensagem = "Cadastro não realizado.
"; return FALSE; } } } } $this->mensagem .= "Edição efetuada com sucesso.
"; header("Location: educar_servidor_det.php?cod_servidor={$this->ref_cod_servidor}&ref_cod_instituicao={$this->ref_cod_instituicao}"); die(); } $this->mensagem = "Edição não realizada.
"; return FALSE; } /** * Implementação do método clsCadastro::Excluir() * @see ieducar/intranet/include/clsCadastro#Excluir() */ public function Excluir() { session_start(); $this->pessoa_logada = $_SESSION['id_pessoa']; session_write_close(); $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_excluir(635, $this->pessoa_logada, 7, $urlPermite); $obj = new clsPmieducarServidorAfastamento($this->ref_cod_servidor, $this->sequencial, $this->ref_ref_cod_instituicao, $this->ref_cod_motivo_afastamento, $this->pessoa_logada, $this->pessoa_logada, $this->data_cadastro, $this->data_exclusao, $this->data_retorno, $this->data_saida, 0); $excluiu = $obj->excluir(); if ($excluiu) { $this->mensagem .= "Exclusão efetuada com sucesso.
"; header("Location: educar_servidor_afastamento_lst.php"); die(); } $this->mensagem = "Exclusão não realizada.
"; return FALSE; } } // Instancia objeto de página $pagina = new clsIndexBase(); // Instancia objeto de conteúdo $miolo = new indice(); // Atribui o conteúdo à página $pagina->addForm($miolo); // Gera o código HTML $pagina->MakeAll(); ?>