package br.com.controller; import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; 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; import br.com.util.Validacao; @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() { QuestionarioDao questionarioDao = new QuestionarioDao(); List lsquestionario = new ArrayList(); lsquestionario = questionarioDao.retornarListaQuestionario(path); result.include("lsquestionario", lsquestionario); result.include("totalSolicitacoes", lsquestionario.size()); } @Path("/confirmacaoHash") public void confirmacaoHash() { } @Path("/salvar-questionario") public void questionarioSalvar(String autorizacao, String noOrgao, String nomeResponsavel, String cargoResponsavel, String emailDestinoOrgao, String telefoneResponsavel, String dataRecebimentoEmail) { AutorizacaoGeracaoHashDao autorizacaoGeracaoHashDao = new AutorizacaoGeracaoHashDao(); String mensagemEnvio = ""; int idAutorizacaoGeracaoHash = -1; idAutorizacaoGeracaoHash = autorizacaoGeracaoHashDao.verificarAutorizacaoGeracaoHash(path, autorizacao); if (idAutorizacaoGeracaoHash > -1) { String[] codigo = emailDestinoOrgao.split("@"); String codigoHash = ""; 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); Validacao validate = new Validacao(); questionario.setDtRecebimentoEmail(dataRecebimentoEmail); questionario.setIdAutorizacaoGeracaoHash(idAutorizacaoGeracaoHash); QuestionarioDao questionarioDao = new QuestionarioDao(); // List corpoEmail = new ArrayList(); int idQuestionario = questionarioDao.salvarQuestionario(path, questionario); if (idQuestionario > -1) { StringBuffer mensagem = new StringBuffer(); mensagem.append("Prezado(a),
"); mensagem.append("

Senhor(a) " + nomeResponsavel + ", " + cargoResponsavel + ", do(a) " + noOrgao + ", conforme solicitado, o acesso "); mensagem.append("ao FAD para o preenchimento de informações sobre a atual situação da "); mensagem .append("acessibilidade dos ambientes digitais do seu órgão ou entidade deverá ser "); mensagem.append("realizado pelo endereço " + "" + prop.getProperty("enderecoFad") + "" + " utilizando o código de "); mensagem.append("acesso: " + hashAutenticacao + " .

"); mensagem .append("

A guarda do código de acesso, bem como as informações prestadas são de sua "); mensagem.append("inteira responsabilidade.

"); mensagem.append("

O FAD poderá ser preenchido no período " + DateUtil.dataHoraFormatadaDiaMesAno(prop.getProperty("dataInicio")) + " a " + DateUtil.dataHoraFormatadaDiaMesAno(prop.getProperty("dataFim")) + ", data limite "); mensagem .append("para o envio do relatório circunstanciado (formulário de acessibilidade digital e plano de "); mensagem .append("trabalho) à Procuradoria Federal dos Direitos do Cidadão do Ministério Público Federal e "); mensagem.append("publicado no sítio ou portal eletrônico do órgão ou entidade.​

"); mensagem .append("

Maiores informações, dúvidas e sugestões devem ser encaminhadas pelo canal "); mensagem.append("" + prop.getProperty("enderecoContato") + ".

"); mensagem.append("

Respeitosamente,

"); mensagem.append("

Ministério do Planejamento, Desenvolvimento e Gestão "); mensagem.append("Secretaria de Tecnologia da Informação "); mensagem.append("Departamento de Governo Digital "); mensagem.append("Coordenação-Geral de Padrões de Governo Digital "); mensagem.append(prop.getProperty("emailContato") + "
"); String[] telefoneContato = prop.getProperty("telefoneContato").split(","); for (String numeroTelefone : telefoneContato) { mensagem.append(numeroTelefone + "
"); } mensagem.append("

"); Contato contato = new Contato(); contato.setEmail(emailDestinoOrgao); contato .setAssunto("Formulário Eletrônico de Acessibilidade Digital (FAD) – Concessão de Acesso"); contato.setMensagem(mensagem.toString()); contato.setNome(nomeResponsavel); if (enviarHashPorEmail(contato)) { if(questionarioDao.atualizarDataRespostaQuestionario(path, idQuestionario)) { mensagemEnvio = "Questionário salvo e enviado por email com suceso!"; } else { mensagemEnvio = "Questionário salvo e enviado por email, mas, não foi possível atualizar a data de resposta!"; } } 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 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(), contato.getAssunto(), 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; } }