From 1f4e14b2e973ee7de337fd4866d9a5ceff5cb6d1 Mon Sep 17 00:00:00 2001 From: Lucas Faria Mendes Date: Mon, 30 Mar 2026 10:38:18 -0300 Subject: chore: location --- .../Generic/DialogEnviarEmailsViewModel.cs | 394 +++++++++++++++++++++ 1 file changed, 394 insertions(+) create mode 100644 Codemerx/Gestor.Application/ViewModels/Generic/DialogEnviarEmailsViewModel.cs (limited to 'Codemerx/Gestor.Application/ViewModels/Generic/DialogEnviarEmailsViewModel.cs') diff --git a/Codemerx/Gestor.Application/ViewModels/Generic/DialogEnviarEmailsViewModel.cs b/Codemerx/Gestor.Application/ViewModels/Generic/DialogEnviarEmailsViewModel.cs new file mode 100644 index 0000000..646d94e --- /dev/null +++ b/Codemerx/Gestor.Application/ViewModels/Generic/DialogEnviarEmailsViewModel.cs @@ -0,0 +1,394 @@ +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; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; + +namespace Gestor.Application.ViewModels.Generic +{ + public class DialogEnviarEmailsViewModel : BaseSegurosViewModel + { + private ObservableCollection _listaTela = new ObservableCollection(); + + private string _infoEnvio = "CLIQUE EM ENVIAR PARA INCIAR O ENVIO"; + + private List _arquivosAnexados + { + get; + set; + } + + private bool _assinatura + { + get; + set; + } + + private string _assunto + { + get; + set; + } + + private bool _confirmarLeitura + { + get; + set; + } + + private string _corpo + { + get; + set; + } + + private Credencial _credencial + { + get; + set; + } + + private FiltroArquivoDigital _filtro + { + get; + set; + } + + private bool _original + { + get; + set; + } + + private bool _salvarAd + { + get; + set; + } + + public string InfoEnvio + { + get + { + return this._infoEnvio; + } + set + { + this._infoEnvio = value; + base.OnPropertyChanged("InfoEnvio"); + } + } + + public List Lista + { + get; + set; + } + + public ObservableCollection ListaTela + { + get + { + return this._listaTela; + } + set + { + this._listaTela = value; + base.OnPropertyChanged("ListaTela"); + } + } + + public DialogEnviarEmailsViewModel(List lista, bool assinatura, bool original, List arquivosAnexados, string assunto, string corpo, Credencial credencial, FiltroArquivoDigital filtro, bool salvarAd, bool confirmarLeitura) + { + lista.ForEach((MalaDireta x) => x.set_InfoEnvio(null)); + this.Lista = lista; + this.PrepararLista(); + this._assinatura = assinatura; + this._original = original; + this._arquivosAnexados = arquivosAnexados; + this._assunto = assunto; + this._corpo = corpo; + this._credencial = credencial; + this._filtro = filtro; + this._salvarAd = salvarAd; + this._confirmarLeitura = confirmarLeitura; + } + + public void Enviar() + { + this.Enviar(this._assinatura, this._original, this._arquivosAnexados, this._assunto, this._corpo, this._credencial, this._filtro, this._salvarAd, this._confirmarLeitura); + } + + private async void Enviar(bool assinatura, bool original, List arquivosAnexados, string assunto, string corpo, Credencial credencial, FiltroArquivoDigital filtro, bool salvarAd, bool confirmarLeitura) + { + base.Loading(true); + this.InfoEnvio = "ENVIANDO, AGUARDE ATÉ O PROCESSO TERMINAR."; + await this.EnviarEmails(assinatura, original, arquivosAnexados, assunto, corpo, credencial, filtro, salvarAd, confirmarLeitura); + this.InfoEnvio = "TENTATIVA DE ENVIO CONCLUÍDA, CONFIRA O STATUS ABAIXO."; + base.Loading(false); + } + + private async Task EnviarEmails(bool assinatura, bool original, List arquivosAnexados, string assunto, string corpo, Credencial credencial, FiltroArquivoDigital filtro, bool salvarAd, bool confirmarLeitura) + { + int i; + List arquivoDigitals; + List arquivoDigitals1; + bool flag; + bool arquivoDigital; + List copiaComum; + List copiaOculta; + string str; + long? nullable; + bool valueOrDefault; + List strs = new List(); + VariaveisMalaDireta[] values = (VariaveisMalaDireta[])Enum.GetValues(typeof(VariaveisMalaDireta)); + for (i = 0; i < (int)values.Length; i++) + { + strs.Add(ValidationHelper.GetEntity(values[i])); + } + if (strs.Any(new Func(assunto.Contains)) || strs.Any(new Func(corpo.Contains))) + { + flag = true; + } + else + { + List lista = this.Lista; + flag = lista.Any((MalaDireta x) => { + if (x.get_ArquivoDigital() == null) + { + return false; + } + return x.get_ArquivoDigital().Count > 0; + }); + } + bool flag1 = flag; + Credencial credencial1 = credencial; + MailHelper mailHelper = new MailHelper(); + bool flag2 = false; + if (salvarAd) + { + Gestor.Application.Servicos.ArquivoDigitalServico arquivoDigitalServico = new Gestor.Application.Servicos.ArquivoDigitalServico(); + foreach (MalaDireta listum in this.Lista) + { + arquivosAnexados.ForEach((Gestor.Model.Domain.Common.ArquivoDigital a) => { + a.set_IdCliente((listum.get_Tela() == 1 ? listum.get_Cliente().get_Id() : (long)0)); + a.set_IdDocumento((listum.get_Tela() == 2 ? listum.get_Apolice().get_Id() : (long)0)); + a.set_IdItem((listum.get_Tela() == 3 ? listum.get_Item().get_Id() : (long)0)); + a.set_IdParcela((listum.get_Tela() == 5 ? listum.get_Parcela().get_Id() : (long)0)); + a.set_IdProspeccao((listum.get_Tela() == 33 ? listum.get_Prospeccao().get_Id() : (long)0)); + a.set_IdSinistro((listum.get_Tela() == 7 ? listum.get_Sinistro().get_Id() : (long)0)); + a.set_IdEmpresa(Recursos.Usuario.get_IdEmpresa()); + }); + List indiceArquivoDigitals = await arquivoDigitalServico.Insert(arquivosAnexados.ToList()); + List arquivoDigitals2 = arquivosAnexados; + if (!arquivoDigitals2.Any((Gestor.Model.Domain.Common.ArquivoDigital arquivo) => arquivo.get_Arquivo() == null)) + { + continue; + } + arquivoDigitals = await arquivoDigitalServico.Buscar(indiceArquivoDigitals); + arquivosAnexados = arquivoDigitals; + } + arquivoDigitalServico = null; + } + if (!string.IsNullOrWhiteSpace(credencial.get_Cabecalho())) + { + corpo = string.Concat(credencial.get_Cabecalho(), corpo); + } + if (!string.IsNullOrWhiteSpace(credencial.get_Assinatura())) + { + corpo = string.Concat(corpo, "

", credencial.get_Assinatura()); + } + if (flag1) + { + for (int j = 0; j < this.Lista.Count; j = i + 1) + { + MalaDireta item = this.Lista[j]; + if (item.get_ArquivoDigital() == null) + { + arquivoDigitals = new List(); + } + else + { + if (!(!assinatura | original)) + { + Gestor.Application.Servicos.ArquivoDigitalServico arquivoDigitalServico1 = this.ArquivoDigitalServico; + List arquivoDigital1 = item.get_ArquivoDigital(); + arquivoDigitals1 = await arquivoDigitalServico1.Buscar(( + from x in arquivoDigital1 + where string.IsNullOrWhiteSpace(x.get_UrlAssinatura()) + select x).ToList()); + } + else + { + arquivoDigitals1 = await this.ArquivoDigitalServico.Buscar(item.get_ArquivoDigital().ToList()); + } + arquivoDigitals = arquivoDigitals1; + } + List arquivoDigitals3 = arquivoDigitals; + if (arquivosAnexados != null && arquivosAnexados.Count > 0) + { + arquivoDigitals3.AddRange(arquivosAnexados); + } + MalaDireta malaDiretum = item; + if (malaDiretum != null) + { + arquivoDigital = malaDiretum.get_ArquivoDigital(); + } + else + { + arquivoDigital = false; + } + if (!arquivoDigital) + { + MalaDireta malaDiretum1 = item; + if (malaDiretum1 != null) + { + Documento apolice = malaDiretum1.get_Apolice(); + if (apolice != null) + { + nullable = new long?(apolice.get_Id()); + } + else + { + nullable = null; + } + long? nullable1 = nullable; + long num = (long)0; + valueOrDefault = nullable1.GetValueOrDefault() > num & nullable1.HasValue; + } + else + { + valueOrDefault = false; + } + if (valueOrDefault) + { + MalaDireta malaDiretum2 = item; + List indiceArquivoDigitals1 = await this.ArquivoDigitalServico.BuscarPorTipo(2, item.get_Apolice().get_Id()); + malaDiretum2.set_ArquivoDigital(indiceArquivoDigitals1); + malaDiretum2 = null; + } + } + Destinatario destinatario = new Destinatario(); + destinatario.set_Assunto(Funcoes.SubstituirVariaveis(assunto, item)); + destinatario.set_Corpo(Funcoes.SubstituirVariaveis(corpo, item)); + destinatario.set_Email(item.get_Email()); + Copia copia = item.get_Copia(); + if (copia != null) + { + copiaComum = copia.get_CopiaComum(); + } + else + { + copiaComum = null; + } + destinatario.set_Encaminhar(copiaComum); + Copia copium = item.get_Copia(); + if (copium != null) + { + copiaOculta = copium.get_CopiaOculta(); + } + else + { + copiaOculta = null; + } + destinatario.set_EncaminharOculto(copiaOculta); + destinatario.set_Nome(item.get_Cliente().get_Nome()); + destinatario.set_Anexos(arquivoDigitals3); + Destinatario destinatario1 = destinatario; + List malaDiretas = new List() + { + item + }; + LogEnvio logEnvio = await mailHelper.SendAsync(credencial, destinatario1, filtro, malaDiretas, 0, confirmarLeitura); + item.set_Enviado(new bool?(logEnvio.get_Enviado())); + MalaDireta malaDiretum3 = item; + str = (logEnvio.get_Enviado() ? "ENVIADO COM SUCESSO" : string.Concat("NÃO ENVIADO, ENTRE EM CONTATO COM SEU PROVEDOR/SERVIÇO DE E-MAIL E INFORME OS DADOS ABAIXO: \r\n", logEnvio.get_Erro())); + malaDiretum3.set_InfoEnvio(str); + item.set_ArquivoDigital(null); + this.Lista = this.Lista; + item = null; + arquivoDigitals3 = null; + i = j; + } + } + else + { + while (!flag2) + { + List lista1 = this.Lista; + List list = ( + from x in lista1 + where !x.get_Enviado().HasValue + select x).Take(200).ToList(); + List malaDiretas1 = list; + List list1 = ( + from x in malaDiretas1 + select x.get_Email()).ToList(); + list.ForEach((MalaDireta x) => { + if (x.get_Copia() == null) + { + return; + } + list1.AddRange(x.get_Copia().get_CopiaComum()); + list1.AddRange(x.get_Copia().get_CopiaOculta()); + }); + list1 = list1.Distinct().ToList(); + Destinatario destinatario2 = new Destinatario(); + destinatario2.set_Assunto(assunto); + destinatario2.set_Corpo(corpo); + destinatario2.set_Email(credencial1.get_Email()); + destinatario2.set_Nome(credencial1.get_Descricao()); + destinatario2.set_Encaminhar(new List()); + destinatario2.set_EncaminharOculto(list1); + destinatario2.set_Anexos(arquivosAnexados.ToList()); + Destinatario destinatario3 = destinatario2; + LogEnvio logEnvio1 = await mailHelper.SendAsync(credencial, destinatario3, filtro, this.Lista.ToList(), 0, confirmarLeitura); + LogEnvio logEnvio2 = logEnvio1; + List list2 = this.Lista.ToList(); + list2.ForEach((MalaDireta x) => { + x.set_Enviado(new bool?(logEnvio2.get_Enviado())); + x.set_InfoEnvio((logEnvio2.get_Enviado() ? "ENVIADO COM SUCESSO" : string.Concat("NÃO ENVIADO, ENTRE EM CONTATO COM SEU PROVEDOR/SERVIÇO DE E-MAIL E INFORME OS DADOS ABAIXO: \r\n", logEnvio2.get_Erro()))); + }); + this.Lista = list2; + List lista2 = this.Lista; + flag2 = lista2.All((MalaDireta x) => x.get_Enviado().HasValue); + } + } + this.PrepararLista(); + credencial1 = null; + mailHelper = null; + } + + private void PrepararLista() + { + List malaDiretas = new List(); + this.Lista.ForEach((MalaDireta x) => { + malaDiretas.Add(x); + if (x.get_Copia() == null) + { + return; + } + malaDiretas.AddRange(x.get_Copia().get_CopiaOculta().Select((string c) => { + MalaDireta malaDiretum = new MalaDireta(); + malaDiretum.set_Cliente(x.get_Cliente()); + malaDiretum.set_Email(c); + malaDiretum.set_Enviado(x.get_Enviado()); + malaDiretum.set_InfoEnvio(x.get_InfoEnvio()); + return malaDiretum; + }).ToList()); + }); + this.ListaTela = new ObservableCollection(malaDiretas); + } + } +} \ No newline at end of file -- cgit v1.2.3