QuestionarioController.java 10.7 KB
package br.com.controller;

import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import javax.servlet.ServletContext;

import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.interceptor.multipart.UploadedFile;
import br.com.caelum.vraptor.validator.ValidationMessage;
import br.com.dao.AutorizacaoGeracaoHashDao;
import br.com.dao.QuestionarioDao;
import br.com.model.entity.Contato;
import br.com.model.entity.EnvioEmailSemAutenticacao;
import br.com.model.entity.Questionario;
import br.com.model.utilities.Email;
import br.com.model.utilities.ManagerProperties;
import br.com.model.utilities.StringHelper;
import br.com.util.DateUtil;
import br.com.util.GeradorCodigoHash;

@Resource
public class QuestionarioController {

  private Result result;
  private Validator validator;
  private ServletContext application;
  private String path;


  public QuestionarioController(Result result, Validator validator, ServletContext application) {

    this.result = result;
    this.validator = validator;
    this.application = application;
    this.path = this.application.getRealPath("") + "/WEB-INF/conexao.properties";
  }

  @Path("/questionario")
  public void questionario() {

  }
  
  @Path("/confirmacaoHash")
  public void confirmacaoHash(){
	  
  }
  

  @Path("/salvar-questionario")
  public void questionarioSalvar(String autorizacao, String noOrgao, String nomeResponsavel, String cargoResponsavel, String emailDestinoOrgao, String telefoneResponsavel,   UploadedFile file) {
       
    
    AutorizacaoGeracaoHashDao autorizacaoGeracaoHashDao = new AutorizacaoGeracaoHashDao();
    String mensagemEnvio = "";
    
    if(autorizacaoGeracaoHashDao.verificarAutorizacaoGeracaoHash(path, autorizacao))
    {
      String[] codigo = emailDestinoOrgao.split("@");
      String codigoHash = codigo[0] + DateUtil.dataHoraAtual().toString().replace("/", "").replace(" ", "").replace(":", "");
     
      
      Questionario questionario = new Questionario();
      // BufferedReader reader = new BufferedReader(new InputStreamReader(file.getFile()));

      ManagerProperties managerProperties = new ManagerProperties(); 
      
      String dtInicioQuestionario = "";
      String dtFimQuestionario = "";
      String hashAutenticacao = null;
      Properties prop = null;
      
      try {
        prop = managerProperties.getProp(this.application.getRealPath("") + "/WEB-INF/respostaFormulario.properties");
        
        dtInicioQuestionario  = prop.getProperty("dataInicio"); 
        dtFimQuestionario = prop.getProperty("dataFim");  
        hashAutenticacao = GeradorCodigoHash.gerarHash(codigoHash);
        
    } catch (IOException e) {     
        e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
      
      e.printStackTrace();
    }
      
      questionario.setDtInicioQuestionario(dtInicioQuestionario);
      questionario.setDtFimQuestionario(dtFimQuestionario);
      questionario.setEmailDestinoOrgao(emailDestinoOrgao);
      questionario.setHashAutenticacao(hashAutenticacao);
      questionario.setResponsavel(nomeResponsavel);
      questionario.setCargoResponsavel(cargoResponsavel);
      questionario.setTelefone(telefoneResponsavel);
      questionario.setNoOrgao(noOrgao);

      QuestionarioDao questionarioDao = new QuestionarioDao();
     // List<String> corpoEmail = new ArrayList<String>();
      if (questionarioDao.salvarQuestionario(path, file.getFile(), questionario)) {
        
        
        /* corpoEmail.add("Prezado(a),");
        corpoEmail.add("senhor(a) "+ nomeResponsavel +", " + cargoResponsavel + ", do "+ noOrgao +", conforme solicitado, o acesso ");
        corpoEmail.add("ao FAD para o preenchimento de informações sobre a atual situação da ");
        corpoEmail.add("acessibilidade dos ambientes digitais do seu órgão ou entidade deverá ser ");
        corpoEmail.add("realizado pelo endereço "+ prop.getProperty("enderecoFad") + " utilizando o código de ");
        corpoEmail.add("acesso: "+ hashAutenticacao +" .");
        corpoEmail.add("");
        corpoEmail.add("A guarda do código de acesso, bem como as informações prestadas são de sua ");
        corpoEmail.add("inteira responsabilidade.");
        corpoEmail.add("");
        corpoEmail.add("O FAD poderá ser preenchido no período "+ prop.getProperty("dataInicio") + " a "+ prop.getProperty("dataFim") +", data limite ");
        corpoEmail.add("para o envio do relatório circunstanciado (formulário de acessibilidade digital e plano de ");
        corpoEmail.add("trabalho) à Procuradoria Federal dos Direitos do Cidadão do Ministério Público Federal e ");
        corpoEmail.add("publicado no sítio ou portal eletrônico do órgão ou entidade.​");
        corpoEmail.add("");
        corpoEmail.add("Maiores informações, dúvidas e sugestões devem ser encaminhadas pelo canal ");
        corpoEmail.add(prop.getProperty("enderecoFad") + ".");
        corpoEmail.add("");
        corpoEmail.add("Respeitosamente,");
        corpoEmail.add("");
        corpoEmail.add("Ministério do Planejamento, Desenvolvimento e Gestão");
        corpoEmail.add("Secretaria de Tecnologia da Informação");
        corpoEmail.add("Departamento de Governo Digital ");
        corpoEmail.add("Coordenação-Geral de Padrões de Governo Digital");
        corpoEmail.add(prop.getProperty("emailContato"));
        corpoEmail.add("");
        
        String[] telefoneContato = prop.getProperty("telefoneContato").split(",");
        
        for (String numeroTelefone : telefoneContato) {
          corpoEmail.add(numeroTelefone);
        }*/
        
        StringBuffer mensagem = new StringBuffer();
        
        mensagem.append("Prezado(a),\n");
        mensagem.append("senhor(a) "+ nomeResponsavel +", " + cargoResponsavel + ", do "+ noOrgao +", conforme solicitado, o acesso \n");
        mensagem.append("ao FAD para o preenchimento de informações sobre a atual situação da \n");
        mensagem.append("acessibilidade dos ambientes digitais do seu órgão ou entidade deverá ser \n");
        mensagem.append("realizado pelo endereço "+ prop.getProperty("enderecoFad") + " utilizando o código de \n");
        mensagem.append("acesso: "+ hashAutenticacao +" .\n\n");
        
        mensagem.append("A guarda do código de acesso, bem como as informações prestadas são de sua \n");
        mensagem.append("inteira responsabilidade.\n\n");
        
        mensagem.append("O FAD poderá ser preenchido no período "+ prop.getProperty("dataInicio") + " a "+ prop.getProperty("dataFim") +", data limite \n");
        mensagem.append("para o envio do relatório circunstanciado (formulário de acessibilidade digital e plano de \n");
        mensagem.append("trabalho) à Procuradoria Federal dos Direitos do Cidadão do Ministério Público Federal e \n");
        mensagem.append("publicado no sítio ou portal eletrônico do órgão ou entidade.​\n\n");
                        
        mensagem.append("Maiores informações, dúvidas e sugestões devem ser encaminhadas pelo canal \n");
        mensagem.append(prop.getProperty("enderecoFad") + ".\n\n");
        
        mensagem.append("Respeitosamente,\n\n");
        
        mensagem.append("Ministério do Planejamento, Desenvolvimento e Gestão\n");
        mensagem.append("Secretaria de Tecnologia da Informação\n");
        mensagem.append("Departamento de Governo Digital \n");
        mensagem.append("Coordenação-Geral de Padrões de Governo Digital\n");
        mensagem.append(prop.getProperty("emailContato") + "\n");
        
        String[] telefoneContato = prop.getProperty("telefoneContato").split(",");
        
        for (String numeroTelefone : telefoneContato) {
          mensagem.append(numeroTelefone + "\n");
        }
        
        Contato contato = new Contato();
        contato.setEmail(emailDestinoOrgao);
        contato.setAssunto("Formulário Eletrônico de Acessibilidade Digital (FAD) – Concessão de Acesso");
        contato.setMensagem(StringHelper.convertFromUTF8(mensagem.toString()));
        contato.setNome(nomeResponsavel);

        if(enviarHashPorEmail(contato))
        {
          mensagemEnvio = "Questionário salvo e enviado por email com suceso!";        
        }else
        {
          mensagemEnvio = "Questionário salvo, mas não foi possível enviar email!";        
        }
        result.include("mensagemEnvio", mensagemEnvio);
        this.validator.add(new ValidationMessage("", ""));
        this.validator.onErrorUsePageOf(QuestionarioController.class).confirmacaoHash();
      }
      else
      {
        mensagemEnvio = "Não foi possível salvar o questionário!";
        result.include("mensagemEnvio", mensagemEnvio);
        this.validator.add(new ValidationMessage("", ""));
        this.validator.onErrorUsePageOf(QuestionarioController.class).confirmacaoHash();
      }
    }
    else
    {
      mensagemEnvio = "É preciso autorização para salvar gerar código Hash!";
      result.include("mensagemEnvio", mensagemEnvio);
      this.validator.add(new ValidationMessage("", ""));
      this.validator.onErrorUsePageOf(QuestionarioController.class).confirmacaoHash();
    }
    

  }

/*
  private String gerarCodigoHash() {
    String codigoHash = "";

    return codigoHash;
  }*/

