diff options
Diffstat (limited to 'Decompiler/Gestor.Application.ViewModels.Ferramentas/MalaDiretaViewModel.cs')
| -rw-r--r-- | Decompiler/Gestor.Application.ViewModels.Ferramentas/MalaDiretaViewModel.cs | 660 |
1 files changed, 660 insertions, 0 deletions
diff --git a/Decompiler/Gestor.Application.ViewModels.Ferramentas/MalaDiretaViewModel.cs b/Decompiler/Gestor.Application.ViewModels.Ferramentas/MalaDiretaViewModel.cs new file mode 100644 index 0000000..7a47ab6 --- /dev/null +++ b/Decompiler/Gestor.Application.ViewModels.Ferramentas/MalaDiretaViewModel.cs @@ -0,0 +1,660 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; +using Gestor.Application.Helpers; +using Gestor.Application.Servicos; +using Gestor.Application.Servicos.Generic; +using Gestor.Application.Servicos.Seguros; +using Gestor.Application.ViewModels.Generic; +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.Ferramentas; + +public class MalaDiretaViewModel : BaseSegurosViewModel +{ + private readonly MalaDiretaServico _servico; + + private readonly FiltroArquivoDigital _filtro; + + private ObservableCollection<MalaDireta> _malaDireta = new ObservableCollection<MalaDireta>(); + + private ObservableCollection<ComboVariavel> _variaveis = new ObservableCollection<ComboVariavel>(); + + private bool _enableCredencial; + + private ObservableCollection<ComboModelo> _modelos = new ObservableCollection<ComboModelo>(); + + private ComboModelo _selectedModelo = new ComboModelo(); + + private ComboVariavel _selectedVariavel; + + private string _assunto; + + private string _corpo; + + private ObservableCollection<Credencial> _credenciais = new ObservableCollection<Credencial>(); + + private Credencial _selectedCredencial = new Credencial(); + + private ObservableCollection<IndiceArquivoDigital> _arquivos = new ObservableCollection<IndiceArquivoDigital>(); + + private ObservableCollection<ArquivoDigital> _arquivosAnexados = new ObservableCollection<ArquivoDigital>(); + + private ArquivoDigital _selectedAnexado = new ArquivoDigital(); + + private Visibility _visibilitySalvarAnexos = (Visibility)1; + + private bool _enviarOriginal; + + private bool _salvarArquivoDigital; + + private bool _assinatura; + + public bool _confirmarLeitura; + + public ObservableCollection<MalaDireta> MalaDireta + { + get + { + return _malaDireta; + } + set + { + _malaDireta = value; + OnPropertyChanged("MalaDireta"); + } + } + + public ObservableCollection<ComboVariavel> Variaveis + { + get + { + return _variaveis; + } + set + { + _variaveis = new ObservableCollection<ComboVariavel>(value.OrderBy((ComboVariavel x) => x.Indisponivel).ThenBy(delegate(ComboVariavel x) + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0006: Unknown result type (might be due to invalid IL or missing references) + VariaveisMalaDireta variaveisMalaDireta = x.VariaveisMalaDireta; + return ((object)(VariaveisMalaDireta)(ref variaveisMalaDireta)).ToString(); + })); + OnPropertyChanged("Variaveis"); + } + } + + public bool EnableCredencial + { + get + { + return _enableCredencial; + } + set + { + _enableCredencial = value; + OnPropertyChanged("EnableCredencial"); + } + } + + public ObservableCollection<ComboModelo> Modelos + { + get + { + return _modelos; + } + set + { + List<string> source = ((VariaveisMalaDireta[])Enum.GetValues(typeof(VariaveisMalaDireta))).Select((VariaveisMalaDireta variavel) => ValidationHelper.GetEntity((Enum)(object)variavel)).ToList(); + List<string> variaveisPermitidas = (from x in Variaveis + where !x.Indisponivel + select x into v + select ValidationHelper.GetEntity((Enum)(object)v.VariaveisMalaDireta)).ToList(); + List<ComboModelo> list = new List<ComboModelo>(); + foreach (ComboModelo item2 in value) + { + if (source.Where(item2.ModeloMalaDireta.Corpo.Contains).All((string s) => variaveisPermitidas.Contains(s))) + { + list.Add(item2); + continue; + } + ComboModelo item = new ComboModelo + { + ModeloMalaDireta = item2.ModeloMalaDireta, + Indisponivel = true + }; + list.Add(item); + } + _modelos = new ObservableCollection<ComboModelo>(from x in list + orderby x.Indisponivel, x.ModeloMalaDireta.Assunto + select x); + OnPropertyChanged("Modelos"); + } + } + + public ComboModelo SelectedModelo + { + get + { + return _selectedModelo; + } + set + { + _selectedModelo = value; + VerificarEnables((value != null) ? new long?(((DomainBase)value.ModeloMalaDireta).Id) : null); + WorkOnSelectedModelo(value?.ModeloMalaDireta); + OnPropertyChanged("SelectedModelo"); + } + } + + public ComboVariavel SelectedVariavel + { + get + { + return _selectedVariavel; + } + set + { + _selectedVariavel = value; + OnPropertyChanged("SelectedVariavel"); + } + } + + public string Assunto + { + get + { + return _assunto; + } + set + { + _assunto = value; + OnPropertyChanged("Assunto"); + } + } + + public string Corpo + { + get + { + return _corpo; + } + set + { + _corpo = value; + OnPropertyChanged("Corpo"); + } + } + + public ObservableCollection<Credencial> Credenciais + { + get + { + return _credenciais; + } + set + { + _credenciais = value; + OnPropertyChanged("Credenciais"); + } + } + + public Credencial SelectedCredencial + { + get + { + return _selectedCredencial; + } + set + { + _selectedCredencial = value; + OnPropertyChanged("SelectedCredencial"); + } + } + + public ObservableCollection<IndiceArquivoDigital> Arquivos + { + get + { + return _arquivos; + } + set + { + _arquivos = value; + OnPropertyChanged("Arquivos"); + } + } + + public ObservableCollection<ArquivoDigital> ArquivosAnexados + { + get + { + return _arquivosAnexados; + } + set + { + _arquivosAnexados = value; + OnPropertyChanged("ArquivosAnexados"); + } + } + + public ArquivoDigital SelectedAnexado + { + get + { + return _selectedAnexado; + } + set + { + _selectedAnexado = value; + OnPropertyChanged("SelectedAnexado"); + } + } + + public Visibility VisibilitySalvarAnexos + { + get + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + return _visibilitySalvarAnexos; + } + set + { + //IL_0001: Unknown result type (might be due to invalid IL or missing references) + //IL_0002: Unknown result type (might be due to invalid IL or missing references) + _visibilitySalvarAnexos = value; + OnPropertyChanged("VisibilitySalvarAnexos"); + } + } + + public bool EnviarOriginal + { + get + { + return _enviarOriginal; + } + set + { + _enviarOriginal = value; + OnPropertyChanged("EnviarOriginal"); + } + } + + public bool SalvarArquivoDigital + { + get + { + return _salvarArquivoDigital; + } + set + { + _salvarArquivoDigital = value; + OnPropertyChanged("SalvarArquivoDigital"); + } + } + + public bool Assinatura + { + get + { + return _assinatura; + } + set + { + _assinatura = value; + OnPropertyChanged("Assinatura"); + } + } + + public bool ConfirmarLeitura + { + get + { + return _confirmarLeitura; + } + set + { + _confirmarLeitura = value; + } + } + + public bool Enviado { get; set; } + + public MalaDiretaViewModel(FiltroArquivoDigital filtro = null) + { + //IL_0038: Unknown result type (might be due to invalid IL or missing references) + //IL_0042: Expected O, but got Unknown + //IL_0059: Unknown result type (might be due to invalid IL or missing references) + //IL_0063: Expected O, but got Unknown + //IL_0065: Unknown result type (might be due to invalid IL or missing references) + _servico = new MalaDiretaServico(); + _filtro = filtro; + BuscarCredenciais(); + } + + private async void BuscarCredenciais() + { + await PermissaoTela((TipoTela)39); + VerificarEnables(null); + Credenciais = new ObservableCollection<Credencial>((await new BaseServico().BuscarCredenciais()).OrderBy((Credencial x) => x.Descricao)); + EnableCredencial = !Restricao((TipoRestricao)110); + SelectedCredencial = (EnableCredencial ? (((IEnumerable<Credencial>)Credenciais).FirstOrDefault((Func<Credencial, bool>)((Credencial x) => x.IdUsuario == ((DomainBase)Recursos.Usuario).Id)) ?? Credenciais.FirstOrDefault()) : ((IEnumerable<Credencial>)Credenciais).FirstOrDefault((Func<Credencial, bool>)((Credencial x) => x.IdUsuario == ((DomainBase)Recursos.Usuario).Id))); + } + + private async Task CarregarModelos(ModeloMalaDireta modelo = null) + { + List<ModeloMalaDireta> obj = await _servico.BuscarModelos(); + List<ComboModelo> list = new List<ComboModelo>(); + foreach (ModeloMalaDireta item in obj) + { + list.Add(new ComboModelo + { + ModeloMalaDireta = item + }); + } + Modelos = new ObservableCollection<ComboModelo>(list); + if (modelo != null) + { + SelectedModelo = Modelos.FirstOrDefault((ComboModelo x) => ((DomainBase)x.ModeloMalaDireta).Id == ((DomainBase)modelo).Id); + } + } + + private void WorkOnSelectedModelo(ModeloMalaDireta value) + { + if (value != null) + { + Corpo = SelectedModelo.ModeloMalaDireta.Corpo; + Assunto = SelectedModelo.ModeloMalaDireta.Assunto; + } + } + + public async void Anexar() + { + List<ArquivoDigital> attacheds = ((IEnumerable<IndiceArquivoDigital>)Arquivos).Select((Func<IndiceArquivoDigital, ArquivoDigital>)((IndiceArquivoDigital x) => new ArquivoDigital + { + Descricao = x.Descricao, + Extensao = x.Extensao + })).ToList(); + List<ArquivoDigital> list = await AddAttachments(ArquivosAnexados.ToList(), attacheds); + if (list != null) + { + list.AddRange(ArquivosAnexados); + ArquivosAnexados = new ObservableCollection<ArquivoDigital>(list); + } + } + + public async Task<bool> Enviar() + { + if (string.IsNullOrWhiteSpace(Corpo) || string.IsNullOrWhiteSpace(Assunto)) + { + await ShowMessage("NECESSÁRIO CONTER ASSUNTO E MENSAGEM PARA PROSSEGUIR."); + return false; + } + if (SelectedCredencial == null || ((DomainBase)SelectedCredencial).Id == 0L) + { + await ShowMessage("NECESSÁRIO SELECIONAR O E-MAIL DE ENVIO PARA PROSSEGUIR."); + return false; + } + List<MalaDireta> list = MalaDireta.Where((MalaDireta x) => x.Selecionado).ToList(); + if (list.Count == 0) + { + await ShowMessage("NECESSÁRIO SELECIONAR AO MENOS UM DESTINATÁRIO PARA PROSSEGUIR."); + return false; + } + await ShowEnviarEmailsDialog(list, Assinatura, EnviarOriginal, ArquivosAnexados.ToList(), Assunto, Corpo, SelectedCredencial, _filtro, SalvarArquivoDigital, ConfirmarLeitura); + Enviado = true; + return true; + } + + public async Task CarregarEmails(List<MalaDireta> maladireta, string assunto = null, string corpo = null) + { + ClienteServico clienteServico = new ClienteServico(); + List<long> list = (from x in maladireta + where x.Cliente != null + select ((DomainBase)x.Cliente).Id).ToList(); + VisibilitySalvarAnexos = (Visibility)(list.Count > 1); + List<ClienteEmail> emails = await clienteServico.BuscarEmailsPorCliente(list); + List<MalaDireta> maladiretacompleta = new List<MalaDireta>(); + maladireta.ForEach(delegate(MalaDireta x) + { + //IL_0105: Unknown result type (might be due to invalid IL or missing references) + //IL_010b: Expected O, but got Unknown + //IL_0120: Unknown result type (might be due to invalid IL or missing references) + //IL_0125: Unknown result type (might be due to invalid IL or missing references) + //IL_013b: Unknown result type (might be due to invalid IL or missing references) + if (x.Cliente != null) + { + Assinatura = Assinatura || (x.ArquivoDigital != null && x.ArquivoDigital.Any((IndiceArquivoDigital a) => !string.IsNullOrEmpty(a.UrlAssinatura) && !a.Assinado)); + List<ClienteEmail> source = emails.Where((ClienteEmail e) => ((DomainBase)e.Cliente).Id == ((DomainBase)x.Cliente).Id).ToList(); + int index = 0; + source.OrderBy((ClienteEmail o) => o.Ordem.GetValueOrDefault()).ToList().ForEach(delegate(ClienteEmail e) + { + //IL_00c7: Unknown result type (might be due to invalid IL or missing references) + //IL_00cd: Expected O, but got Unknown + //IL_0051: Unknown result type (might be due to invalid IL or missing references) + //IL_0057: Expected O, but got Unknown + x.Selecionado = string.IsNullOrWhiteSpace(x.Email) && x.Cliente.MalaDireta.GetValueOrDefault(true); + if (index > 0) + { + MalaDireta val2 = new MalaDireta(); + DomainBase.Copy<MalaDireta, MalaDireta>(val2, x); + val2.Email = ((EmailBase)e).Email; + val2.Selecionado = false; + maladiretacompleta.Add(val2); + } + else + { + x.Email = ((EmailBase)e).Email; + x.Ordem = e.Ordem.GetValueOrDefault(); + MalaDireta val3 = new MalaDireta(); + DomainBase.Copy<MalaDireta, MalaDireta>(val3, x); + maladiretacompleta.Add(val3); + } + index++; + }); + } + if (x.Prospeccao != null) + { + MalaDireta val = new MalaDireta(); + x.Cliente = (Cliente)(((object)x.Cliente) ?? ((object)new Cliente + { + Nome = x.Prospeccao.Nome, + Documento = x.Prospeccao.Documento + })); + if (string.IsNullOrEmpty(x.Cliente.Documento)) + { + x.Cliente.Documento = x.Prospeccao.Documento; + } + x.Email = x.Prospeccao.Email; + x.Ordem = 0; + x.Selecionado = true; + DomainBase.Copy<MalaDireta, MalaDireta>(val, x); + maladiretacompleta.Add(val); + } + }); + MalaDireta = new ObservableCollection<MalaDireta>(from x in maladiretacompleta + orderby x.Cliente.Nome, x.Ordem + select x); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)18, indisponivel: false)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)0, indisponivel: false)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)1, indisponivel: false)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)2, indisponivel: false)); + Variaveis.Add(MalaDireta.Any((MalaDireta x) => x.Cliente.VencimentoHabilitacao.HasValue) ? new ComboVariavel((VariaveisMalaDireta)16, indisponivel: false) : new ComboVariavel((VariaveisMalaDireta)16, indisponivel: true)); + if (MalaDireta.Any((MalaDireta x) => x.Cliente.Nascimento.HasValue)) + { + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)14, indisponivel: false)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)15, indisponivel: false)); + } + else + { + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)14, indisponivel: true)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)15, indisponivel: true)); + } + Variaveis.Add(MalaDireta.Any((MalaDireta x) => x.ArquivoDigital != null && x.ArquivoDigital.Any((IndiceArquivoDigital z) => !string.IsNullOrWhiteSpace(z.UrlAssinatura))) ? new ComboVariavel((VariaveisMalaDireta)17, indisponivel: false) : new ComboVariavel((VariaveisMalaDireta)17, indisponivel: true)); + if (MalaDireta.All((MalaDireta x) => x.Apolice != null)) + { + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)3, indisponivel: false)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)4, indisponivel: false)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)7, indisponivel: false)); + Variaveis.Add(MalaDireta.Any((MalaDireta x) => x.Apolice.Vigencia2.HasValue) ? new ComboVariavel((VariaveisMalaDireta)8, indisponivel: false) : new ComboVariavel((VariaveisMalaDireta)8, indisponivel: true)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)19, indisponivel: false)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)23, indisponivel: false)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)24, indisponivel: false)); + if (MalaDireta.Any((MalaDireta x) => x.Apolice.Controle != null)) + { + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)5, indisponivel: false)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)6, indisponivel: false)); + } + else + { + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)5, indisponivel: true)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)6, indisponivel: true)); + } + } + else + { + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)19, indisponivel: true)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)3, indisponivel: true)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)4, indisponivel: true)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)7, indisponivel: true)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)8, indisponivel: true)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)5, indisponivel: true)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)6, indisponivel: true)); + } + if (MalaDireta.All((MalaDireta x) => x.Parcela != null)) + { + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)9, indisponivel: false)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)10, indisponivel: false)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)13, indisponivel: false)); + } + else + { + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)9, indisponivel: true)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)10, indisponivel: true)); + Variaveis.Add(new ComboVariavel((VariaveisMalaDireta)13, indisponivel: true)); + } + Variaveis.Add(MalaDireta.All((MalaDireta x) => x.Item != null) ? new ComboVariavel((VariaveisMalaDireta)11, indisponivel: false) : new ComboVariavel((VariaveisMalaDireta)11, indisponivel: true)); + Variaveis.Add(MalaDireta.All((MalaDireta x) => x.Sinistro != null) ? new ComboVariavel((VariaveisMalaDireta)12, indisponivel: false) : new ComboVariavel((VariaveisMalaDireta)12, indisponivel: true)); + Variaveis = new ObservableCollection<ComboVariavel>(Variaveis); + Variaveis.Add(MalaDireta.Any(delegate(MalaDireta x) + { + Documento apolice3 = x.Apolice; + if (apolice3 == null) + { + return false; + } + _ = apolice3.PremioLiquido; + return true; + }) ? new ComboVariavel((VariaveisMalaDireta)20, indisponivel: false) : new ComboVariavel((VariaveisMalaDireta)20, indisponivel: true)); + Variaveis.Add(MalaDireta.Any(delegate(MalaDireta x) + { + Documento apolice2 = x.Apolice; + if (apolice2 == null) + { + return false; + } + _ = apolice2.PremioTotal; + return true; + }) ? new ComboVariavel((VariaveisMalaDireta)21, indisponivel: false) : new ComboVariavel((VariaveisMalaDireta)21, indisponivel: true)); + Variaveis.Add(MalaDireta.Any(delegate(MalaDireta x) + { + Documento apolice = x.Apolice; + return apolice != null && apolice.FormaPagamento.HasValue; + }) ? new ComboVariavel((VariaveisMalaDireta)22, indisponivel: false) : new ComboVariavel((VariaveisMalaDireta)22, indisponivel: true)); + await CarregarModelos(); + if (assunto != null) + { + Assunto = assunto; + } + if (corpo != null) + { + Corpo = corpo; + } + } + + public void Selecionar() + { + MalaDireta.ToList().ForEach(delegate(MalaDireta x) + { + x.Selecionado = !x.Selecionado; + }); + MalaDireta = new ObservableCollection<MalaDireta>(MalaDireta); + } + + public void Delete(ArquivoDigital arquivo) + { + if (SelectedAnexado != null) + { + ArquivoDigital item = ArquivosAnexados.First((ArquivoDigital x) => x.Descricao == arquivo.Descricao); + ArquivosAnexados.Remove(item); + ArquivosAnexados = new ObservableCollection<ArquivoDigital>(ArquivosAnexados); + } + } + + public void Incluir() + { + SelectedModelo = new ComboModelo(); + Corpo = string.Empty; + Alterar(alterar: true); + } + + public void CancelarAlteracao() + { + Alterar(alterar: false); + SelectedModelo = null; + } + + public async Task<List<KeyValuePair<string, string>>> Salvar() + { + if (SelectedModelo == null) + { + SelectedModelo = new ComboModelo + { + ModeloMalaDireta = new ModeloMalaDireta + { + Assunto = Assunto, + Corpo = Corpo + } + }; + } + else + { + SelectedModelo.ModeloMalaDireta.Assunto = Assunto; + SelectedModelo.ModeloMalaDireta.Corpo = Corpo; + } + List<KeyValuePair<string, string>> list = SelectedModelo.ModeloMalaDireta.Validate(); + if (list.Count > 0) + { + return list; + } + ModeloMalaDireta modelo = await _servico.Save(SelectedModelo.ModeloMalaDireta); + if (!_servico.Sucesso) + { + return null; + } + Alterar(alterar: false); + await CarregarModelos(modelo); + ToggleSnackBar("MODELO SALVO COM SUCESSO"); + return null; + } + + public async void Excluir() + { + if (SelectedModelo != null && ((DomainBase)SelectedModelo.ModeloMalaDireta).Id != 0L && await ShowMessage("DESEJA REALMENTE EXCLUIR O MODELO?", "SIM", "NÃO") && await _servico.Delete(SelectedModelo.ModeloMalaDireta)) + { + RegistrarAcao("EXCLUIU MODELO " + SelectedModelo.ModeloMalaDireta.Assunto, ((DomainBase)SelectedModelo.ModeloMalaDireta).Id, (TipoTela)39); + await CarregarModelos(); + SelectedModelo = null; + ToggleSnackBar("MODELO EXCLUÍDO COM SUCESSO"); + } + } +} |