Example #1
0
 /**
  * Método com a consulta especifica para a página "distribuicao_de_registros".
  * Devido a um erro no auto load do sistema as constantes do afa só devem ser
  * cahamadas após a inclusão da classe em método anterior.
  * @param public_usuario_aluno $aluno Um objeto referente ao aluno dos registros
  * @param FiltrosSistema $filtrosSistema Objeto referente aos filtros do sistema
  * @return stdClass|boolean Retorna um objeto contendo os dados da resposta
  * ou FALSE em caso de erro
  */
 public function distribuicaoDeRegistros(Kernel_Models_Aluno $aluno, FiltrosSistema $filtrosSistema)
 {
     $periodo = $this->stringFiltroPeriodo($filtrosSistema);
     //A média não foi colocada na consulta por não haver um serial na tabela
     //e por não ser preciso modificar a tabela para esta busca
     $query = "SELECT " . "(select score " . "from afa.afa_conceito_aluno " . "where fk_usuario_aluno=pk_usuario_aluno " . "order by(pk_afa_conceito_aluno)desc limit 1) " . "as afa_ult_conceito, " . "(select count(pk_afa_conceito_aluno) " . "from afa.afa_conceito_aluno " . "inner join public.usuario_aluno on " . "fk_usuario_aluno=public.usuario_aluno.pk_usuario_aluno " . "WHERE fk_afa_subtipo_anotacao=" . Kernel_Models_Afa::SUB_TIPO_SOEP . $periodo . "and fk_usuario=" . $aluno->getId() . ") " . "as aten_peda, " . "(select count(pk_afa_conceito_aluno) " . "from afa.afa_conceito_aluno " . "inner join afa.afa_subtipo_anotacao on " . "afa.afa_subtipo_anotacao.pk_afa_subtipo_anotacao=" . "fk_afa_subtipo_anotacao " . "inner join public.usuario_aluno on " . "fk_usuario_aluno=public.usuario_aluno.pk_usuario_aluno " . "WHERE fk_afa_tipo_anotacao=" . Kernel_Models_Afa::TIPO_ACAO_PEDAGOGICA_FORMATIVA . $periodo . "and fk_usuario=" . $aluno->getId() . ") " . "as acao_peda, " . "(select count(pk_afa_conceito_aluno) " . "from afa.afa_conceito_aluno " . "inner join afa.afa_subtipo_anotacao on " . "afa.afa_subtipo_anotacao.pk_afa_subtipo_anotacao=" . "fk_afa_subtipo_anotacao " . "inner join public.usuario_aluno on " . "fk_usuario_aluno=public.usuario_aluno.pk_usuario_aluno " . "WHERE fk_afa_tipo_anotacao=" . Kernel_Models_Afa::TIPO_POSITIVO . $periodo . "and public.usuario_aluno.fk_usuario=" . $aluno->getId() . ") " . "as afa_pos, " . "(select count(pk_afa_conceito_aluno) " . "from afa.afa_conceito_aluno " . "inner join afa.afa_subtipo_anotacao on " . "afa.afa_subtipo_anotacao.pk_afa_subtipo_anotacao=" . "fk_afa_subtipo_anotacao " . "inner join public.usuario_aluno on " . "fk_usuario_aluno=public.usuario_aluno.pk_usuario_aluno " . "WHERE fk_afa_tipo_anotacao=" . Kernel_Models_Afa::TIPO_NEGATIVO . "{$periodo} " . "and fk_usuario=" . $aluno->getId() . ") " . "as afa_neg, " . "(select count(pk_afa_conceito_aluno) " . "from afa.afa_conceito_aluno " . "inner join public.usuario_aluno on " . "fk_usuario_aluno=public.usuario_aluno.pk_usuario_aluno " . "WHERE fk_afa_subtipo_anotacao=" . Kernel_Models_Afa::SUB_TIPO_FALTA . "{$periodo} " . "and fk_usuario=" . $aluno->getId() . ") " . "as faltas, " . "(select count(pk_afa_conceito_aluno) " . "from afa.afa_conceito_aluno " . "inner join public.usuario_aluno on " . "fk_usuario_aluno=public.usuario_aluno.pk_usuario_aluno " . "WHERE fk_afa_subtipo_anotacao=" . Kernel_Models_Afa::SUB_TIPO_ATRASO . "{$periodo} " . "and fk_usuario=" . $aluno->getId() . ") " . "as atrasos  " . "from public.usuario_aluno " . "WHERE fk_usuario=" . $aluno->getId() . " and status=1 limit 1";
     $ret = $this->queryStatement($query);
     return $ret->fetchObject();
 }
