Início do cabeçalho do portal da UFERSA

Superintendência de Tecnologia da Informação e Comunicação - SUTIC

Procedimentos para acessar V Pesquisa Nacional de Perfil dos Graduandos das IFES pelo SIGAA

Tecnologia 16 de maio de 2018. Visualizações: 1126. Última modificação: 25/11/2024 17:10:07

É possível consultar se um estudante preencheu ou não a V Pesquisa Nacional de Perfil dos Graduandos das IFES através da API que foi disponibilizada. Para usá-la é bastante simples, basta acessar o link abaixo substituindo os seguintes parâmetros:

 

https://www.perfil.ufu.br/2018/backend/ifes/estudante_participacao/{codigo_acesso_ifes}/{e-MEC_IFES}/{cpf_do_discente}

 

codigo_acesso_ifes: O código de acesso da IFES

e-MEC_IFES: O código e-MEC da IFES disponível por consulta em: http://emec.mec.gov.br/

cpf_do_discente: O cpf do discente sem pontos ou traços

 

Existem duas possíveis respostas:

 

1º Discente não encontrado:

 

"data":[],"msg":{"fl_error":true,"fl_ok":false,"txt":"Estudante não Encontrado. CPF: <cpf_do_discente>, <e-MEC_IFES>, Código de Acesso: <codigo_de_acesso_ifes>"}}

 

OBS: Se o discente não foi encontrado nessa busca verifique se o CPF está com o 0 na frente dos números.

 

2º Discente encontrado:

 

{"data":{"identificacao":<cpf_do_discente>,"ifes":"<ifes>","dt_participacao_inicio":"2018-03-26 10:02:34","dt_participacao_fim":"2018-04-26 13:13:42","fl_participacao":true},"msg":{"fl_error":false,"fl_ok":true,"txt":""}}

 

No caso do discente encontrado, ele pode ter ou não preenchido a pesquisa. Se ele preencheu a pesquisa, o campo fl_participacao será true e, caso não tenha preenchido, o campo será false.

Tudo que devemos fazer então é verificar se o discente está na base de dados da Pesquisa e, se estiver, verificar se ele respondeu a pesquisa. Caso não tenha respondido, deve-se redirecioná-lo para a página do questionário. Os procedimentos a seguir foram efetuados no nosso sistema acadêmico SIGAA (versão 3.13.27):

Aqui na UFERSA nós realizamos a checagem se o discente respondeu a pesquisa por ocasião da matrícula e cada vez que ele tenta acessar a turma virtual, ou seja, o estudante precisa preencher a pesquisa para efetuar a matrícula. Esse tutorial tem como pressuposto que o seu ambiente de desenvolvimento esteja configurado e você esteja utlizando a ferramenta Eclipse:

 

1º Passo: Abra o eclipse e localize o arquivo MatriculaGraduacaoMBean.java

 

Para facilitar o processo use o atalho Crtl+Shift+r e digite MatriculaGraduacaoMBean.java

 

 

Ao fazer isso você vai abrir o arquivo onde é feita a matrícula dos discentes, que se parece com o seguinte:

 

 

2º Passo: Localize o método que é invocado quando o discente vai inciar a matrícula:

 

Vamos localizar agora o método que é chamado quando o discente clica para iniciar a matrícula:

Digite Crtl+o para localizar os métodos dentro de um arquivo .java e digite validarInicioSolicitacaoMatricula conforme a figura a seguir:

 

 

Clique para ir até o método. A seguir o código do método que é chamado quando o discente tenta solicitar a matrícula será exibido:

