diff options
Diffstat (limited to 'Decompiler/Gestor.Application.ViewModels.Generic/DialogEnviarEmailsViewModel.cs')
| -rw-r--r-- | Decompiler/Gestor.Application.ViewModels.Generic/DialogEnviarEmailsViewModel.cs | 273 |
1 files changed, 273 insertions, 0 deletions
diff --git a/Decompiler/Gestor.Application.ViewModels.Generic/DialogEnviarEmailsViewModel.cs b/Decompiler/Gestor.Application.ViewModels.Generic/DialogEnviarEmailsViewModel.cs new file mode 100644 index 0000000..1a21d9a --- /dev/null +++ b/Decompiler/Gestor.Application.ViewModels.Generic/DialogEnviarEmailsViewModel.cs @@ -0,0 +1,273 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Threading.Tasks; +using Gestor.Application.Helpers; +using Gestor.Application.Servicos; +using Gestor.Common.Validation; +using Gestor.Model.Common; +using Gestor.Model.Domain.Common; +using Gestor.Model.Domain.Ferramentas; +using Gestor.Model.Domain.Generic; +using Gestor.Model.Domain.MalaDireta; +using Gestor.Model.Domain.Seguros; + +namespace Gestor.Application.ViewModels.Generic; + +public class DialogEnviarEmailsViewModel : BaseSegurosViewModel +{ + private ObservableCollection<MalaDireta> _listaTela = new ObservableCollection<MalaDireta>(); + + private string _infoEnvio = "CLIQUE EM ENVIAR PARA INCIAR O ENVIO"; + + private bool _assinatura { get; set; } + + private bool _original { get; set; } + + private List<ArquivoDigital> _arquivosAnexados { get; set; } + + private string _assunto { get; set; } + + private string _corpo { get; set; } + + private Credencial _credencial { get; set; } + + private FiltroArquivoDigital _filtro { get; set; } + + private bool _salvarAd { get; set; } + + private bool _confirmarLeitura { get; set; } + + public List<MalaDireta> Lista { get; set; } + + public ObservableCollection<MalaDireta> ListaTela + { + get + { + return _listaTela; + } + set + { + _listaTela = value; + OnPropertyChanged("ListaTela"); + } + } + + public string InfoEnvio + { + get + { + return _infoEnvio; + } + set + { + _infoEnvio = value; + OnPropertyChanged("InfoEnvio"); + } + } + + public DialogEnviarEmailsViewModel(List<MalaDireta> lista, bool assinatura, bool original, List<ArquivoDigital> arquivosAnexados, string assunto, string corpo, Credencial credencial, FiltroArquivoDigital filtro, bool salvarAd, bool confirmarLeitura) + { + lista.ForEach(delegate(MalaDireta x) + { + x.InfoEnvio = null; + }); + Lista = lista; + PrepararLista(); + _assinatura = assinatura; + _original = original; + _arquivosAnexados = arquivosAnexados; + _assunto = assunto; + _corpo = corpo; + _credencial = credencial; + _filtro = filtro; + _salvarAd = salvarAd; + _confirmarLeitura = confirmarLeitura; + } + + private void PrepararLista() + { + List<MalaDireta> listaTela = new List<MalaDireta>(); + Lista.ForEach(delegate(MalaDireta x) + { + listaTela.Add(x); + if (x.Copia != null) + { + listaTela.AddRange(((IEnumerable<string>)x.Copia.CopiaOculta).Select((Func<string, MalaDireta>)((string c) => new MalaDireta + { + Cliente = x.Cliente, + Email = c, + Enviado = x.Enviado, + InfoEnvio = x.InfoEnvio + })).ToList()); + } + }); + ListaTela = new ObservableCollection<MalaDireta>(listaTela); + } + + public void Enviar() + { + Enviar(_assinatura, _original, _arquivosAnexados, _assunto, _corpo, _credencial, _filtro, _salvarAd, _confirmarLeitura); + } + + private async void Enviar(bool assinatura, bool original, List<ArquivoDigital> arquivosAnexados, string assunto, string corpo, Credencial credencial, FiltroArquivoDigital filtro, bool salvarAd, bool confirmarLeitura) + { + Loading(isLoading: true); + InfoEnvio = "ENVIANDO, AGUARDE ATÉ O PROCESSO TERMINAR."; + await EnviarEmails(assinatura, original, arquivosAnexados, assunto, corpo, credencial, filtro, salvarAd, confirmarLeitura); + InfoEnvio = "TENTATIVA DE ENVIO CONCLUÍDA, CONFIRA O STATUS ABAIXO."; + Loading(isLoading: false); + } + + private async Task EnviarEmails(bool assinatura, bool original, List<ArquivoDigital> arquivosAnexados, string assunto, string corpo, Credencial credencial, FiltroArquivoDigital filtro, bool salvarAd, bool confirmarLeitura) + { + List<string> list = new List<string>(); + VariaveisMalaDireta[] array = (VariaveisMalaDireta[])Enum.GetValues(typeof(VariaveisMalaDireta)); + foreach (VariaveisMalaDireta val in array) + { + list.Add(ValidationHelper.GetEntity((Enum)(object)val)); + } + bool temVariaveis = list.Any(assunto.Contains) || list.Any(corpo.Contains) || Lista.Any((MalaDireta x) => x.ArquivoDigital != null && x.ArquivoDigital.Count > 0); + MailHelper mail = new MailHelper(); + bool parar = false; + if (salvarAd) + { + ArquivoDigitalServico arquivoServico = new ArquivoDigitalServico(); + foreach (MalaDireta x2 in Lista) + { + arquivosAnexados.ForEach(delegate(ArquivoDigital a) + { + //IL_0007: Unknown result type (might be due to invalid IL or missing references) + //IL_000d: Invalid comparison between Unknown and I4 + //IL_002f: Unknown result type (might be due to invalid IL or missing references) + //IL_0035: Invalid comparison between Unknown and I4 + //IL_0057: Unknown result type (might be due to invalid IL or missing references) + //IL_005d: Invalid comparison between Unknown and I4 + //IL_007f: Unknown result type (might be due to invalid IL or missing references) + //IL_0085: Invalid comparison between Unknown and I4 + //IL_00a7: Unknown result type (might be due to invalid IL or missing references) + //IL_00ae: Invalid comparison between Unknown and I4 + //IL_00d0: Unknown result type (might be due to invalid IL or missing references) + //IL_00d6: Invalid comparison between Unknown and I4 + a.IdCliente = (((int)x2.Tela == 1) ? ((DomainBase)x2.Cliente).Id : 0); + a.IdDocumento = (((int)x2.Tela == 2) ? ((DomainBase)x2.Apolice).Id : 0); + a.IdItem = (((int)x2.Tela == 3) ? ((DomainBase)x2.Item).Id : 0); + a.IdParcela = (((int)x2.Tela == 5) ? ((DomainBase)x2.Parcela).Id : 0); + a.IdProspeccao = (((int)x2.Tela == 33) ? ((DomainBase)x2.Prospeccao).Id : 0); + a.IdSinistro = (((int)x2.Tela == 7) ? ((DomainBase)x2.Sinistro).Id : 0); + a.IdEmpresa = Recursos.Usuario.IdEmpresa; + }); + List<IndiceArquivoDigital> ids = await arquivoServico.Insert(arquivosAnexados.ToList()); + if (arquivosAnexados.Any((ArquivoDigital arquivo) => arquivo.Arquivo == null)) + { + arquivosAnexados = await arquivoServico.Buscar(ids); + } + } + } + if (!string.IsNullOrWhiteSpace(credencial.Cabecalho)) + { + corpo = credencial.Cabecalho + corpo; + } + if (!string.IsNullOrWhiteSpace(credencial.Assinatura)) + { + corpo = corpo + "<br /><br />" + credencial.Assinatura; + } + if (!temVariaveis) + { + while (!parar) + { + List<MalaDireta> list2 = Lista.Where((MalaDireta x) => !x.Enviado.HasValue).Take(200).ToList(); + List<string> cco = list2.Select((MalaDireta x) => x.Email).ToList(); + list2.ForEach(delegate(MalaDireta x) + { + if (x.Copia != null) + { + cco.AddRange(x.Copia.CopiaComum); + cco.AddRange(x.Copia.CopiaOculta); + } + }); + cco = cco.Distinct().ToList(); + Destinatario destinatario = new Destinatario + { + Assunto = assunto, + Corpo = corpo, + Email = credencial.Email, + Nome = credencial.Descricao, + Encaminhar = new List<string>(), + EncaminharOculto = cco, + Anexos = arquivosAnexados.ToList() + }; + LogEnvio result = await mail.SendAsync(credencial, destinatario, filtro, Lista.ToList(), (TipoTela)0, confirmarLeitura); + List<MalaDireta> list3 = Lista.ToList(); + list3.ForEach(delegate(MalaDireta x) + { + x.Enviado = result.Enviado; + x.InfoEnvio = (result.Enviado ? "ENVIADO COM SUCESSO" : ("NÃO ENVIADO, ENTRE EM CONTATO COM SEU PROVEDOR/SERVIÇO DE E-MAIL E INFORME OS DADOS ABAIXO: \r\n" + result.Erro)); + }); + Lista = list3; + parar = Lista.All((MalaDireta x) => x.Enviado.HasValue); + } + } + else + { + for (int i = 0; i < Lista.Count; i++) + { + MalaDireta envio = Lista[i]; + List<ArquivoDigital> list5; + if (envio.ArquivoDigital != null) + { + List<ArquivoDigital> list4 = ((!(!assinatura || original)) ? (await ArquivoDigitalServico.Buscar(envio.ArquivoDigital.Where((IndiceArquivoDigital x) => string.IsNullOrWhiteSpace(x.UrlAssinatura)).ToList())) : (await ArquivoDigitalServico.Buscar(envio.ArquivoDigital.ToList()))); + list5 = list4; + } + else + { + list5 = new List<ArquivoDigital>(); + } + List<ArquivoDigital> arquivos = list5; + if (arquivosAnexados != null && arquivosAnexados.Count > 0) + { + arquivos.AddRange(arquivosAnexados); + } + if (((envio != null) ? envio.ArquivoDigital : null) == null) + { + int num; + if (envio == null) + { + num = 0; + } + else + { + Documento apolice = envio.Apolice; + num = ((((apolice != null) ? new long?(((DomainBase)apolice).Id) : null) > 0) ? 1 : 0); + } + if (num != 0) + { + MalaDireta val2 = envio; + val2.ArquivoDigital = await ArquivoDigitalServico.BuscarPorTipo((TipoArquivoDigital)2, ((DomainBase)envio.Apolice).Id); + } + } + Destinatario val3 = new Destinatario + { + Assunto = Funcoes.SubstituirVariaveis(assunto, envio), + Corpo = Funcoes.SubstituirVariaveis(corpo, envio), + Email = envio.Email + }; + Copia copia = envio.Copia; + val3.Encaminhar = ((copia != null) ? copia.CopiaComum : null); + Copia copia2 = envio.Copia; + val3.EncaminharOculto = ((copia2 != null) ? copia2.CopiaOculta : null); + val3.Nome = envio.Cliente.Nome; + val3.Anexos = arquivos; + Destinatario destinatario2 = val3; + List<MalaDireta> maladireta = new List<MalaDireta> { envio }; + LogEnvio val4 = await mail.SendAsync(credencial, destinatario2, filtro, maladireta, (TipoTela)0, confirmarLeitura); + envio.Enviado = val4.Enviado; + envio.InfoEnvio = (val4.Enviado ? "ENVIADO COM SUCESSO" : ("NÃO ENVIADO, ENTRE EM CONTATO COM SEU PROVEDOR/SERVIÇO DE E-MAIL E INFORME OS DADOS ABAIXO: \r\n" + val4.Erro)); + envio.ArquivoDigital = null; + Lista = Lista; + } + } + PrepararLista(); + } +} |