  private boolean enviarHashPorEmail(Contato contato) {
    
    boolean emailEnviado = false;


    String respSendEmail;

    Email email = new Email(this.application.getRealPath("") + "/WEB-INF/mail.properties");

    EnvioEmailSemAutenticacao envioEmailSemAutenticacao =
        new EnvioEmailSemAutenticacao(email.getHost(), Integer.toString(email.getPort()));
       
    
    respSendEmail =
        envioEmailSemAutenticacao.sendMailComCopia(email.getFrom(), contato.getEmail(),
            StringHelper.convertFromUTF8(contato.getAssunto()),
            StringHelper.convertFromUTF8(contato.getMensagem()), email.getAuth(),
            email.getAuthUser(), email.getAuthPass(), email.getCopiaEmailTo());


    /*
     * String respSendEmail = email.sendEmail("Contato","govbr@planejamento.gov.br",
     * contato.getNome(),contato.getEmail(),StringHelper.convertFromUTF8(contato.getAssunto()),
     * StringHelper.convertFromUTF8(contato.getMensagem()), true);
     */

    if (respSendEmail.equals("")) {
      result.include("mensagem", "Mensagem enviada com Sucesso");
      result.include("status", "success");
      emailEnviado = true;

    } else {
      result.include("mensagem", "Não foi possível enviar a mensagem! Ocorreu o problema: "
          + respSendEmail);
      result.include("status", "error");
    }

    return emailEnviado;


  }

}