/**
 * Faz uma série de validações antes de dar inicio a matrícula do aluno
 * @throws DAOException
 */
 private void validarInicioSolicitacaoMatricula() throws DAOException {

if (getCalendarioParaMatricula() == null) clear();

if (SigaaSubsistemas.PORTAL_DISCENTE.equals(getSubSistema()) || SigaaSubsistemas.PORTAL_TURMA.equals(getSubSistema()) ){
 setSubSistemaAtual(SigaaSubsistemas.PORTAL_DISCENTE);
 discente = getUsuarioLogado().getDiscenteAtivo();
 getCurrentSession().setAttribute("nivel", discente.getNivel());
 }

/**
* AQUI COMEÇA AS ALTERAÇÕES
*/
/*
 * VERIFICAR SE DISCENTE PREENCHEU: V Pesquisa Nacional de Perfil dos Graduandos das IFES - 2018
 * sysaid:
 * Comentar caso a pesquisa não esteja mais sendo feita
 * */
 if (!preencheuPesquisaDiscente(discente)){
 addMensagemErro("Para continuar essa operação preencha a pesquisa discente, para preencher a pesquisa acesse </span> <a target='_blank' href='https://www.perfil.ufu.br/2018/questionario/'>https://www.perfil.ufu.br/2018/questionario/</a>.");

addMensagemInformation("<span style=\"font-weight: normal\">A pesquisa de perfil socioeconômico dos graduandos das IFES é um levantamento (survey) realizado pelo Fórum de Pró-reitores de Assuntos Estudantis desde 1996 com o "
 + "objetivo de descrever as caraterísticas médias (sócio, econômica e culturais) dos discentes das Instituições Federais de Ensino Superior, cumprindo o papel de instrumentalizar as "
 + "políticas de assistência estudantil através de diagnósticos, análises, acompanhamentos e avaliações. <b> Esta edição da pesquisa será censitária, ou seja, todos os estudantes da UFERSA "
 + "devem responder o questionário, o que nos dará um perfil mais exato possível dos nossos graduandos </b>. Esta decisão foi tomada pelos Reitores em reunião do dia 19 de dezembro de 2017,"
 + " durante o Fórum Pleno da ANDIFES, em Brasília.");
 return;
 }

 

Basicamente nós incluímos uma verificação para verificar se o discente preencheu ou não a pesquisa: if (!preencheuPesquisaDiscente(discente)){ nesse caso se o método preencheuPesquisaDiscente retornar false o sistema bloqueia a matrícula, incluindo a mensagem de erro:

 

addMensagemErro("Para continuar essa operação preencha a pesquisa discente, para preencher a pesquisa acesse </span> <a target='_blank' href='https://www.perfil.ufu.br/2018/questionario/'>https://www.perfil.ufu.br/2018/questionario/</a>.");

 

Importante: Para o SIGAA bloquear o processo é necessário incluir pelo menos uma mensagem de erro na pilha de erros.

 

Em seguida nós incluimos também uma mensagem de informação, explicando o motivo da pesquisa ser importante:

 

addMensagemInformation("<span style=\"font-weight: normal\">A pesquisa de perfil socioeconômico dos graduandos das IFES é um levantamento (survey) realizado pelo Fórum de Pró-reitores de Assuntos Estudantis desde 1996 com o "
 + "objetivo de descrever as caraterísticas médias (sócio, econômica e culturais) dos discentes das Instituições Federais de Ensino Superior, cumprindo o papel de instrumentalizar as "
 + "políticas de assistência estudantil através de diagnósticos, análises, acompanhamentos e avaliações. <b> Esta edição da pesquisa será censitária, ou seja, todos os estudantes da UFERSA "
 + "devem responder o questionário, o que nos dará um perfil mais exato possível dos nossos graduandos </b>. Esta decisão foi tomada pelos Reitores em reunião do dia 19 de dezembro de 2017,"
 + " durante o Fórum Pleno da ANDIFES, em Brasília.");

 

3º Passo: Incluir o método preencheuPesquisaDiscente(discente)

 

Para que essa alteração funcione de fato é necessário implementar o método preencheuPesquisaDiscente(discente) que vai indicar se o discente preencheu ou não a pesquisa. É nesse local que vamos fazer a requisição à API da pesquisa para verificar se o discente preencheu a pesquisa.

 

Importante

 

Esse método deve ser incluído no mesmo arquivo que estamos editando (MatriculaGraduacaoMBean.java) e ele vai ser invocado para executar a chamada à API. Esse método recebe um discente e retorna true ou false. Para realizarmos a chamada à API através da linguagem Java, usamos o pacote HttpClient (versão 4.5), que pode ser baixado em: http://hc.apache.org/downloads.cgi:

 

Ao baixar o pacote, você irá descompactá-lo em algum local na sua máquina, acessará a pasta lib (<seu caminho>\httpcomponents-client-4.5.5\lib) e verá os seguintes arquivos:

 

 

Todas essas libs são necessárias para realizar o processo. Para incluí-las no projeto do SIGAA você deve colocá-las no projeto LIBS dos projetos dos SIGS, dentro de LIBS->app-libs.jar, conforme a figura a seguir:

 

 

Ao fazer esse processo o Eclipse deve reconhecer o HttpClient

A seguir o método completo (Obs: para funcionar, deve-se substituir {codigo_acesso_ifes}/{e-MEC_IFES} pelos dados da sua instituição)

 

public boolean preencheuPesquisaDiscente(DiscenteAdapter discente){

boolean acesso = true;

String cpfDiscente = Formatador.getInstance().parseStringCPFCNPJ(Formatador.getInstance().formatarCPF_CNPJ(discente.getPessoa().getCpf_cnpj()));

String url = "https://www.perfil.ufu.br/2018/backend/ifes/estudante_participacao/{codigo_acesso_ifes}/{e-MEC_IFES}/"+cpfDiscente;

try{
 //HttpClient client = HttpClientBuilder.create().build();

HttpClient httpClient = HttpClients.custom()
 .setSSLSocketFactory(new SSLConnectionSocketFactory(SSLContexts.custom()
 .loadTrustMaterial(null, new TrustSelfSignedStrategy())
 .build()
 )
 ).build();

HttpGet request = new HttpGet(url);

// add request header
 //request.addHeader("User-Agent", USER_AGENT);
 HttpResponse response = httpClient.execute(request);

System.out.println("Response Code : "
 + response.getStatusLine().getStatusCode());

HttpEntity entity = response.getEntity();

if (entity != null) {
 String retSrc = EntityUtils.toString(entity);
 // parsing JSON
 JSONObject result = new JSONObject(retSrc); //Convert String to JSON Object

boolean estudanteEncontrado = result.getJSONObject("msg").getBoolean("fl_ok");

if (estudanteEncontrado){
 return result.getJSONObject("data").getBoolean("fl_participacao");
 }

}
 }
 catch (Exception e) {
 System.out.println(e.getMessage());
 }

return acesso;
 }

 

A lógica aqui é a seguinte:

Se o estudante não for encontrado na busca ele passa;

Se o estudante for encontrado na busca e respondeu ele passa;

Se o estudante for encontrado na busca e não respondeu ele bloqueia

 

Bloqueio em outros lugares

Caso você deseje realizar o bloqueio em outros lugares segue um exemplo usado quando o discente vai entrar na turma virtual. Localize o arquivo TurmaVirtualMBean.java no método entrar(): e inclua o seguinte código:

 

MatriculaGraduacaoMBean matriculaGraduacao = getMBean("matriculaGraduacao");
		
		if (isNotEmpty(getDiscenteUsuario()) && !matriculaGraduacao.preencheuPesquisaDiscente(getDiscenteUsuario())){
			addMensagemErro("Para preencher a pesquisa acesse </span> <a target='_blank' href='https://www.perfil.ufu.br/2018/questionario/'>https://www.perfil.ufu.br/2018/questionario/</a>.");
			
			addMensagemInformation("<span style=\"font-weight: normal\">A pesquisa de perfil socioeconômico dos graduandos das IFES é um levantamento (survey) realizado pelo Fórum de Pró-reitores de Assuntos Estudantis desde 1996 com o "
					+ "objetivo de descrever as caraterísticas médias (sócio, econômica e culturais) dos discentes das Instituições Federais de Ensino Superior, cumprindo o papel de instrumentalizar as "
					+ "políticas de assistência estudantil através de diagnósticos, análises, acompanhamentos e avaliações. <b> Esta edição da pesquisa será censitária, ou seja, todos os estudantes da UFERSA "
					+ "devem responder o questionário, o que nos dará um perfil mais exato possível dos nossos graduandos </b>. Esta decisão foi tomada pelos Reitores em reunião do dia 19 de dezembro de 2017,"
					+ " durante o Fórum Pleno da ANDIFES, em Brasília.");
			return null;
		}

 

Esse código é idêntico ao anterior, modificando somente os seguintes trechos:

MatriculaGraduacaoMBean matriculaGraduacao = getMBean("matriculaGraduacao");

No trecho acima criamos uma instância do MBean matriculaGraduacao para ter acesso aos métodos e

if (isNotEmpty(getDiscenteUsuario()) && !matriculaGraduacao.preencheuPesquisaDiscente(getDiscenteUsuario())){

E nesse outro verifica-se se o usuário é discente antes de realizar o processo, visto que a turma virtual também é acessada por docentes (evita erros do tipo NullPointerException).

 

Esse código pode ser utilizado em outros lugares do sistema para bloquear outras operações conforme sua preferência

 

É isso! Caso você tenha dúvidas no processo me envie um e-mail que eu irei responder suas dúvidas.

Autor: Alexandre Ádames Alves Pontes

Analista de Tecnologia da Informação – UFERSA

Email: alexandreadames@ufersa.edu.br