contatoController.java 5.61 KB
package br.com.controller;

import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletContext;

import org.apache.commons.mail.EmailException;

// import br.com.model.utilities.Validate;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
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.StringHelper;
import br.com.util.Validacao;

@Resource
@Path("/contato")
public class contatoController {


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

  public contatoController(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("/contato-site")
  public void contato() {

  }

  @Post("/confirmacao")
  public void confirmation(Contato contato) {

    Validacao validate = new Validacao();

    List<Validacao> mensagens = new ArrayList<Validacao>();

    mensagens = validate.ValidarContato(contato);

    if (mensagens.size() > 0) {
      result.include("mensagem", mensagens);
      result.include("status", "error");
      // this.validator.add(new ValidationMessage("", ""));
      this.validator.onErrorUsePageOf(contatoController.class).contato();

    } else {
      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.sendMailSemCopia(contato.getEmail(), email.getTo(),
              "Formulário Circunstanciado - " + contato.getAssunto(),
              StringHelper.convertFromUTF8(contato.getMensagem()), email.getAuth(),
              email.getAuthUser(), email.getAuthPass());


      /*
       * 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("")) {
        validate.setCampo("");
        validate.setMensagem("Mensagem enviada com Sucesso!");
        mensagens.add(validate);
        result.include("mensagem", mensagens);
        result.include("status", "success");
      } else {
        validate.setCampo("");
        validate.setMensagem("Não foi possível enviar a mensagem! Ocorreu o problema: "
            + respSendEmail);
        mensagens.add(validate);
        result.include("mensagem", mensagens);
        result.include("status", "error");
      }

    }
    this.result.redirectTo(contatoController.class).contato();
  }

  
  //Enviar email em massa para os órgãos
  public void enviarListaEmail(String autorizacao) {

    AutorizacaoGeracaoHashDao autorizacaoGeracaoHashDao = new AutorizacaoGeracaoHashDao();
    String mensagemEnvio = "";
    int idAutorizacaoGeracaoHash = -1;
    List<String> emailSucesso = new ArrayList<String>();
    List<String> emailFalhou = new ArrayList<String>();

    idAutorizacaoGeracaoHash =
        autorizacaoGeracaoHashDao.verificarAutorizacaoGeracaoHash(path, autorizacao);

    if (idAutorizacaoGeracaoHash > -1) {
      String respSendEmail;
      String assunto = "";
      StringBuffer corpoMensagem = new StringBuffer();


      QuestionarioDao questionarioDao = new QuestionarioDao();
      List<Questionario> lsQuestionario = new ArrayList<Questionario>();

      lsQuestionario = questionarioDao.retornarListaQuestionario(path);

      corpoMensagem.append("");
      corpoMensagem.append("");
      corpoMensagem.append("");
      corpoMensagem.append("");
      
      
      for (Questionario questionario : lsQuestionario) {

        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(),
                questionario.getEmailDestinoOrgao(), assunto, corpoMensagem.toString(),
                email.getAuth(), email.getAuthUser(), email.getAuthPass(), email.getCopiaEmailTo());

        if (respSendEmail.equals("")) {
          emailSucesso.add(questionario.getEmailDestinoOrgao());


        } else {
          emailFalhou.add(questionario.getEmailDestinoOrgao());
        }

      }

    } else {
      mensagemEnvio = "É preciso autorização para essa funcionalidade!";
    }

    result.include("mensagemEnvio", mensagemEnvio);
    result.include("emailSucesso", emailSucesso);
    result.include("emailFalhou", emailFalhou);

    this.validator.add(new ValidationMessage("", ""));
    this.validator.onErrorUsePageOf(QuestionarioController.class).confirmacaoHash();
  }
}