summaryrefslogtreecommitdiff
path: root/Decompiler/Gestor.Application.ViewModels.Generic/DialogEnviarEmailsViewModel.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Decompiler/Gestor.Application.ViewModels.Generic/DialogEnviarEmailsViewModel.cs')
-rw-r--r--Decompiler/Gestor.Application.ViewModels.Generic/DialogEnviarEmailsViewModel.cs273
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();
+ }
+}