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();
?>