diff options
| author | Lucas Faria Mendes <lucas.fariamo08@gmail.com> | 2026-03-30 13:38:18 +0000 |
|---|---|---|
| committer | Lucas Faria Mendes <lucas.fariamo08@gmail.com> | 2026-03-30 13:38:18 +0000 |
| commit | 1f4e14b2e973ee7de337fd4866d9a5ceff5cb6d1 (patch) | |
| tree | e1c3b20ea08f0cf71122a1e73f0d395f8fd83874 /Codemerx/Gestor.Application/ViewModels/Generic/DialogEnviarEmailsViewModel.cs | |
| parent | 674ca83ba9243a9e95a7568c797668dab6aee26a (diff) | |
| download | gestor-1f4e14b2e973ee7de337fd4866d9a5ceff5cb6d1.tar.gz gestor-1f4e14b2e973ee7de337fd4866d9a5ceff5cb6d1.zip | |
chore: location
Diffstat (limited to 'Codemerx/Gestor.Application/ViewModels/Generic/DialogEnviarEmailsViewModel.cs')
| -rw-r--r-- | Codemerx/Gestor.Application/ViewModels/Generic/DialogEnviarEmailsViewModel.cs | 394 |
1 files changed, 394 insertions, 0 deletions
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<MalaDireta> _listaTela = new ObservableCollection<MalaDireta>();
+
+ private string _infoEnvio = "CLIQUE EM ENVIAR PARA INCIAR O ENVIO";
+
+ private List<Gestor.Model.Domain.Common.ArquivoDigital> _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<MalaDireta> Lista
+ {
+ get;
+ set;
+ }
+
+ public ObservableCollection<MalaDireta> ListaTela
+ {
+ get
+ {
+ return this._listaTela;
+ }
+ set
+ {
+ this._listaTela = value;
+ base.OnPropertyChanged("ListaTela");
+ }
+ }
+
+ public DialogEnviarEmailsViewModel(List<MalaDireta> lista, bool assinatura, bool original, List<Gestor.Model.Domain.Common.ArquivoDigital> 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<Gestor.Model.Domain.Common.ArquivoDigital> 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<Gestor.Model.Domain.Common.ArquivoDigital> arquivosAnexados, string assunto, string corpo, Credencial credencial, FiltroArquivoDigital filtro, bool salvarAd, bool confirmarLeitura)
+ {
+ int i;
+ List<Gestor.Model.Domain.Common.ArquivoDigital> arquivoDigitals;
+ List<Gestor.Model.Domain.Common.ArquivoDigital> arquivoDigitals1;
+ bool flag;
+ bool arquivoDigital;
+ List<string> copiaComum;
+ List<string> copiaOculta;
+ string str;
+ long? nullable;
+ bool valueOrDefault;
+ List<string> strs = new List<string>();
+ VariaveisMalaDireta[] values = (VariaveisMalaDireta[])Enum.GetValues(typeof(VariaveisMalaDireta));
+ for (i = 0; i < (int)values.Length; i++)
+ {
+ strs.Add(ValidationHelper.GetEntity(values[i]));
+ }
+ if (strs.Any<string>(new Func<string, bool>(assunto.Contains)) || strs.Any<string>(new Func<string, bool>(corpo.Contains)))
+ {
+ flag = true;
+ }
+ else
+ {
+ List<MalaDireta> lista = this.Lista;
+ flag = lista.Any<MalaDireta>((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<IndiceArquivoDigital> indiceArquivoDigitals = await arquivoDigitalServico.Insert(arquivosAnexados.ToList<Gestor.Model.Domain.Common.ArquivoDigital>());
+ List<Gestor.Model.Domain.Common.ArquivoDigital> arquivoDigitals2 = arquivosAnexados;
+ if (!arquivoDigitals2.Any<Gestor.Model.Domain.Common.ArquivoDigital>((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, "<br /><br />", 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<Gestor.Model.Domain.Common.ArquivoDigital>();
+ }
+ else
+ {
+ if (!(!assinatura | original))
+ {
+ Gestor.Application.Servicos.ArquivoDigitalServico arquivoDigitalServico1 = this.ArquivoDigitalServico;
+ List<IndiceArquivoDigital> arquivoDigital1 = item.get_ArquivoDigital();
+ arquivoDigitals1 = await arquivoDigitalServico1.Buscar((
+ from x in arquivoDigital1
+ where string.IsNullOrWhiteSpace(x.get_UrlAssinatura())
+ select x).ToList<IndiceArquivoDigital>());
+ }
+ else
+ {
+ arquivoDigitals1 = await this.ArquivoDigitalServico.Buscar(item.get_ArquivoDigital().ToList<IndiceArquivoDigital>());
+ }
+ arquivoDigitals = arquivoDigitals1;
+ }
+ List<Gestor.Model.Domain.Common.ArquivoDigital> 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<IndiceArquivoDigital> 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<MalaDireta> malaDiretas = new List<MalaDireta>()
+ {
+ 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<MalaDireta> lista1 = this.Lista;
+ List<MalaDireta> list = (
+ from x in lista1
+ where !x.get_Enviado().HasValue
+ select x).Take<MalaDireta>(200).ToList<MalaDireta>();
+ List<MalaDireta> malaDiretas1 = list;
+ List<string> list1 = (
+ from x in malaDiretas1
+ select x.get_Email()).ToList<string>();
+ 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<string>().ToList<string>();
+ 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<string>());
+ destinatario2.set_EncaminharOculto(list1);
+ destinatario2.set_Anexos(arquivosAnexados.ToList<Gestor.Model.Domain.Common.ArquivoDigital>());
+ Destinatario destinatario3 = destinatario2;
+ LogEnvio logEnvio1 = await mailHelper.SendAsync(credencial, destinatario3, filtro, this.Lista.ToList<MalaDireta>(), 0, confirmarLeitura);
+ LogEnvio logEnvio2 = logEnvio1;
+ List<MalaDireta> list2 = this.Lista.ToList<MalaDireta>();
+ 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<MalaDireta> lista2 = this.Lista;
+ flag2 = lista2.All<MalaDireta>((MalaDireta x) => x.get_Enviado().HasValue);
+ }
+ }
+ this.PrepararLista();
+ credencial1 = null;
+ mailHelper = null;
+ }
+
+ private void PrepararLista()
+ {
+ List<MalaDireta> malaDiretas = new List<MalaDireta>();
+ this.Lista.ForEach((MalaDireta x) => {
+ malaDiretas.Add(x);
+ if (x.get_Copia() == null)
+ {
+ return;
+ }
+ malaDiretas.AddRange(x.get_Copia().get_CopiaOculta().Select<string, MalaDireta>((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<MalaDireta>());
+ });
+ this.ListaTela = new ObservableCollection<MalaDireta>(malaDiretas);
+ }
+ }
+}
\ No newline at end of file |