Example #1
0
 /**
  * Método usado para adicionar a coluna que informa o autor do registro
  *
  * @param string $indice A coluna referente ao apontador da tabela
  *
  * @return Select Um objeto Select contendo a coluna e o alias 
  *                para o retorno do usuário 
  */
 protected function usrAutor()
 {
     $t = $this->tg->getTabela();
     $select = new Select('  ');
     $sqlProf = new SqlProfessor();
     $sqlCoord = new SqlCoordenador();
     return $select->columns(array('afa_conceito_aluno_autor' => "(case when " . "{$t}.fk_usuario_coordenador=0 then (" . $sqlProf->select()->columnsReset()->columns("usuario||','||tipo_usuario||','||" . "funcao_usuario||','||usuario_professor")->where("pk_usuario_professor=public.aula.fk_usuario_professor " . "and public.tipo_usuario.pk_tipo_usuario=" . Perfil::PROFESSOR)->limit(1) . ") else (" . $sqlCoord->select()->columnsReset()->columns("usuario||','||tipo_usuario||','||" . "funcao_usuario||','||usuario_coordenador||','||coordenacao")->where("pk_usuario_coordenador=afa.afa_conceito_aluno.fk_usuario_coordenador " . "and public.tipo_usuario.pk_tipo_usuario=" . Perfil::COORDENADOR)->limit(1) . ") end)"));
 }
Example #2
0
 /**
  * Método que lista os professores de acordo com os filtros e 
  * usuários logado
  * 
  * @param Filtros $filtros Objeto do sistema de filtros
  * @param Usuario $usrFiltro Caso seja informado, usao o usuário como controle de acesso
  * 
  * @return ResultSetHydrator Um objeto contendo os dados da resposta
  */
 public function listar(Filtros $filtros, Usuario $usrFiltro = null)
 {
     $sqlProfessor = new SqlProfessor();
     if ($usrFiltro instanceof Usuario) {
         $usuario = $usrFiltro;
     } else {
         $usuario = $this->usuarioLogado;
     }
     switch ($usuario->getPerfil()->getId()) {
         case Perfil::ADMIN:
         case Perfil::GESTOR:
             return $sqlProfessor->listarTodos($filtros);
         case Perfil::COORDENADOR:
             return $sqlProfessor->deCoordenador($usuario, $filtros);
             //Este trecho foi adicionado por causa de um problema de
             //disparidade entre coordenadores
             //                return $sqlProfessor->listarTodos($filtros);
         //Este trecho foi adicionado por causa de um problema de
         //disparidade entre coordenadores
         //                return $sqlProfessor->listarTodos($filtros);
         default:
             throw new UsuarioException("Você não tem acesso a estes dados");
     }
 }
 /**
  * Método que gera uma consulta genérica para so geral da classe.
  *
  * @return Select Uma consulta genérica
  */
 public function select()
 {
     //Objetos responsáveis pelas consultas auxiliares
     $select = new Select();
     //Definindo as subconsultas
     $ia = "(SELECT indicadorgeral_cat FROM fap.pes_process_indicadoresgerais_cat " . "WHERE fk_usuario_professor=pk_usuario_professor " . "order by (fk_pesquisa_cat) desc LIMIT 1)";
     $ic = "(SELECT indicador_geral_professor FROM fap.par_respostas_indicadores_gerais " . "WHERE fk_usuario_professor=pk_usuario_professor " . "order by (fk_par_pesquisa) desc LIMIT 1)";
     $ir = "(SELECT score FROM fap.fap_registro " . "WHERE fk_usuario_professor=pk_usuario_professor " . "and extract(year from data_evento)={$this->anoLetivo} " . "order by (fap.fap_registro.pk_fap_registro) desc LIMIT 1)";
     $lastIa = "(SELECT max(fk_pesquisa_cat) FROM fap.pes_process_indicadoresgerais_cat " . "WHERE fap.pes_process_indicadoresgerais_cat.fk_usuario_professor=pk_usuario_professor )";
     $materiaId = "(SELECT max(fk_materia_mae) FROM public.materia " . "INNER JOIN public.materia_vin on pk_materia=fk_materia " . "INNER JOIN public.grade on fk_materia_vin=pk_materia_vin " . "WHERE public.grade.fk_usuario_professor=pk_usuario_professor )";
     $fapT = "SELECT count(pk_fap_registro) FROM fap.fap_registro " . "INNER JOIN fap.fap_subtipo on pk_fap_subtipo=fk_fap_subtipo " . "WHERE pk_usuario_professor=fk_usuario_professor " . "and fk_fap_tipo=";
     $fapS = "SELECT count(pk_fap_registro) FROM fap.fap_registro " . "WHERE pk_usuario_professor=fk_usuario_professor " . "and extract(year from data_evento)={$this->anoLetivo} " . "and fk_fap_subtipo=";
     $afa = "SELECT count(pk_afa_conceito_aluno) FROM afa.afa_conceito_aluno " . "INNER JOIN afa.afa_subtipo_anotacao on pk_afa_subtipo_anotacao=fk_afa_subtipo_anotacao " . "INNER JOIN public.aula on pk_aula=fk_aula " . "WHERE pk_usuario_professor=fk_usuario_professor " . "and extract(year from data_evento)={$this->anoLetivo} " . "and fk_afa_tipo_anotacao=";
     $aulaTmp = $select->reset()->from("public.aula")->columns("pk_aula");
     $where = "pk_usuario_professor=fk_usuario_professor";
     $aulaTmp->where($where);
     $aula = new Select(array("aula" => $aulaTmp->distinct("pk_aula")));
     $aula->columns("count(pk_aula)");
     //Objeto responsável pela consulta principal
     $selectProf = parent::select();
     return $selectProf->distinct("pk_usuario")->columns(array("last_ia" => $lastIa, "materia_id" => $materiaId, "ia" => $ia, "ic" => $ic, "ir" => $ir, "aulas" => $aula, "afa_p" => "({$afa}" . TipoAfa::TIPO_POSITIVO . ")", "afa_n" => "({$afa}" . TipoAfa::TIPO_NEGATIVO . ")", "fap_aten" => "({$fapT}" . TipoFap::TIPO_ATENDIMENTO . ")", "fap_fj" => "({$fapS}" . SubtipoFap::SUB_TIPO_FALTA_JUSTIFICADA . ")", "fap_fnj" => "({$fapS}" . SubtipoFap::SUB_TIPO_FALTA_N_JUSTIFICADA . ")", "fap_fl" => "({$fapS}" . SubtipoFap::SUB_TIPO_LICENCA . ")", "fap_a" => "({$fapT}" . TipoFap::TIPO_ATRASO . ")"));
 }
