// 1 - carregar e-mails que devem ser copiados // 2 - Chamar servico de disparo de e-mail // 3 - Registrar o envio public void enviarEmail(List <NotificacaoSistemaEnvio> listaEnvios) { var listaIdsEnviados = new List <int>(); var listaIdsExcluidos = new List <int>(); foreach (var ONotificacaoEnvio in listaEnvios) { if (!UtilValidation.isEmail(ONotificacaoEnvio.email)) { listaIdsExcluidos.Add(ONotificacaoEnvio.id); continue; } var ORetorno = enviarEmail(ONotificacaoEnvio, ONotificacaoEnvio.ToEmailList()); //Regisrar o envio do e-mail if (!ORetorno.flagError) { listaIdsEnviados.Add(ONotificacaoEnvio.id); } if (ORetorno.flagError) { listaIdsExcluidos.Add(ONotificacaoEnvio.id); } } if (listaIdsEnviados.Any()) { db.NotificacaoSistemaEnvio.Where(x => listaIdsEnviados.Contains(x.id)) .Update(x => new NotificacaoSistemaEnvio() { dtEnvioEmail = DateTime.Now, flagEnvioEmail = true }); } if (listaIdsExcluidos.Any()) { db.NotificacaoSistemaEnvio.Where(x => listaIdsExcluidos.Contains(x.id)) .Update(x => new NotificacaoSistemaEnvio() { flagExcluido = true, motivoExclusao = "Os e-mails configurados não são válidos." }); } }
//Atributos //Servicos // public void enviarEmail(NotificacaoSistema ONotificacao, List <NotificacaoSistemaEnvio> listaEnvios) { var listaIdsEnviados = new List <int>(); var listaExcluidos = new List <UtilRetorno>(); foreach (var ONotificacaoEnvio in listaEnvios) { var listaEmailsEnvio = ONotificacaoEnvio.ToEmailList(); var flagEnviado = false; var ORetorno = UtilRetorno.newInstance(false); foreach (var stringEmail in listaEmailsEnvio) { ORetorno = this.enviarEmail(ONotificacao, ONotificacaoEnvio, new List <string> { stringEmail }); if (!ORetorno.flagError) { flagEnviado = true; continue; } ORetorno.info = ONotificacaoEnvio.id; } if (flagEnviado) { listaIdsEnviados.Add(ONotificacaoEnvio.id); } if (!flagEnviado) { listaExcluidos.Add(ORetorno); } } if (listaIdsEnviados.Any()) { db.NotificacaoSistemaEnvio.Where(x => listaIdsEnviados.Contains(x.id)) .Update(x => new NotificacaoSistemaEnvio() { dtEnvioEmail = DateTime.Now, flagEnvioEmail = true }); } if (listaExcluidos.Any()) { var idsEnviosExcluidos = listaExcluidos.Select(x => x.info.toInt()).Distinct().ToList(); var listaEnviosExcluidos = db.NotificacaoSistemaEnvio.Where(x => idsEnviosExcluidos.Contains(x.id)).ToList(); listaEnviosExcluidos.ForEach(x => { x.flagExcluido = true; x.motivoExclusao = listaExcluidos.FirstOrDefault(c => c.info.toInt() == x.id)?.listaErros?.FirstOrDefault() ?? "Os e-mails configurados não são válidos."; }); db.SaveChanges(); } var idsMembrosNotificados = listaEnvios.Where(x => listaIdsEnviados.Contains(x.id) && x.idReferencia > 0) .Select(x => x.idReferencia.toInt()) .ToList(); }
// 1 - carregar e-mails que devem ser copiados // 2 - Chamar servico de disparo de e-mail // 3 - Registrar o envio public void enviarEmail(List <NotificacaoSistemaEnvio> listaEnvios) { var listaIdsEnviados = new List <int>(); var listaIdsExcluidos = new List <int>(); var listaIdsRemovidos = new List <int>(); var idsAssociados = listaEnvios.Select(x => x.idReferencia.toInt()).ToList(); var listaAssociados = db.Associado.condicoesSeguranca().Where(x => idsAssociados.Contains(x.id)) .Select(x => new { x.id, x.idOrganizacao, Pessoa = new { x.Pessoa.nome, x.Pessoa.login } }) .ToListJsonObject <Associado>(); var ONotificacao = listaEnvios.FirstOrDefault().NotificacaoSistema; foreach (var ONotificacaoEnvio in listaEnvios) { var OAssociado = listaAssociados.FirstOrDefault(x => x.id == ONotificacaoEnvio.idReferencia); if (OAssociado == null) { listaIdsRemovidos.Add(ONotificacaoEnvio.id); continue; } if (!UtilValidation.isEmail(ONotificacaoEnvio.email)) { listaIdsExcluidos.Add(ONotificacaoEnvio.id); continue; } var ORetorno = enviarEmail(OAssociado, ONotificacao, ONotificacaoEnvio.ToEmailList()); //Regisrar o envio do e-mail if (!ORetorno.flagError) { listaIdsEnviados.Add(ONotificacaoEnvio.id); } if (ORetorno.flagError) { listaIdsExcluidos.Add(ONotificacaoEnvio.id); } } if (listaIdsEnviados.Any()) { db.NotificacaoSistemaEnvio.Where(x => listaIdsEnviados.Contains(x.id)) .Update(x => new NotificacaoSistemaEnvio() { dtEnvioEmail = DateTime.Now, flagEnvioEmail = true }); } if (listaIdsExcluidos.Any()) { db.NotificacaoSistemaEnvio.Where(x => listaIdsExcluidos.Contains(x.id)) .Update(x => new NotificacaoSistemaEnvio() { flagExcluido = true, motivoExclusao = "Os e-mails configurados não são válidos." }); } if (listaIdsRemovidos.Any()) { db.NotificacaoSistemaEnvio .Where(x => listaIdsRemovidos.Contains(x.id)) .Update(x => new NotificacaoSistemaEnvio() { flagExcluido = true, motivoExclusao = "O associado informado não existe ou não foi localizado." }); } }
// 1 - Carregar uma cobranca registrada // 2 - Carregar os dados da anuidade // 3 - carregar e-mails que devem ser copiados // 4 - Chamar servico de disparo de e-mail // 5 - Registrar o envio public void enviarEmail(List <NotificacaoSistemaEnvio> listaEnvios) { var idsAssociadosContribuicao = listaEnvios.Select(x => x.idReferencia).ToList(); var listaContribuicoes = this.OAssociadoContribuicaoResumoBL.listar(0, 0).Where(x => idsAssociadosContribuicao.Contains(x.id)).ToList(); var listaIdsEnviados = new List <int>(); var listaExcluidos = new List <UtilRetorno>(); var listaIdsRemovidos = new List <int>(); foreach (var ONotificacaoEnvio in listaEnvios) { var OAssociadoContribuicao = listaContribuicoes.FirstOrDefault(x => x.id == ONotificacaoEnvio.idReferencia); if (OAssociadoContribuicao == null) { listaIdsRemovidos.Add(ONotificacaoEnvio.id); continue; } var ORetorno = this.enviarEmail(ONotificacaoEnvio.NotificacaoSistema, OAssociadoContribuicao, ONotificacaoEnvio.ToEmailList()); if (!ORetorno.flagError) { listaIdsEnviados.Add(ONotificacaoEnvio.id); } if (ORetorno.flagError) { ORetorno.info = ONotificacaoEnvio.id; listaExcluidos.Add(ORetorno); } } if (listaIdsEnviados.Any()) { db.NotificacaoSistemaEnvio .Where(x => listaIdsEnviados.Contains(x.id)) .Update(x => new NotificacaoSistemaEnvio() { dtEnvioEmail = DateTime.Now, flagEnvioEmail = true }); } if (listaExcluidos.Any()) { var idsEnviosExcluidos = listaExcluidos.Select(x => x.info.toInt()).Distinct().ToList(); var listaEnviosExcluidos = db.NotificacaoSistemaEnvio.Where(x => idsEnviosExcluidos.Contains(x.id)).ToList(); listaEnviosExcluidos.ForEach(x => { x.flagExcluido = true; x.motivoExclusao = listaExcluidos.FirstOrDefault(c => c.info.toInt() == x.id)?.listaErros?.FirstOrDefault() ?? "Os e-mails configurados não são válidos."; }); db.SaveChanges(); } if (listaIdsRemovidos.Any()) { db.NotificacaoSistemaEnvio .Where(x => listaIdsRemovidos.Contains(x.id)) .Update(x => new NotificacaoSistemaEnvio() { flagExcluido = true, motivoExclusao = "A cobrança informada não existe ou não foi localizada." }); } }