@RequestMapping(
      value = {"consolidar/{idInscricao}"},
      method = RequestMethod.GET)
  public String consolidarInscricao(
      @PathVariable("idInscricao") Integer idInscricao,
      Model model,
      RedirectAttributes redirect,
      Authentication auth) {
    Inscricao inscricao = inscricaoRepository.findById(idInscricao);
    List<Selecao> selecoes = selecaoRepository.findAll();

    Aluno aluno = alunoRepository.findByCpf(auth.getName());

    if (aluno.equals(inscricao.getAluno())) {
      inscricao.setConsolidacao(true);
      inscricaoRepository.save(inscricao);
      redirect.addFlashAttribute(INFO, MENSAGEM_SUCESSO_INSCRICAO_CONSOLIDADA);

      model.addAttribute("selecoes", selecoes);
      redirect.addFlashAttribute(ABA_SELECIONADA, INSCRICAO_TAB);

      /*Runnable enviarEmail = new Runnable() {
      	@Override
      	public void run() {
      		Email email=new Email();
      		String from=FROM;
      		String to=inscricao.getAluno().getPessoa().getEmail();
      		String body = BODY;
      		email.setFrom(from);
      		email.setSubject(ASSUNTO);
      		email.setText(body);
      		email.setTo(to);

      		try {

      			emailService.sendEmail(email);

      		} catch (MessagingException e) {
      			e.printStackTrace();
      		}
      	}
      };*/

      /*Thread threadEnviarEmail = new Thread(enviarEmail);
      threadEnviarEmail.start();*/

      return REDIRECT_PAGINA_DETALHES_INSCRICAO + idInscricao;

    } else {
      redirect.addFlashAttribute(ERRO, MENSAGEM_FALTA_DE_PERMISSAO);

      return REDIRECT_PAGINA_ALUNO_LISTAR_SELECAO;
    }
  }
  @RequestMapping("detalhes/fotoAluno/{idInscricao}")
  public void pegarFotoAluno(
      @PathVariable("idInscricao") Integer idInscricao, HttpServletResponse response) {
    Inscricao inscricao = this.inscricaoRepository.findById(idInscricao);

    try {

      if (inscricao.getQuestionarioAuxilioMoradia() == null
          || inscricao.getQuestionarioAuxilioMoradia().getFoto() == null) {
        throw new FalhaCarregarImagemException();
      }

      response.setContentType("image/jpg");
      java.io.OutputStream out = response.getOutputStream();
      out.write(inscricao.getQuestionarioAuxilioMoradia().getFoto());
      out.flush();
    } catch (IOException e) {
      enviarImagemPadraoEmCasoDeErro(response);
    } catch (FalhaCarregarImagemException e) {
      enviarImagemPadraoEmCasoDeErro(response);
    }
  }
  @RequestMapping(
      value = {"detalhes/{idInscricao}"},
      method = RequestMethod.GET)
  public String detalhesInscricao(@PathVariable("idInscricao") Integer idInscricao, Model model) {

    Inscricao inscricao = inscricaoRepository.findById(idInscricao);
    Selecao selecao = inscricao.getSelecao();
    Date date = new Date();
    model.addAttribute(INSCRICAO, inscricao);
    model.addAttribute(USUARIO_ATIVO, inscricao.getAluno().getPessoa());
    model.addAttribute("pessoaDaFamilia", new PessoaFamilia());

    model.addAttribute(INSCRICAO, inscricao);
    model.addAttribute(USUARIO_ATIVO, inscricao.getAluno().getPessoa());

    // Verificando se alguma aba específica foi setada no redirect
    String nomeAba = (String) model.asMap().getOrDefault(ABA_SELECIONADA, null);

    if (nomeAba == null) {
      // Se nenhuma aba foi setada então a aba padrão é selecionada
      nomeAba = INSCRICAO_TAB;
    }

    model.addAttribute(ABA_SELECIONADA, nomeAba);

    String msgSucesso = (String) model.asMap().getOrDefault(INFO, null);

    if (msgSucesso != null) {
      model.addAttribute(INFO, msgSucesso);
    }

    if (inscricao.getEntrevista() != null) {
      model.addAttribute(ENTREVISTA, inscricao.getEntrevista());
    } else {
      model.addAttribute(ENTREVISTA, new Entrevista());
      model.addAttribute("grauParentesco", GrauParentesco.values());
      model.addAttribute("escolaridade", Escolaridade.values());
    }

    if (inscricao.getQuestionarioAuxilioMoradia() != null) {

      if (date.before(selecao.getDataInicio()) || date.after(selecao.getDataTermino())) {
        model.addAttribute(ESCONDER_BOTOES, true);
      } else {
        model.addAttribute(ESCONDER_BOTOES, false);
      }

      // Recebendo a mensagem recebida do redirect
      String msgAddDocumentos = (String) model.asMap().getOrDefault(INFO, null);

      if (msgAddDocumentos != null) {
        model.addAttribute(INFO, msgAddDocumentos);
      }

      return PAGINA_DETALHES_INSCRICAO;

    } else {

      return PAGINA_DETALHES_INICIACAO_ACADEMICA;
    }
  }