using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Windows; using System.Windows.Controls; using Assinador.Infrastructure.Helpers; using Gestor.Application.Helpers; using Gestor.Application.Servicos.Seguros; using Gestor.Application.ViewModels.Generic; using Gestor.Application.Views.Ferramentas; using Gestor.Application.Views.Generic; using Gestor.Model.Common; using Gestor.Model.Domain.Generic; using Gestor.Model.Domain.Seguros; namespace Gestor.Application.ViewModels.Ferramentas; public class ProtocoloDocumentosViewModel : BaseSegurosViewModel { private Cliente _selectedCliente = new Cliente(); private ObservableCollection _apolicesFiltradas = new ObservableCollection(); private ObservableCollection _apolicesAdicionadas = new ObservableCollection(); private FiltroStatusDocumento _selectedStatus; public Cliente SelectedCliente { get { return _selectedCliente; } set { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Invalid comparison between Unknown and I4 _selectedCliente = value; if (SelectedCliente != null && ((DomainBase)SelectedCliente).Id != 0L && (LastAccessId != ((DomainBase)SelectedCliente).Id || (int)LastAccessTela != 59)) { SelecionarDocumentos(); LastAccessId = ((DomainBase)SelectedCliente).Id; LastAccessTela = (TipoTela)59; } OnPropertyChanged("SelectedCliente"); } } public ObservableCollection ApolicesFiltradas { get { return _apolicesFiltradas; } set { _apolicesFiltradas = value; OnPropertyChanged("ApolicesFiltradas"); } } public ObservableCollection ApolicesAdicionadas { get { return _apolicesAdicionadas; } set { _apolicesAdicionadas = value; OnPropertyChanged("ApolicesAdicionadas"); } } public FiltroStatusDocumento SelectedStatus { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _selectedStatus; } 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) _selectedStatus = value; SelectedCliente = SelectedCliente; SelecionarDocumentos(); OnPropertyChanged("SelectedStatus"); } } public async void SelecionarDocumentos() { Loading(isLoading: true); if (SelectedCliente == null) { Loading(isLoading: false); return; } ApolicesFiltradas = await new ApoliceServico().BuscarApolicesComissao(((DomainBase)SelectedCliente).Id, SelectedStatus); ProtocoloDocumentosViewModel protocoloDocumentosViewModel = this; string arg = (((int)SelectedStatus == 4) ? "TODOS OS DOCUMENTOS" : ("OS " + Functions.GetDescription((Enum)(object)SelectedStatus))); Cliente selectedCliente = SelectedCliente; string arg2 = ((selectedCliente != null) ? selectedCliente.Nome : null); Cliente selectedCliente2 = SelectedCliente; protocoloDocumentosViewModel.RegistrarAcao($"CONSULTOU {arg} DO CLIENTE {arg2} ({((selectedCliente2 != null) ? new long?(((DomainBase)selectedCliente2).Id) : null)})", (SelectedCliente == null) ? 0 : ((DomainBase)SelectedCliente).Id, (TipoTela)59); Loading(isLoading: false); } public async void AdicionarProtocolo(Documento documento) { bool flag = ApolicesAdicionadas.Any((ProtocoloEtiqueta x) => ((DomainBase)x.Documento).Id == ((DomainBase)documento).Id && (int)x.Tipo == 0); if (flag) { flag = !(await ShowMessage("JÁ EXISTE UM PROTOCOLO ADICIONADO PARA O DOCUMENTO SELECIONADO, DESEJA ADICIONAR NOVAMENTE?", "SIM", "NÃO")); } if (!flag) { ObservableCollection apolicesAdicionadas = ApolicesAdicionadas; ProtocoloEtiqueta protocoloEtiqueta = new ProtocoloEtiqueta(); ProtocoloEtiqueta protocoloEtiqueta2 = protocoloEtiqueta; protocoloEtiqueta2.Documento = await new ApoliceServico().BuscarApoliceAsync(((DomainBase)documento).Id); protocoloEtiqueta.Tipo = (TipoProtocoloEtiqueta)0; apolicesAdicionadas.Add(protocoloEtiqueta); ApolicesAdicionadas = new ObservableCollection(ApolicesAdicionadas.OrderBy((ProtocoloEtiqueta x) => ((DomainBase)x.Documento).Id)); } } public async void AdicionarEtiqueta(Documento documento) { ObservableCollection apolicesAdicionadas = ApolicesAdicionadas; ProtocoloEtiqueta protocoloEtiqueta = new ProtocoloEtiqueta(); ProtocoloEtiqueta protocoloEtiqueta2 = protocoloEtiqueta; protocoloEtiqueta2.Documento = await new ApoliceServico().BuscarApoliceAsync(((DomainBase)documento).Id); protocoloEtiqueta.Tipo = (TipoProtocoloEtiqueta)1; apolicesAdicionadas.Add(protocoloEtiqueta); ApolicesAdicionadas = new ObservableCollection(ApolicesAdicionadas.OrderBy((ProtocoloEtiqueta x) => ((DomainBase)x.Documento).Id)); } public async void AdicionarEtiquetaCliente() { if (SelectedCliente == null || ((DomainBase)SelectedCliente).Id == 0L) { return; } bool flag = ApolicesAdicionadas.Any((ProtocoloEtiqueta x) => ((DomainBase)x.Documento.Controle.Cliente).Id == ((DomainBase)SelectedCliente).Id && (int)x.Tipo == 1); if (flag) { flag = !(await ShowMessage("JÁ EXISTE UMA ETIQUETA ADICIONADA PARA O CLIENTE SELECIONADO, DESEJA ADICIONAR NOVAMENTE?", "SIM", "NÃO")); } if (!flag) { ApolicesAdicionadas.Add(new ProtocoloEtiqueta { Documento = new Documento { Controle = new Controle { Cliente = SelectedCliente } }, Tipo = (TipoProtocoloEtiqueta)1 }); ApolicesAdicionadas = new ObservableCollection(from x in ApolicesAdicionadas orderby x.Tipo, ((DomainBase)x.Documento.Controle.Cliente).Id select x); } } public async void AdicionarEtiquetaCorretora() { ClienteEndereco item = new ClienteEndereco { Endereco = ((EnderecoBase)Recursos.Empresa).Endereco, Bairro = ((EnderecoBase)Recursos.Empresa).Bairro, Numero = ((EnderecoBase)Recursos.Empresa).Numero, Complemento = ((EnderecoBase)Recursos.Empresa).Complemento, Cidade = ((EnderecoBase)Recursos.Empresa).Cidade, Estado = ((EnderecoBase)Recursos.Empresa).Estado, Cep = ((EnderecoBase)Recursos.Empresa).Cep }; ObservableCollection observableCollection = new ObservableCollection(); observableCollection.Add(item); ApolicesAdicionadas.Add(new ProtocoloEtiqueta { Documento = new Documento { Controle = new Controle { Cliente = new Cliente { Nome = Recursos.Empresa.Nome, Id = -1L, Enderecos = observableCollection } } }, Tipo = (TipoProtocoloEtiqueta)1 }); ApolicesAdicionadas = new ObservableCollection(from x in ApolicesAdicionadas orderby x.Tipo, ((DomainBase)x.Documento.Controle.Cliente).Id select x); } public void Remover(ProtocoloEtiqueta documento) { ApolicesAdicionadas.Remove(documento); SelecionarDocumentos(); } public async void Imprimir(TipoProtocoloEtiqueta tipo) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) if (ApolicesAdicionadas.Count == 0) { await ShowMessage("NECESSÁRIO ADICIONAR DOCUMENTOS PARA EMISSÃO DE " + Functions.GetDescription((Enum)(object)tipo)); } else if ((int)tipo != 0) { if ((int)tipo != 1) { return; } if (ApolicesAdicionadas.All((ProtocoloEtiqueta x) => (int)x.Tipo != 1)) { await ShowMessage("NECESSÁRIO ADICIONAR DOCUMENTOS PARA EMISSÃO DE " + Functions.GetDescription((Enum)(object)tipo)); return; } if (ApolicesAdicionadas.Any((ProtocoloEtiqueta x) => (int)x.Tipo == 1 && ((DomainBase)x.Documento).Id == 0)) { if (ApolicesAdicionadas.Any((ProtocoloEtiqueta x) => (int)x.Tipo == 1 && ((DomainBase)x.Documento).Id != 0)) { await ShowMessage("COMO EXISTEM ETIQUETAS DE CLIENTES E DOCUMENTOS,\nPRIMEIRO CONFIGURE AS DE SOMENTE CLIENTE.\nDEPOIS DE GERAR AS ETIQUETAS DE CLIENTE, CONFIGURAR AS DE DOCUMENTOS"); } ((Window)new HosterWindow((ContentControl)(object)new EtiquetaView((from x in ApolicesAdicionadas where (int)x.Tipo == 1 && ((DomainBase)x.Documento).Id == 0 select x.Documento).ToList(), apenasCliente: true), "ETIQUETAS", 900.0, 600.0)).Show(); } if (ApolicesAdicionadas.Any((ProtocoloEtiqueta x) => (int)x.Tipo == 1 && ((DomainBase)x.Documento).Id != 0)) { ((Window)new HosterWindow((ContentControl)(object)new EtiquetaView((from x in ApolicesAdicionadas where (int)x.Tipo == 1 && ((DomainBase)x.Documento).Id != 0 select x.Documento).ToList(), apenasCliente: false), "ETIQUETAS", 900.0, 600.0)).Show(); } } else if (ApolicesAdicionadas.All((ProtocoloEtiqueta x) => (int)x.Tipo > 0)) { await ShowMessage("NECESSÁRIO ADICIONAR DOCUMENTOS PARA EMISSÃO DE " + Functions.GetDescription((Enum)(object)tipo)); } else if (ApolicesAdicionadas.Any((ProtocoloEtiqueta x) => (int)x.Tipo == 0)) { List lista = await ShowProtocoloDialog((from x in ApolicesAdicionadas where (int)x.Tipo == 0 select x.Documento).ToList()); if (lista != null) { PrepararProtocolo(lista, await ShowMessage("DESEJA EMITIR DOIS PROTOCOLOS POR PÁGINA?" + Environment.NewLine + "A QUANTIDADE DE INFORMÃÇÕES PODE IMPEDIR QUE ESSA FUNÇÃO FUNCIONE CORRETAMENTE", "SIM", "NÃO")); } } } public async void PrepararProtocolo(List documentos, bool doisPorPagina) { if (await ShowMessage("DESEJA EMITIR O CHECKLIST?", "SIM", "NÃO")) { await EmitirCheckList(documentos); } if (documentos != null) { List> lista = documentos.Select((Documento x) => new Tuple(((DomainBase)x).Id, x.ObsProtocolo)).ToList(); await EmitirProtocolos(lista, doisPorPagina, documentos); } } }