Exemplo n.º 1
0
 /**
  * Método que lista todos os registros de um determinado professor
  * @param Kernel_Models_Professor $professor Objeto referente ao professor relacionado aos registros. Por padrão retorna apenas os registros do ano atual
  * @param int|array|boolean $tipo Define como filtro o tipo do registro
  * @param int|array|boolean $subTipo Define como filtro o subtipo
  * @param FiltrosSistema $filtrosSistema Sistema de filtros do sistema
  * @return PDOStatement|boolean Retorna um objeto do tipo PDOStatement contendo a resposta da consulta ou FALSE em caso de erro
  */
 public function registrosDeProfessor(Kernel_Models_Professor $professor, $tipo = FALSE, $subTipo = FALSE, FiltrosSistema $filtrosSistema = NULL)
 {
     $coordenador = new Kernel_Models_Coordenador();
     $query = "select distinct on(fap.fap_registro.pk_fap_registro) " . "fap.fap_registro.*, fap.fap_subtipo.*, fap.fap_tipo.*, " . "public.usuario.nome as nome_coordenador, " . "public.usuario_coordenador.tipo, " . "public.usuario.pk_usuario as pk_coordenador, " . "(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=" . "fap.fap_registro.fk_usuario_inc limit 1) " . "as tipo_usuario, " . "(select public.coordenacao.coordenacao_nome " . "from public.tipo_usuario " . "inner join public.usuario_tipo_vin on " . "public.usuario_tipo_vin.fk_tipo_usuario=pk_tipo_usuario " . "inner join public.coordenacao_vin on " . "public.coordenacao_vin.fk_usuario_tipo_vin=" . "public.usuario_tipo_vin.pk_usuario_tipo_vin " . "inner join public.coordenacao on " . "public.coordenacao.pk_coordenacao=" . "public.coordenacao_vin.fk_coordenacao " . "WHERE public.usuario_tipo_vin.fk_usuario=" . "fap.fap_registro.fk_usuario_inc limit 1) " . "as tipo_coordenacao, " . "(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 " . "from fap.fap_registro " . "inner join fap.fap_subtipo on " . "fap.fap_subtipo.pk_fap_subtipo=" . "fk_fap_subtipo " . "inner join fap.fap_tipo on " . "fap.fap_tipo.pk_fap_tipo=" . "fk_fap_tipo " . "inner join public.usuario_coordenador on " . "public.usuario_coordenador.fk_usuario=fk_usuario_inc " . "inner join public.usuario_professor on " . "public.usuario_professor.pk_usuario_professor=" . "fk_usuario_professor " . "inner join public.usuario on " . "public.usuario.pk_usuario=fk_usuario_inc ";
     $query .= "where public.usuario_professor.fk_usuario=" . $professor->getId() . " ";
     if ($filtrosSistema instanceof FiltrosSistema) {
         if ($filtrosSistema->validar(array("de")) || $filtrosSistema->validar(array("ate"))) {
             //Filtrando o periodo
             $query .= $filtrosSistema->validar(array("de")) ? "and data_evento>='" . $filtrosSistema->getDe() . "' " : "";
             $query .= $filtrosSistema->validar(array("ate")) ? "and data_evento<='" . $filtrosSistema->getAte() . "' " : "";
         } else {
             $query .= "and extract(year from data_evento)=" . Loader::data("config", "site", "ano_letivo") . " ";
         }
         $query .= $filtrosSistema->validar(array("fapTipo")) ? "and pk_fap_tipo={$filtrosSistema->getFapTipo()} " : "";
     }
     //Filtrando os valores por tipo e subtipo
     if (is_int($tipo)) {
         $query .= "and pk_fap_tipo={$tipo} ";
     } elseif (is_array($tipo)) {
         if (Arrays::checarValores($tipo, FILTER_VALIDATE_INT)) {
             $query .= "and (pk_fap_tipo=" . implode(" or pk_fap_tipo=", $tipo) . ") ";
         }
     }
     if (is_int($subTipo)) {
         $query .= "and fk_fap_subtipo={$subTipo} ";
     } elseif (is_array($subTipo)) {
         if (Arrays::checarValores($subTipo, FILTER_VALIDATE_INT)) {
             $query .= "and (fk_fap_subtipo=" . implode(" or fk_fap_subtipo=", $subTipo) . ") ";
         }
     }
     $query .= "order by(pk_fap_registro) desc";
     return $this->queryStatement($query);
 }
Exemplo n.º 2
0
 /**
  * Método que retorna todas as anotações feitas pelo professor informado
  * @param Kernel_Models_Professor $professor
  * @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 Objeto contendo os filtros do sistema de filtros
  * @return PDOStatement|boolean Objeto contendo a resposta da consulta ou FALSE em caso de erro
  * @throws Exception Gera uma exceção ao introduzir dados inválidos,
  * como um professor não instanciado e etc
  */
 public function getAfaDeProfessor(Kernel_Models_Professor $professor, $tipo = FALSE, $subTipo = FALSE, FiltrosSistema $filtrosSistema = NULL)
 {
     $query = "select distinct on(afa.afa_conceito_aluno.pk_afa_conceito_aluno)" . "afa.afa_conceito_aluno.*, afa.afa_tipo_anotacao.*, " . "afa.afa_subtipo_anotacao.*, pk_turma, " . "public.usuario.pk_usuario as pk_aluno, " . "public.usuario_aluno.pk_usuario_aluno, " . "public.usuario.nome as aluno_nome, " . "public.turma.turma_nome " . "from afa.afa_conceito_aluno " . "inner join afa.afa_subtipo_anotacao on " . "pk_afa_subtipo_anotacao=fk_afa_subtipo_anotacao " . "inner join afa.afa_tipo_anotacao on " . "pk_afa_tipo_anotacao=fk_afa_tipo_anotacao " . "inner join public.aula on " . "public.aula.pk_aula=fk_aula " . "inner join public.usuario_professor on " . "pk_usuario_professor=public.aula.fk_usuario_professor " . "left join public.usuario_aluno on " . "pk_usuario_aluno=afa.afa_conceito_aluno.fk_usuario_aluno " . "left join public.usuario on " . "pk_usuario=public.usuario_aluno.fk_usuario " . "left join public.turma on " . "pk_turma=public.usuario_aluno.fk_turma " . "where public.usuario_professor.fk_usuario=" . $professor->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) . ") ";
         }
     }
     //Aplicando os filtros
     if ($filtrosSistema instanceof FiltrosSistema) {
         if ($filtrosSistema->validar(array("de")) || $filtrosSistema->validar(array("ate"))) {
             $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() . "' " : "";
         } else {
             $query .= "extract(year from afa.afa_conceito_aluno.data_evento)=" . Loader::data("config", "site", "ano_letivo") . " ";
         }
     }
     //Ordenando
     $query .= "order by(afa.afa_conceito_aluno.pk_afa_conceito_aluno) desc";
     return $this->queryStatement($query);
 }