Example #4
0
 /**
  * Método que retorna o professor infromado. Se o usuário logado 
  * for professor,
  * retorna uma instância contendo os dados do usuário logado.
  *
  * @param int       $id             O código do professor pedido
  * @param Professor $especializacao Caso seja informada, usa a 
  *                                  classe como modelo de retorno
  *
  * @return Professor Um objeto contendo os dados do professor
  *
  * @throws UsuarioException
  */
 public function getProgfessor($id, Professor $especializacao = null)
 {
     //Definindo o modelo de retorno
     $sqlUsuario = new SqlProfessor();
     $professor = new Professor();
     $profReturn = null;
     if (!is_null($especializacao)) {
         $professor = $especializacao;
     }
     $professor->setId($id);
     //Fazendo as consultas de acordo com usuário logado
     if ($this->perfilLogado == Perfil::ADMIN || $this->perfilLogado == Perfil::GESTOR) {
         //Fazendo a consulta para néveis de acesso mais alto
         $profReturn = $sqlUsuario->get($id, $professor);
     } elseif ($this->perfilLogado == Perfil::PROFESSOR) {
         //Fazendo a consulta para o proprio usuário logado
         $profReturn = $this->usuarioLogado();
     } elseif ($this->perfilLogado == Perfil::COORDENADOR) {
         //Buscado levando em concideração o coordenador logado
         $coordenador = new Coordenador($this->idLogado);
         $profReturn = $sqlUsuario->getDeCoordenador($coordenador, $professor);
     } else {
         //O tipo logado não pode visualizar professores
         throw new UsuarioException('Você não tem acesso aos ' . 'dados deste usuário');
     }
     return $profReturn;
 }