Example #2
0
 /**
  * Método que lista todos os registros de um aluno especifico do ano letivo atual
  * @param Kernel_Models_Aluno $aluno Um objeto do tipo aluno que determina o aluno de filtro da consulta
  * @param int|array|boolean O código do tipo do registro ou array de códigos. Informe FALSE para ignorar
  * @param int|array|boolean O código do subtipo do registro ou array de códigos. Informe FALSE para ignorar
  * @param FiltrosSistema $filtrosSistema Variavel para a filtragem dos registros. Informe FALSE para ignorar
  * @return PDOStatement|boolean Um objeto contendo todos os registros ou FALSE em caso de erro
  */
 public function getAfaDeAluno(Kernel_Models_Aluno $aluno, $tipo = FALSE, $subTipo = FALSE, FiltrosSistema $filtrosSistema = NULL)
 {
     $coordenador = new Kernel_Models_Coordenador();
     $query = "select afa.afa_conceito_aluno.*, " . "afa.afa_subtipo_anotacao.*, afa.afa_tipo_anotacao.*, " . "public.coordenacao.*, public.aula.fk_usuario_professor, " . "public.usuario_coordenador.tipo, " . "(case when pk_usuario_professor is not null then " . "(select public.usuario.nome from public.usuario " . "inner join public.usuario_professor on " . "public.usuario_professor.fk_usuario=" . "public.usuario.pk_usuario " . "where public.usuario_professor.pk_usuario_professor=" . "public.aula.fk_usuario_professor limit 1) " . "end) as nome_professor, " . "(case when fk_usuario_coordenador is not null then " . "(select public.usuario.nome from public.usuario " . "inner join public.usuario_coordenador on " . "public.usuario_coordenador.fk_usuario=" . "public.usuario.pk_usuario " . "where public.usuario_coordenador.pk_usuario_coordenador=" . "afa.afa_conceito_aluno.fk_usuario_coordenador limit 1) " . "end) as nome_coordenador, " . "(case ";
     //Adicionando a query todos os tipos de coordenação disponíveis
     foreach ($coordenador->getCoordTipos() as $cod => $tipoCoord) {
         $query .= "when tipo={$cod} then '{$tipoCoord}' ";
     }
     $query .= "end) as tipo_coordenador, " . "(select public.usuario.nome " . "from public.usuario WHERE " . "public.usuario.pk_usuario=" . "afa.afa_conceito_aluno.fk_usuario_inc limit 1) " . "as usuario_nome_insert, " . "(select public.tipo_usuario.tipo_usuario_nome " . "from public.tipo_usuario " . "inner join public.usuario_tipo_vin on " . "public.usuario_tipo_vin.fk_tipo_usuario=pk_tipo_usuario " . "WHERE " . "public.usuario_tipo_vin.fk_usuario=" . "afa.afa_conceito_aluno.fk_usuario_inc limit 1) " . "as usuario_grupo_insert " . "from afa.afa_conceito_aluno " . "inner join afa.afa_subtipo_anotacao on " . "afa.afa_subtipo_anotacao.pk_afa_subtipo_anotacao=" . "fk_afa_subtipo_anotacao " . "inner join afa.afa_tipo_anotacao on " . "afa.afa_tipo_anotacao.pk_afa_tipo_anotacao=" . "fk_afa_tipo_anotacao " . "left join public.coordenacao on " . "public.coordenacao.pk_coordenacao=" . "afa.afa_conceito_aluno.fk_coordenacao " . "inner join public.usuario_aluno on " . "public.usuario_aluno.pk_usuario_aluno=" . "afa.afa_conceito_aluno.fk_usuario_aluno " . "left join public.aula on public.aula.pk_aula=fk_aula " . "left join public.usuario_professor on " . "public.usuario_professor.pk_usuario_professor=" . "public.aula.fk_usuario_professor " . "left join public.usuario on " . "public.usuario.pk_usuario=" . "public.usuario_professor.fk_usuario " . "left join public.usuario_coordenador on " . "afa.afa_conceito_aluno.fk_usuario_coordenador=" . "public.usuario_coordenador.pk_usuario_coordenador " . "where " . "public.usuario_aluno.fk_usuario=" . $aluno->getId() . " ";
     //Filtrando por tipo e subtipo
     if (is_int($tipo)) {
         $query .= "and pk_afa_tipo_anotacao={$tipo} ";
     } elseif (is_array($tipo)) {
         if (Arrays::checarValores($tipo, FILTER_VALIDATE_INT)) {
             $query .= "and (pk_afa_tipo_anotacao=" . implode(" or pk_afa_tipo_anotacao=", $tipo) . ") ";
         }
     }
     if (is_int($subTipo)) {
         $query .= "and pk_afa_subtipo_anotacao={$subTipo} ";
     } elseif (is_array($subTipo)) {
         if (Arrays::checarValores($subTipo, FILTER_VALIDATE_INT)) {
             $query .= "and (pk_afa_subtipo_anotacao=" . implode(" or pk_afa_subtipo_anotacao=", $subTipo) . ") ";
         }
     }
     //Filtros do sistema de filtros
     if ($filtrosSistema instanceof FiltrosSistema) {
         //Filtragem por datas
         $query .= $filtrosSistema->validar(array("de")) ? "and afa.afa_conceito_aluno.data_evento>='" . $filtrosSistema->getDe() . "' " : "";
         $query .= $filtrosSistema->validar(array("ate")) ? "and afa.afa_conceito_aluno.data_evento<='" . $filtrosSistema->getAte() . "' " : "";
         if (!$filtrosSistema->validar(array("de")) || !$filtrosSistema->validar(array("ate"))) {
             $query .= "and extract(year from data_evento)=" . Loader::data("config", "site", "ano_letivo") . " ";
         }
     } else {
         $query .= "and extract(year from data_evento)=" . Loader::data("config", "site", "ano_letivo") . " ";
     }
     //Ordenando
     $query .= "order by(data_evento) desc";
     return $this->queryStatement($query);
 }
 /**
  * Método que retorna uma instância da classe Kernel_Models_Aluno de acorod com os dados informados
  * @param int $pkUsuario O código do aluno. Caso não seja informado, usa o código do usuário logado
  * @param string $objetoHerdado Caso seja informado, usa esa classe como classe de retorno.
  * Deve ser uma classe heredira da calsse Kernel_Models_Aluno
  * @return Kernel_Models_Aluno Um objeto contendo os dados do aluno informado
  * @throw Exception
  */
 public function getAluno($pkUsuario = 0, $objetoHerdado = false)
 {
     $tipoUsuario = $this->usuarioLogado->get_tipoUsuarioAtivo()->get_idTipoUsuario();
     //Caso o usuário logado seja do tipo "aluno"
     if ($tipoUsuario == Kernel_Models_TiposUsuario::TIPO_ALUNO) {
         $pkUsuario = $this->usuarioLogado->get_idUsuario();
     }
     //Impedindo o acesso sem informar um aluno qualquer
     if (!(int) $pkUsuario) {
         throw new Exception("O aluno informado é inválido");
     }
     //caso o usuário logado seja do tipo "responsavel"
     if ($tipoUsuario == Kernel_Models_TiposUsuario::TIPO_RESPONSAVEL) {
         $tmp = 0;
         //Impedindo o acesso a informações de dependentes de outros usuários
         $pers = $this->usuarioLogado->get_tipoUsuarioAtivo()->get_personalizacoes();
         foreach ($pers as $row) {
             foreach ($row->get_dependentes() as $alunoPer) {
                 if ($pkUsuario == $alunoPer->get_dep_pk_usuario()) {
                     $tmp++;
                     break;
                 }
             }
         }
         if (!$tmp) {
             throw new Exception("O aluno informado não esta configurado como seu dependente");
         }
     }
     //Criando instancia de aluno
     if (is_string($objetoHerdado)) {
         //Este trecho é executado quando um objeto especifico é informado
         //Verificando se a classe informada existe
         if (!class_exists($objetoHerdado)) {
             throw new Exception("Ocorreu um erro interno. Entre em contato com o administrador do sistema");
         }
         if (!in_array("Kernel_Models_Aluno", array_keys(class_parents($objetoHerdado)))) {
             throw new Exception("Ocorreu um erro interno. Entre em contato com o administrador do sistema");
         }
         //Verificando se a classe informada é herdeira de Kernel_Models_Aluno
         $alunoObj = new $objetoHerdado();
     } else {
         $alunoObj = new Kernel_Models_Aluno();
     }
     $aluno = $alunoObj->get((int) $pkUsuario);
     //Impedindo o acesso sem informar um aluno válido
     if (!$aluno) {
         throw new Exception("O aluno informado é inválido");
     }
     return $aluno;
 }