QuestionarioController.java 5.66 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.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 emailDestinoOrgao, UploadedFile file, String noOrgao) {
       
    
    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;
      
      try {
        Properties prop = managerProperties.getProp(this.application.getRealPath("") + "/WEB-INF/intervaloRespostaFormulario.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.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!";        
        }
        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;


  }

}