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

import java.io.IOException;
import java.security.NoSuchAlgorithmException;
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.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(String mensagemEnvio){
	  result.include("mensagemEnvio", mensagemEnvio);
  }
  

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

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

    QuestionarioDao questionarioDao = new QuestionarioDao();

    if (questionarioDao.salvarQuestionario(path, file.getFile(), questionario)) {
      Contato contato = new Contato();
      contato.setEmail(emailDestinoOrgao);
      contato.setAssunto("assunto");
      contato.setMensagem("Código Hash:" + hashAutenticacao);
      contato.setNome("nome");

      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!";        
      }
      this.validator.add(new ValidationMessage("", ""));
      this.validator.onErrorUsePageOf(QuestionarioController.class).confirmacaoHash(mensagemEnvio);
    }
  }

/*
  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;


  }

}