public ActionResult criarNovoEmail(int?idEmailEncaminhamento, int?idEmailResposta) { var Config = ConfiguracaoEmailBL.getInstance.carregar(); EmailNovoVM ViewModel = new EmailNovoVM(); ViewModel.emailRemetente = Config.contaEmailSistema; //Se for uma resposta ou encaminhamento preencher campos padrão adicionando espaço para nova mensagem. int?idEmail = (idEmailEncaminhamento ?? idEmailResposta); var Email = this.OEmailBL.carregar(UtilNumber.toInt32(idEmail)); if (Email != null) { ViewModel.assunto = Email.assunto; ViewModel.corpoMensagem = String.Concat("<br /><br /><br />", "___________________________________________________________________________________", Email.corpoMensagem); //Se for uma resposta é necessário já selecionar o endereço de destino if (UtilNumber.toInt32(idEmailResposta) > 0) { ViewModel.listaDestinos.Add(Email.emailRemetente); } } return(View(ViewModel)); }
public ActionResult enviarEmail(EmailNovoVM ViewModel) { string nomeView = "criar-novo-email"; if (!ModelState.IsValid) { return(View(nomeView, ViewModel)); } var ConfiguracaoSistema = ConfiguracaoSistemaBL.getInstance.carregar(HttpContextFactory.Current.User.idOrganizacao()); LogEmail NovoEmail = new LogEmail(); NovoEmail.flagFluxo = EmailBL.FLAG_EMAIL_ENVIADO; NovoEmail.emailRemetente = ViewModel.emailRemetente; NovoEmail.nomeRemetente = ConfiguracaoSistema.tituloSistema; NovoEmail.assunto = ViewModel.assunto; NovoEmail.corpoMensagem = ViewModel.corpoMensagem; NovoEmail.dtEnvio = DateTime.Now; //Buscar dados completos dos contatos (se houver) List <string> listaEmails = new List <string>(); listaEmails.AddRange(ViewModel.listaDestinos); listaEmails.AddRange(ViewModel.listaCopias); listaEmails.AddRange(ViewModel.listaCopiasOcultas); var listaContatos = this.OEmailBL.listarContatos("").Where(x => listaEmails.Contains(x.email)).ToList(); ViewModel.listaDestinos.ForEach(x => { var Contato = listaContatos.Where(c => c.email == x).FirstOrDefault(); NovoEmail.listaEmailDestino.Add(new LogEmailDestino { nomeDestino = (Contato == null? "": Contato.nome), emailDestino = (Contato == null? x: Contato.email), flagCopia = "N", flagCopiaOculta = "N" }); }); ViewModel.listaCopias.ForEach(x => { var Contato = listaContatos.FirstOrDefault(c => c.email == x); NovoEmail.listaEmailDestino.Add(new LogEmailDestino { nomeDestino = (Contato == null? "": Contato.nome), emailDestino = (Contato == null? x: Contato.email), flagCopia = "S", flagCopiaOculta = "N" }); }); ViewModel.listaCopiasOcultas.ForEach(x => { var Contato = listaContatos.FirstOrDefault(c => c.email == x); NovoEmail.listaEmailDestino.Add(new LogEmailDestino { nomeDestino = (Contato == null? "": Contato.nome), emailDestino = (Contato == null? x: Contato.email), flagCopia = "N", flagCopiaOculta = "S" }); }); EnvioEmailAdapter EmailAdapter = EnvioCorreioInterno.factory(User.idOrganizacao(), ViewModel.listaDestinos, ViewModel.listaCopias, ViewModel.listaCopiasOcultas); var ORetorno = EmailAdapter.enviar(new Dictionary <string, object> { { "mensagem", NovoEmail.corpoMensagem } }, NovoEmail.assunto); if (ORetorno.flagError) { this.Flash(UtilMessage.TYPE_MESSAGE_ERROR, "Não foi possível enviar o e-mail!"); return(View(nomeView, ViewModel)); } if (!this.OEmailBL.salvarEmail(NovoEmail)) { this.Flash(UtilMessage.TYPE_MESSAGE_ERROR, "Houve um problema ao salvar o e-mail enviado!"); return(View(nomeView, ViewModel)); } return(Content("OK")); }