Esempio n. 1
0
        //Gerar Registro de contratação
        public void gerarContratacaoEmail(PlanoContratacao OPlanoContratacao)
        {
            List <string> listaEmails = new List <string>();
            List <string> listaCopias = new List <string>();

            listaEmails.Add(OPlanoContratacao.Pessoa.emailPrincipal);

            Dictionary <string, object> infosEmail = new Dictionary <string, object>();

            infosEmail["PlanoContratacao"] = (OPlanoContratacao as object);

            EnvioEmailAdapter EnvioEmail = EnvioPlanoContratacao.factory(HttpContextFactory.Current.User.idOrganizacao(), listaEmails, listaCopias);

            EnvioEmail.enviar(infosEmail, "");
        }
        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"));
        }