function Inicializar() { $retorno = 'Novo'; @session_start(); $this->pessoa_logada = $_SESSION['id_pessoa']; @session_write_close(); $this->cod_servidor = $_GET['cod_servidor']; $this->ref_cod_instituicao = $_GET['ref_cod_instituicao']; $this->ref_cod_instituicao_original = $_GET['ref_cod_instituicao']; if ($_POST['ref_cod_instituicao_original']) { $this->ref_cod_instituicao_original = $_POST['ref_cod_instituicao_original']; } $obj_permissoes = new clsPermissoes(); $obj_permissoes->permissao_cadastra(635, $this->pessoa_logada, 7, 'educar_servidor_lst.php'); if (is_numeric($this->cod_servidor) && is_numeric($this->ref_cod_instituicao)) { $obj = new clsPmieducarServidor($this->cod_servidor, NULL, NULL, NULL, NULL, NULL, NULL, $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; } $obj_permissoes = new clsPermissoes(); if ($obj_permissoes->permissao_excluir(635, $this->pessoa_logada, 7)) { $this->fexcluir = TRUE; } $db = new clsBanco(); // Carga horária alocada $sql = sprintf("SELECT\n carga_horaria\n FROM\n pmieducar.servidor_alocacao\n WHERE\n ref_cod_servidor = '%d' AND\n ativo = 1", $this->cod_servidor); $db->Consulta($sql); $carga = 0; while ($db->ProximoRegistro()) { $cargaHoraria = $db->Tupla(); $cargaHoraria = explode(':', $cargaHoraria['carga_horaria']); $carga += $cargaHoraria[0] * 60 + $cargaHoraria[1]; } $this->total_horas_alocadas = sprintf('%02d:%02d', $carga / 60, $carga % 60); // Funções $obj_funcoes = new clsPmieducarServidorFuncao(); $lst_funcoes = $obj_funcoes->lista($this->ref_cod_instituicao, $this->cod_servidor); if ($lst_funcoes) { foreach ($lst_funcoes as $funcao) { $obj_funcao = new clsPmieducarFuncao($funcao['ref_cod_funcao']); $det_funcao = $obj_funcao->detalhe(); $this->ref_cod_funcao[] = array($funcao['ref_cod_funcao'] . '-' . $det_funcao['professor']); if (FALSE == $this->docente && (bool) $det_funcao['professor']) { $this->docente = TRUE; } } } $obj_servidor_disciplina = new clsPmieducarServidorDisciplina(); $lst_servidor_disciplina = $obj_servidor_disciplina->lista(NULL, $this->ref_cod_instituicao, $this->cod_servidor); if ($lst_servidor_disciplina) { foreach ($lst_servidor_disciplina as $disciplina) { $obj_disciplina = new clsPmieducarDisciplina($disciplina['ref_cod_disciplina']); $det_disciplina = $obj_disciplina->detalhe(); $this->cursos_disciplina[$det_disciplina['ref_cod_curso']][$disciplina['ref_cod_disciplina']] = $disciplina['ref_cod_disciplina']; } } @session_start(); if ($_SESSION['cod_servidor'] == $this->cod_servidor) { $_SESSION['cursos_disciplina'] = $this->cursos_disciplina; } else { unset($_SESSION['cursos_disciplina']); } @session_write_close(); $retorno = 'Editar'; } } $this->url_cancelar = $retorno == 'Editar' ? "educar_servidor_det.php?cod_servidor={$this->cod_servidor}&ref_cod_instituicao={$this->ref_cod_instituicao}" : "educar_servidor_lst.php"; $this->nome_url_cancelar = 'Cancelar'; return $retorno; }
function Inicializar() { $retorno = 'Novo'; @session_start(); $this->pessoa_logada = $_SESSION['id_pessoa']; @session_write_close(); $this->cod_servidor = $_GET['ref_cod_servidor']; $this->ref_cod_instituicao = $_GET['ref_cod_instituicao']; $obj_permissoes = new clsPermissoes(); $obj_permissoes->permissao_cadastra(635, $this->pessoa_logada, 7, 'educar_servidor_lst.php'); if (is_numeric($this->cod_servidor) && is_numeric($this->ref_cod_instituicao)) { $obj = new clsPmieducarServidor($this->cod_servidor, NULL, NULL, NULL, NULL, NULL, NULL, $this->ref_cod_instituicao); $registro = $obj->detalhe(); if ($registro) { $retorno = 'Editar'; } } @session_start(); $this->cursos_disciplina = $_SESSION['cursos_disciplina']; @session_write_close(); if (!$this->cursos_disciplina) { $obj_servidor_disciplina = new clsPmieducarServidorDisciplina(); $lst_servidor_disciplina = $obj_servidor_disciplina->lista(NULL, $this->ref_cod_instituicao, $this->cod_servidor); if ($lst_servidor_disciplina) { foreach ($lst_servidor_disciplina as $disciplina) { $componenteMapper = new ComponenteCurricular_Model_ComponenteDataMapper(); $componente = $componenteMapper->find($disciplina['ref_cod_disciplina']); $this->cursos_disciplina[$disciplina['ref_cod_curso']][$disciplina['ref_cod_disciplina']] = $disciplina['ref_cod_disciplina']; } } } if ($this->cursos_disciplina) { foreach ($this->cursos_disciplina as $curso => $disciplinas) { if ($disciplinas) { foreach ($disciplinas as $disciplina) { $this->ref_cod_curso[] = $curso; $this->ref_cod_disciplina[] = $disciplina; } } } } return $retorno; }
/** * Retorna um array com resultados de uma pesquisa parametrizada * * O array retornado contém em cada um de seus items um array associativo onde * as chaves correspondem aos campos da tabela indicados por * $this->_campos_lista. * * A pesquisa SELECT realizada é afetada por diversos parâmetros disponíveis. * Alguns dos parâmetros induzem a subqueries para a avaliação de diferentes * funcionalidades do sistema. * * @see intranet/educar_pesquisa_servidor_lst.php Listagem de busca de * servidores * @see intranet/educar_quadro_horario_horarios_cad.php Cadastro de horário * de aula para uma turma * @see intranet/educar_turma_cad.php Cadastro de turma * * @param int $int_cod_servidor Código do servidor * @param int $int_ref_cod_deficiencia Código da deficiência do servidor * @param int $int_ref_idesco Código da escolaridade do servidor * @param int $int_carga_horaria Carga horária do servidor * @param string $date_data_cadastro_ini Data de cadastro inicial (busca por intervalo >= ao valor) * @param string $date_data_cadastro_fim Data de cadastro final (busca por intervalo <= ao valor) * @param string $date_data_exclusao_ini Data da exclusão inicial (busca por intervalo >= ao valor) * @param string $date_data_exclusao_fim Data da exclusão final (busca por intervalo <= ao valor) * @param int $int_ativo '1' para buscar apenas por servidores ativos * @param int $int_ref_cod_instituicao Código da instituição do servidor * @param string $str_tipo 'livre' para buscar apenas por servidores não alocados (subquery) * @param array $array_horario Busca por horário de alocação do servidor (subquery) * @param int $str_not_in_servidor Código de servidor a excluir * @param string $str_nome_servidor Busca do tipo LIKE pelo padrão de nome do servidor (subquery) * @param int|string $boo_professor Qualquer valor que avalie para TRUE para buscar por servidores professores (subquery) * @param string $str_horario 'S' para buscar se o servidor está alocado em um dos horários (indicados $matutino, $vespertino ou $noturno) (subquery) * @param bool $bool_ordena_por_nome TRUE para ordenar os resultados pelo campo nome por ordem alfabética crescente * @param string $lst_matriculas Verifica se o servidor não está na lista de matriculas (string com inteiros separados por vírgula: 54, 55, 60). * Apenas verifica quando a buscar por horário de alocação é realizada * @param bool $matutino Busca por professores com horário livre no período matutino * @param bool $vespertino Busca por professores com horário livre no período vespertino * @param bool $noturno Busca por professores com horário livre no período noturno * @param int $int_ref_cod_escola Código da escola para verificar se o servidor está alocado nela (usado em várias das subqueries) * @param string $str_hr_mat Duração da aula (formato HH:MM) para o período matutino * @param string $str_hr_ves Duração da aula (formato HH:MM) para o período vespertino * @param string $str_hr_not Duração da aula (formato HH:MM) para o período noturno * @param int $int_dia_semana Inteiro para o dia da semana (1 = domingo, 7 = sábado) * @param int $alocacao_escola_instituicao Código da instituição ao qual o servidor deve estar cadastrado (subquery) * @param int $int_identificador Campo identificado para busca na tabela pmieducar.quadro_horario_horarios_aux (subquery) * @param int $int_ref_cod_curso Código do curso que o professor deve estar cadastrado (subquery) * @param int $int_ref_cod_disciplina Código da disciplina que o professor deve ser habilitado (subquery). * Somente verifica quando o curso passado por $int_ref_cod_curso não * possui sistema de falta globalizada * @param int $int_ref_cod_subnivel Código de subnível que o servidor deve possuir * @return array|bool Array com os resultados da query SELECT ou FALSE caso * nenhum registro tenha sido encontrado */ function lista($int_cod_servidor = NULL, $int_ref_cod_deficiencia = NULL, $int_ref_idesco = NULL, $int_carga_horaria = NULL, $date_data_cadastro_ini = NULL, $date_data_cadastro_fim = NULL, $date_data_exclusao_ini = NULL, $date_data_exclusao_fim = NULL, $int_ativo = NULL, $int_ref_cod_instituicao = NULL, $str_tipo = NULL, $array_horario = NULL, $str_not_in_servidor = NULL, $str_nome_servidor = NULL, $boo_professor = FALSE, $str_horario = NULL, $bool_ordena_por_nome = FALSE, $lst_matriculas = NULL, $matutino = FALSE, $vespertino = FALSE, $noturno = FALSE, $int_ref_cod_escola = NULL, $str_hr_mat = NULL, $str_hr_ves = NULL, $str_hr_not = NULL, $int_dia_semana = NULL, $alocacao_escola_instituicao = NULL, $int_identificador = NULL, $int_ref_cod_curso = NULL, $int_ref_cod_disciplina = NULL, $int_ref_cod_subnivel = NULL) { // Extrai as informações de hora inicial e hora final, para definir melhor // o lookup de carga horária de servidores alocados, para operações como // a alocação de docente em quadro de horário. Isso é necessário para que // não seja necessário alocar o docente em dois períodos diferentes apenas // porque o horário final de uma aula extrapola o limite de horário do // período. if (is_array($array_horario) && 3 >= count($array_horario)) { $horarioInicial = explode(':', $array_horario[1]); $horarioFinal = explode(':', $array_horario[2]); $horarioInicial = $horarioInicial[0] * 60 + $horarioInicial[1]; $horarioFinal = $horarioFinal[0] * 60 + $horarioFinal[1]; // Caso o horário definido inicie no período "matutino" e se encerre no // período "vespertino", irá considerar como "matutino" apenas. $matutinoLimite = 12 * 60; if ($horarioInicial < $matutinoLimite && $horarioFinal > $matutinoLimite) { $vespertino = false; } // Caso o horário definido inicie no período "vespertino" e se encerre // no período "noturno", irá considerar como "vespertino" apenas. $vespertinoLimite = 18 * 60; if ($horarioInicial < $vespertinoLimite && $horarioFinal > $vespertinoLimite) { $noturno = false; } } $whereAnd = ' WHERE '; $filtros = ''; $tabela_compl = ''; if (is_bool($bool_ordena_por_nome)) { $tabela_compl .= ', cadastro.pessoa p'; $this->_campos_lista2 .= ', p.nome'; $filtros .= $whereAnd . ' s.cod_servidor = p.idpes '; $whereAnd = ' AND '; $this->setOrderby('nome'); } else { $this->_campos_lista2 = $this->_todos_campos2; $this->setOrderby(' 1 '); } $sql = "SELECT {$this->_campos_lista2} FROM {$this->_schema}servidor s{$tabela_compl}"; if (is_numeric($int_cod_servidor)) { $filtros .= "{$whereAnd} s.cod_servidor = '{$int_cod_servidor}'"; $whereAnd = " AND "; } if (is_numeric($int_ref_cod_deficiencia)) { $filtros .= "{$whereAnd} s.ref_cod_deficiencia = '{$int_ref_cod_deficiencia}'"; $whereAnd = " AND "; } if (is_numeric($int_ref_idesco)) { $filtros .= "{$whereAnd} s.ref_idesco = '{$int_ref_idesco}'"; $whereAnd = " AND "; } if (is_numeric($int_carga_horaria)) { $filtros .= "{$whereAnd} s.carga_horaria = '{$int_carga_horaria}'"; $whereAnd = " AND "; } if (is_string($date_data_cadastro_ini)) { $filtros .= "{$whereAnd} s.data_cadastro >= '{$date_data_cadastro_ini}'"; $whereAnd = " AND "; } if (is_string($date_data_cadastro_fim)) { $filtros .= "{$whereAnd} s.data_cadastro <= '{$date_data_cadastro_fim}'"; $whereAnd = " AND "; } if (is_string($date_data_exclusao_ini)) { $filtros .= "{$whereAnd} s.data_exclusao >= '{$date_data_exclusao_ini}'"; $whereAnd = " AND "; } if (is_string($date_data_exclusao_fim)) { $filtros .= "{$whereAnd} s.data_exclusao <= '{$date_data_exclusao_fim}'"; $whereAnd = " AND "; } if (is_null($int_ativo) || $int_ativo) { $filtros .= "{$whereAnd} s.ativo = '1'"; $whereAnd = " AND "; } else { $filtros .= "{$whereAnd} s.ativo = '0'"; $whereAnd = " AND "; } if (is_numeric($int_ref_cod_instituicao)) { $filtros .= "{$whereAnd} s.ref_cod_instituicao = '{$int_ref_cod_instituicao}'"; $whereAnd = " AND "; } // Busca tipo LIKE pelo nome do servidor if (is_string($str_nome_servidor)) { $filtros .= "{$whereAnd} EXISTS (SELECT 1\n FROM cadastro.pessoa p\n WHERE cod_servidor = p.idpes\n AND to_ascii(p.nome) LIKE to_ascii('%{$str_nome_servidor}%')) "; $whereAnd = " AND "; } // Seleciona apenas servidores que tenham a carga atual maior ou igual ao // do servidor atual if (is_string($str_tipo) && $str_tipo == 'livre') { if (is_numeric($int_ref_cod_instituicao)) { $where = " AND s.ref_cod_instituicao = '{$int_ref_cod_instituicao}' "; $where2 = " AND sa.ref_ref_cod_instituicao = '{$int_ref_cod_instituicao}' "; } $filtros .= "\n {$whereAnd} NOT EXISTS\n (SELECT 1\n FROM pmieducar.servidor_alocacao sa\n WHERE sa.ref_cod_servidor = s.cod_servidor {$where2})"; $filtros .= "\n {$whereAnd} (s.carga_horaria::text || ':00:00') >= COALESCE(\n (SELECT SUM(carga_horaria::time)::text\n FROM pmieducar.servidor_alocacao saa\n WHERE saa.ref_cod_servidor = {$str_not_in_servidor}),'00:00') {$where}"; $whereAnd = " AND "; } else { if (is_numeric($alocacao_escola_instituicao) && (is_numeric($int_ref_cod_instituicao) || is_numeric($int_ref_cod_escola))) { $filtros .= "\n {$whereAnd} s.cod_servidor IN\n (SELECT a.ref_cod_servidor\n FROM pmieducar.servidor_alocacao a\n WHERE "; if (is_numeric($int_ref_cod_instituicao)) { $filtros .= " a.ref_ref_cod_instituicao = '{$int_ref_cod_instituicao}'"; } if (is_numeric($int_ref_cod_escola)) { if (is_numeric($int_ref_cod_instituicao)) { $filtros .= " " . $whereAnd; } $filtros .= " ref_cod_escola = '{$int_ref_cod_escola}' "; } $filtros .= ') '; } if (is_array($array_horario)) { $cond = "AND"; if (is_numeric($int_ref_cod_instituicao)) { $where .= " {$cond} a.ref_ref_cod_instituicao = '{$int_ref_cod_instituicao}' "; $cond = "AND"; } if (is_numeric($int_ref_cod_escola)) { $where .= " {$cond} a.ref_cod_escola = '{$int_ref_cod_escola}' "; $cond = "AND"; } $where .= " {$cond} a.ativo = '1'"; $cond = "AND"; $hora_ini = explode(":", $array_horario[1]); $hora_fim = explode(":", $array_horario[2]); $horas = sprintf("%02d", (int) abs($hora_fim[0]) - abs($hora_ini[0])); $minutos = sprintf("%02d", (int) abs($hora_fim[1]) - abs($hora_ini[1])); // Remove qualquer AND que esteja no início da cláusula SQL $wherePieces = explode(' ', trim($where)); if ('AND' == $wherePieces[0]) { array_shift($wherePieces); $where = implode(' ', $wherePieces); } if ($matutino) { if (is_string($str_horario) && $str_horario == "S") { // A somatória retorna nulo $filtros .= "\n {$whereAnd} s.cod_servidor IN (SELECT a.ref_cod_servidor\n FROM pmieducar.servidor_alocacao a\n WHERE {$where}\n AND a.periodo = 1\n AND a.carga_horaria >= COALESCE(\n (SELECT SUM(qhh.hora_final - qhh.hora_inicial)\n FROM pmieducar.quadro_horario_horarios qhh\n WHERE qhh.ref_cod_instituicao_servidor = '{$int_ref_cod_instituicao}'\n AND qhh.ref_cod_escola = '{$int_ref_cod_escola}'\n AND hora_inicial >= '06:00'\n AND hora_inicial <= '12:00'\n AND qhh.ativo = '1'\n AND qhh.dia_semana <> '{$int_dia_semana}'\n AND qhh.ref_servidor = a.ref_cod_servidor\n GROUP BY qhh.ref_servidor) ,'00:00') + '{$str_hr_mat}' + COALESCE(\n (SELECT SUM( qhha.hora_final - qhha.hora_inicial )\n FROM pmieducar.quadro_horario_horarios_aux qhha\n WHERE qhha.ref_cod_instituicao_servidor = '{$int_ref_cod_instituicao}'\n AND qhha.ref_cod_escola = {$int_ref_cod_escola}\n AND hora_inicial >= '06:00'\n AND hora_inicial <= '12:00'\n AND qhha.ref_servidor = a.ref_cod_servidor\n AND identificador = '{$int_identificador}'\n GROUP BY qhha.ref_servidor),'00:00'))"; } else { $filtros .= "\n {$whereAnd} s.cod_servidor NOT IN (SELECT a.ref_cod_servidor\n FROM pmieducar.servidor_alocacao a\n WHERE {$where}\n AND a.periodo = 1)"; } } if ($vespertino) { if (is_string($str_horario) && $str_horario == "S") { $filtros .= "\n {$whereAnd} s.cod_servidor IN\n (SELECT a.ref_cod_servidor\n FROM pmieducar.servidor_alocacao a\n WHERE {$where}\n AND a.periodo = 2\n AND a.carga_horaria >= COALESCE(\n (SELECT SUM( qhh.hora_final - qhh.hora_inicial )\n FROM pmieducar.quadro_horario_horarios qhh\n WHERE qhh.ref_cod_instituicao_servidor = '{$int_ref_cod_instituicao}'\n AND qhh.ref_cod_escola = '{$int_ref_cod_escola}'\n AND qhh.ativo = '1'\n AND hora_inicial >= '12:00'\n AND hora_inicial <= '18:00'\n AND qhh.dia_semana <> '{$int_dia_semana}'\n AND qhh.ref_servidor = a.ref_cod_servidor\n GROUP BY qhh.ref_servidor ),'00:00') + '{$str_hr_ves}' + COALESCE(\n (SELECT SUM( qhha.hora_final - qhha.hora_inicial )\n FROM pmieducar.quadro_horario_horarios_aux qhha\n WHERE qhha.ref_cod_instituicao_servidor = '{$int_ref_cod_instituicao}'\n AND qhha.ref_cod_escola = '{$int_ref_cod_escola}'\n AND qhha.ref_servidor = a.ref_cod_servidor\n AND hora_inicial >= '12:00'\n AND hora_inicial <= '18:00'\n AND identificador = '{$int_identificador}'\n GROUP BY qhha.ref_servidor),'00:00') )"; } else { $filtros .= "\n {$whereAnd} s.cod_servidor NOT IN ( SELECT a.ref_cod_servidor\n FROM pmieducar.servidor_alocacao a\n WHERE {$where}\n AND a.periodo = 2 )"; } } if ($noturno) { if (is_string($str_horario) && $str_horario == "S") { $filtros .= "\n {$whereAnd} s.cod_servidor IN ( SELECT a.ref_cod_servidor\n FROM pmieducar.servidor_alocacao a\n WHERE {$where}\n AND a.periodo = 3\n AND a.carga_horaria >= COALESCE(\n (SELECT SUM(qhh.hora_final - qhh.hora_inicial)\n FROM pmieducar.quadro_horario_horarios qhh\n WHERE qhh.ref_cod_instituicao_servidor = '{$int_ref_cod_instituicao}'\n AND qhh.ref_cod_escola = '{$int_ref_cod_escola}'\n AND qhh.ativo = '1'\n AND hora_inicial >= '18:00'\n AND hora_inicial <= '23:59'\n AND qhh.dia_semana <> '{$int_dia_semana}'\n AND qhh.ref_servidor = a.ref_cod_servidor\n GROUP BY qhh.ref_servidor ),'00:00') + '{$str_hr_not}' + COALESCE(\n (SELECT SUM( qhha.hora_final - qhha.hora_inicial )\n FROM pmieducar.quadro_horario_horarios_aux qhha\n WHERE qhha.ref_cod_instituicao_servidor = '{$int_ref_cod_instituicao}'\n AND qhha.ref_cod_escola = '{$int_ref_cod_escola}'\n AND qhha.ref_servidor = a.ref_cod_servidor\n AND hora_inicial >= '18:00'\n AND hora_inicial <= '23:59'\n AND identificador = '{$int_identificador}'\n GROUP BY qhha.ref_servidor),'00:00') )"; } else { $filtros .= "\n {$whereAnd} s.cod_servidor NOT IN (\n SELECT a.ref_cod_servidor\n FROM pmieducar.servidor_alocacao a\n WHERE {$where}\n AND a.periodo = 3 )"; } } if (is_string($str_horario) && $str_horario == "S") { } else { $filtros .= "\n {$whereAnd} s.carga_horaria >= COALESCE(\n (SELECT sum(hora_final - hora_inicial) + '" . abs($horas) . ":" . abs($minutos) . "'\n FROM pmieducar.servidor_alocacao sa\n WHERE sa.ref_cod_servidor = s.cod_servidor\n AND sa.ref_ref_cod_instituicao ='{$int_ref_cod_instituicao}'),'00:00') "; } } } if (is_array($array_horario) && $str_not_in_servidor || is_string($str_tipo) && $str_not_in_servidor) { $filtros .= "{$whereAnd} s.cod_servidor NOT IN ( {$str_not_in_servidor} )"; $whereAnd = " AND "; } $obj_curso = new clsPmieducarCurso($int_ref_cod_curso); $det_curso = $obj_curso->detalhe(); // Seleciona apenas servidor cuja uma de suas funções seja a de professor // @todo Extract method if ($boo_professor) { /* * Caso os códigos de disciplina e de curso não sejam informado, mas o de * servidor para não buscar sim, seleciona as disciplinas deste servidor * com o qual o professor candidato terá que lecionar para ser retornado * na query. */ if (!$int_ref_cod_disciplina && !$int_ref_cod_curso) { $servidorDisciplina = new clsPmieducarServidorDisciplina(); $disciplinas = $servidorDisciplina->lista(NULL, NULL, $str_not_in_servidor); $servidorDisciplinas = array(); if (is_array($disciplinas)) { foreach ($disciplinas as $disciplina) { $servidorDisciplinas[] = sprintf('(sd.ref_cod_disciplina = %d AND sd.ref_cod_curso = %d)', $disciplina['ref_cod_disciplina'], $disciplina['ref_cod_curso']); } $servidorDisciplinas = sprintf('AND (%s)', implode(' AND ', $servidorDisciplinas)); } else { $servidorDisciplinas = ''; } } else { $servidorDisciplinas = sprintf('AND sd.ref_cod_disciplina = %d AND sd.ref_cod_curso = %d', $int_ref_cod_disciplina, $int_ref_cod_curso); } $filtros .= "\n {$whereAnd} EXISTS\n (SELECT\n 1\n FROM\n pmieducar.servidor_funcao sf, pmieducar.funcao f, pmieducar.servidor_disciplina sd\n WHERE\n f.cod_funcao = sf.ref_cod_funcao AND\n f.professor = 1 AND\n sf.ref_ref_cod_instituicao = s.ref_cod_instituicao AND\n s.cod_servidor = sf.ref_cod_servidor AND\n s.cod_servidor = sd.ref_cod_servidor AND\n s.ref_cod_instituicao = sd.ref_ref_cod_instituicao\n {$servidorDisciplinas})"; $whereAnd = " AND "; } if (is_string($str_horario) && $str_horario == "S") { $filtros .= "\n {$whereAnd} s.cod_servidor NOT IN\n (SELECT DISTINCT qhh.ref_servidor\n FROM pmieducar.quadro_horario_horarios qhh\n WHERE qhh.ref_servidor = s.cod_servidor\n AND qhh.ref_cod_instituicao_servidor = s.ref_cod_instituicao\n AND qhh.dia_semana = '{$array_horario[0]}'\n AND qhh.hora_inicial >= '{$array_horario[1]}'\n AND qhh.hora_final <= '{$array_horario[2]}'\n AND qhh.ativo = '1'"; if (is_string($lst_matriculas)) { $filtros .= "AND qhh.ref_servidor NOT IN ({$lst_matriculas})"; } $filtros .= " )"; $whereAnd = " AND "; } if (is_numeric($int_ref_cod_subnivel)) { $filtros .= "{$whereAnd} s.ref_cod_subnivel = '{$int_ref_cod_subnivel}'"; $whereAnd = " AND "; } $countCampos = count(explode(',', $this->_campos_lista)); $resultado = array(); $db = new clsBanco(); $sql = "SELECT {$this->_campos_lista2} FROM {$this->_schema}servidor s{$tabela_compl} {$filtros}" . $this->getOrderby() . $this->getLimite(); $this->_total = $db->CampoUnico("SELECT COUNT(0) FROM {$this->_schema}servidor s{$tabela_compl} {$filtros}"); // Executa a query $db->Consulta($sql); if ($countCampos > 1) { while ($db->ProximoRegistro()) { $tupla = $db->Tupla(); $tupla['_total'] = $this->_total; $resultado[] = $tupla; } } else { while ($db->ProximoRegistro()) { $tupla = $db->Tupla(); $resultado[] = $tupla[$this->_campos_lista]; } } if (count($resultado)) { return $resultado; } return FALSE; }
/** * Implementação do método Gerar() */ function Gerar() { session_start(); $this->pessoa_logada = $_SESSION['id_pessoa']; session_write_close(); $this->titulo = 'Servidor - Detalhe'; $this->addBanner('imagens/nvp_top_intranet.jpg', 'imagens/nvp_vert_intranet.jpg', 'Intranet'); $this->cod_servidor = $_GET['cod_servidor']; $this->ref_cod_instituicao = $_GET['ref_cod_instituicao']; $tmp_obj = new clsPmieducarServidor($this->cod_servidor, NULL, NULL, NULL, NULL, NULL, NULL, $this->ref_cod_instituicao); $registro = $tmp_obj->detalhe(); if (!$registro) { header('Location: educar_servidor_lst.php'); die; } // Deficiência $obj_ref_cod_deficiencia = new clsCadastroDeficiencia($registro['ref_cod_deficiencia']); $det_ref_cod_deficiencia = $obj_ref_cod_deficiencia->detalhe(); $registro['ref_cod_deficiencia'] = $det_ref_cod_deficiencia['nm_deficiencia']; // Escolaridade $obj_ref_idesco = new clsCadastroEscolaridade($registro['ref_idesco']); $det_ref_idesco = $obj_ref_idesco->detalhe(); $registro['ref_idesco'] = $det_ref_idesco['descricao']; // Função $obj_ref_cod_funcao = new clsPmieducarFuncao($registro['ref_cod_funcao'], NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $this->ref_cod_instituicao); $det_ref_cod_funcao = $obj_ref_cod_funcao->detalhe(); $registro['ref_cod_funcao'] = $det_ref_cod_funcao['nm_funcao']; // Nome $obj_cod_servidor = new clsFuncionario($registro['cod_servidor']); $det_cod_servidor = $obj_cod_servidor->detalhe(); $registro['matricula'] = $det_cod_servidor['matricula']; $det_cod_servidor = $det_cod_servidor['idpes']->detalhe(); $registro['nome'] = $det_cod_servidor['nome']; // Instituição $obj_ref_cod_instituicao = new clsPmieducarInstituicao($registro['ref_cod_instituicao']); $det_ref_cod_instituicao = $obj_ref_cod_instituicao->detalhe(); $registro['ref_cod_instituicao'] = $det_ref_cod_instituicao['nm_instituicao']; // Alocação do servidor $obj = new clsPmieducarServidorAlocacao(); $obj->setOrderby('periodo, carga_horaria'); $lista = $obj->lista(NULL, $this->ref_cod_instituicao, NULL, NULL, NULL, $this->cod_servidor, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1); if ($lista) { // Passa todos os valores do registro para atributos do objeto foreach ($lista as $campo => $val) { $temp = array(); $temp['carga_horaria'] = $val['carga_horaria']; $temp['periodo'] = $val['periodo']; $obj_escola = new clsPmieducarEscola($val['ref_cod_escola']); $det_escola = $obj_escola->detalhe(); $det_escola = $det_escola['nome']; $temp['ref_cod_escola'] = $det_escola; $this->alocacao_array[] = $temp; } } if ($registro['cod_servidor']) { $this->addDetalhe(array('Servidor', $registro['cod_servidor'])); } if ($registro['matricula']) { $this->addDetalhe(array('Matrícula', $registro['matricula'])); } if ($registro['nome']) { $this->addDetalhe(array('Nome', $registro['nome'])); } if ($registro['ref_cod_instituicao']) { $this->addDetalhe(array("Instituição", $registro['ref_cod_instituicao'])); } if ($registro['ref_cod_deficiencia']) { $this->addDetalhe(array('Deficiência', $registro['ref_cod_deficiencia'])); } if ($registro['ref_idesco']) { $this->addDetalhe(array('Escolaridade', $registro['ref_idesco'])); } if ($registro['ref_cod_subnivel']) { $obj_nivel = new clsPmieducarSubnivel($registro['ref_cod_subnivel']); $det_nivel = $obj_nivel->detalhe(); $this->addDetalhe(array('Nível', $det_nivel['nm_subnivel'])); } if ($registro['ref_cod_funcao']) { $this->addDetalhe(array('Função', $registro['ref_cod_funcao'])); } $obj_funcao = new clsPmieducarServidorFuncao(); $lst_funcao = $obj_funcao->lista($this->ref_cod_instituicao, $this->cod_servidor); // Inep. $docente = false; if ($lst_funcao) { $tabela .= "\n <table cellspacing='0' cellpadding='0' border='0'>\n <tr bgcolor='#A1B3BD' align='center'>\n <td width='150'>Função</td>\n </tr>"; $class = 'formlttd'; $tab_disc = NULL; $obj_disciplina_servidor = new clsPmieducarServidorDisciplina(); $lst_disciplina_servidor = $obj_disciplina_servidor->lista(NULL, $this->ref_cod_instituicao, $this->cod_servidor); if ($lst_disciplina_servidor) { $tab_disc .= "<table cellspacing='0' cellpadding='0' width='200' border='0' style='border:1px dotted #000000'>"; $class2 = $class2 == "formlttd" ? "formmdtd" : "formlttd"; $tab_disc .= "\n <tr>\n <td bgcolor='#A1B3BD' align='center'>Componentes Curriculares</td>\n </tr>"; $componenteMapper = new ComponenteCurricular_Model_ComponenteDataMapper(); foreach ($lst_disciplina_servidor as $disciplina) { $componente = $componenteMapper->find($disciplina['ref_cod_disciplina']); $tab_disc .= "\n <tr class='{$class2}' align='center'>\n <td align='left'>{$componente->nome}</td>\n </tr>"; $class2 = $class2 == "formlttd" ? "formmdtd" : "formlttd"; } $tab_disc .= "</table>"; } $obj_servidor_curso = new clsPmieducarServidorCursoMinistra(); $lst_servidor_curso = $obj_servidor_curso->lista(NULL, $this->ref_cod_instituicao, $this->cod_servidor); if ($lst_servidor_curso) { $tab_curso .= "<table cellspacing='0' cellpadding='0' width='200' border='0' style='border:1px dotted #000000'>"; $class2 = $class2 == "formlttd" ? "formmdtd" : "formlttd"; $tab_curso .= "\n <tr>\n <td bgcolor='#A1B3BD' align='center'>Cursos Ministrados</td>\n </tr>"; foreach ($lst_servidor_curso as $curso) { $obj_curso = new clsPmieducarCurso($curso['ref_cod_curso']); $det_curso = $obj_curso->detalhe(); $tab_curso .= "\n <tr class='{$class2}' align='center'>\n <td align='left'>{$det_curso['nm_curso']}</td>\n </tr>"; $class2 = $class2 == "formlttd" ? "formmdtd" : "formlttd"; } $tab_curso .= "</table>"; } foreach ($lst_funcao as $funcao) { $obj_funcao = new clsPmieducarFuncao($funcao['ref_cod_funcao']); $det_funcao = $obj_funcao->detalhe(); $tabela .= "\n <tr class='{$class}' align='left'>\n <td><b>{$det_funcao['nm_funcao']}</b></td>\n </tr>"; $docente = (bool) $det_funcao['professor']; $class = $class == "formlttd" ? "formmdtd" : "formlttd"; } if ($tab_curso) { $tabela .= "\n <tr class='{$class}' align='center'>\n <td style='padding:5px'>{$tab_curso}</td>\n </tr>"; } if ($tab_disc) { $tabela .= "\n <tr class='{$class}' align='center'>\n <td style='padding:5px'>{$tab_disc}</td>\n </tr>"; } $tabela .= "</table>"; $this->addDetalhe(array('Função', "<a href='javascript:trocaDisplay(\"det_f\");' >Mostrar detalhe</a><div id='det_f' name='det_f' style='display:none;'>" . $tabela . "</div>")); } $tabela = NULL; /** * @todo Criar função de transformação de hora decimal. Ver educar_servidor_cad.php em 276 */ if ($registro['carga_horaria']) { $cargaHoraria = $registro['carga_horaria']; $horas = (int) $cargaHoraria; $minutos = round(($cargaHoraria - $horas) * 60); $cargaHoraria = sprintf('%02d:%02d', $horas, $minutos); $this->addDetalhe(array('Carga Horária', $cargaHoraria)); } $dias_da_semana = array('' => 'Selecione', 1 => 'Domingo', 2 => 'Segunda', 3 => 'Terça', 4 => 'Quarta', 5 => 'Quinta', 6 => 'Sexta', 7 => 'Sábado'); if ($this->alocacao_array) { $tabela .= "\n <table cellspacing='0' cellpadding='0' border='0'>\n <tr bgcolor='#A1B3BD' align='center'>\n <td width='150'>Carga Horária</td>\n <td width='80'>Período</td>\n <td width='150'>Escola</td>\n </tr>"; $class = "formlttd"; foreach ($this->alocacao_array as $alocacao) { switch ($alocacao['periodo']) { case 1: $nm_periodo = "Matutino"; break; case 2: $nm_periodo = "Vespertino"; break; case 3: $nm_periodo = "Noturno"; break; } $tabela .= "\n <tr class='{$class}' align='center'>\n <td>{$alocacao['carga_horaria']}</td>\n <td>{$nm_periodo}</td>\n <td>{$alocacao['ref_cod_escola']}</td>\n </tr>"; $class = $class == 'formlttd' ? 'formmdtd' : 'formlttd'; } $tabela .= "</table>"; $this->addDetalhe(array('Horários de trabalho', "<a href='javascript:trocaDisplay(\"det_pree\");' >Mostrar detalhe</a><div id='det_pree' name='det_pree' style='display:none;'>" . $tabela . "</div>")); } // Horários do professor $horarios = $tmp_obj->getHorariosServidor($registro['cod_servidor'], $this->ref_cod_instituicao); if ($horarios) { $tabela = "\n <table cellspacing='0' cellpadding='0' border='0'>\n <tr bgcolor='#A1B3BD' align='center'>\n <td width='150'>Escola</td>\n <td width='100'>Curso</td>\n <td width='70'>Série</td>\n <td width='70'>Turma</td>\n <td width='100'>Componente curricular</td>\n <td width='70'>Dia da semana</td>\n <td width='70'>Hora inicial</td>\n <td width='70'>Hora final</td>\n </tr>"; foreach ($horarios as $horario) { $class = $class == 'formlttd' ? 'formmdtd' : 'formlttd'; $tabela .= sprintf(' <tr class="%s" align="center"> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> </tr>', $class, $horario['nm_escola'], $horario['nm_curso'], $horario['nm_serie'], $horario['nm_turma'], $horario['nome'], $dias_da_semana[$horario['dia_semana']], $horario['hora_inicial'], $horario['hora_final']); } $tabela .= "</table>"; $this->addDetalhe(array('Horários de aula', "<a href='javascript:trocaDisplay(\"horarios\");' >Mostrar detalhes</a>" . "<div id='horarios' name='det_pree' style='display:none;'>" . $tabela . "</div>")); } // Dados do docente no Educacenso/Inep. if ($docente) { $docenteMapper = new Educacenso_Model_DocenteDataMapper(); $docenteInep = NULL; try { $docenteInep = $docenteMapper->find(array('docente' => $registro['cod_servidor'])); } catch (Exception $e) { } if (isset($docenteInep)) { $this->addDetalhe(array('Código do docente no Educacenso/Inep', $docenteInep->docenteInep)); if (isset($docenteInep->nomeInep)) { $this->addDetalhe(array('Nome do docente no Educacenso/Inep', $docenteInep->nomeInep)); } } } $obj_permissoes = new clsPermissoes(); if ($obj_permissoes->permissao_cadastra(635, $this->pessoa_logada, 7)) { $this->url_novo = 'educar_servidor_cad.php'; $this->url_editar = "educar_servidor_cad.php?cod_servidor={$registro["cod_servidor"]}&ref_cod_instituicao={$this->ref_cod_instituicao}"; $get_padrao = "ref_cod_servidor={$registro["cod_servidor"]}&ref_cod_instituicao={$this->ref_cod_instituicao}"; $this->array_botao = array(); $this->array_botao_url_script = array(); $this->array_botao[] = 'Avaliação de Desempenho'; $this->array_botao_url_script[] = "go(\"educar_avaliacao_desempenho_lst.php?{$get_padrao}\");"; $this->array_botao[] = 'Formação'; $this->array_botao_url_script[] = "go(\"educar_servidor_formacao_lst.php?{$get_padrao}\");"; $this->array_botao[] = 'Cursos superiores/Licenciaturas'; $this->array_botao_url_script[] = sprintf("go(\"../module/Docente/index?servidor=%d&instituicao=%d\");", $registro['cod_servidor'], $this->ref_cod_instituicao); $this->array_botao[] = 'Faltas/Atrasos'; $this->array_botao_url_script[] = "go(\"educar_falta_atraso_lst.php?{$get_padrao}\");"; $this->array_botao[] = 'Alocar Servidor'; $this->array_botao_url_script[] = "go(\"educar_servidor_alocacao_cad.php?{$get_padrao}\");"; $this->array_botao[] = 'Alterar Nível'; $this->array_botao_url_script[] = "popless();"; $obj_servidor_alocacao = new clsPmieducarServidorAlocacao(); $lista_alocacao = $obj_servidor_alocacao->lista(NULL, $this->ref_cod_instituicao, NULL, NULL, NULL, $this->cod_servidor, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1); if ($lista) { $this->array_botao[] = 'Substituir Horário Servidor'; $this->array_botao_url_script[] = "go(\"educar_servidor_substituicao_cad.php?{$get_padrao}\");"; } $obj_afastamento = new clsPmieducarServidorAfastamento(); $afastamento = $obj_afastamento->afastado($this->cod_servidor, $this->ref_cod_instituicao); if (is_numeric($afastamento) && $afastamento == 0) { $this->array_botao[] = 'Afastar Servidor'; $this->array_botao_url_script[] = "go(\"educar_servidor_afastamento_cad.php?{$get_padrao}\");"; } elseif (is_numeric($afastamento)) { $this->array_botao[] = 'Retornar Servidor'; $this->array_botao_url_script[] = "go(\"educar_servidor_afastamento_cad.php?{$get_padrao}&sequencial={$afastamento}\");"; } } $this->url_cancelar = 'educar_servidor_lst.php'; $this->largura = '100%'; $localizacao = new LocalizacaoSistema(); $localizacao->entradaCaminhos(array($_SERVER['SERVER_NAME'] . "/intranet" => "Início", "educar_index.php" => "i-Educar - Escola", "" => "Detalhe do servidor")); $this->enviaLocalizacao($localizacao->montar()); }