summaryrefslogtreecommitdiff
path: root/Decompiler/Gestor.Application.ViewModels.Seguros.Itens/VidaViewModel.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Decompiler/Gestor.Application.ViewModels.Seguros.Itens/VidaViewModel.cs')
-rw-r--r--Decompiler/Gestor.Application.ViewModels.Seguros.Itens/VidaViewModel.cs438
1 files changed, 438 insertions, 0 deletions
diff --git a/Decompiler/Gestor.Application.ViewModels.Seguros.Itens/VidaViewModel.cs b/Decompiler/Gestor.Application.ViewModels.Seguros.Itens/VidaViewModel.cs
new file mode 100644
index 0000000..6f59156
--- /dev/null
+++ b/Decompiler/Gestor.Application.ViewModels.Seguros.Itens/VidaViewModel.cs
@@ -0,0 +1,438 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+using Gestor.Application.Actions;
+using Gestor.Application.Componentes;
+using Gestor.Application.Servicos.Seguros.Itens;
+using Gestor.Application.ViewModels.Generic;
+using Gestor.Model.Common;
+using Gestor.Model.Domain.Generic;
+using Gestor.Model.Domain.Seguros;
+
+namespace Gestor.Application.ViewModels.Seguros.Itens;
+
+public class VidaViewModel : ItemViewModel, IDisposable
+{
+ private new readonly ItemServico _itemServico;
+
+ private readonly VidaServico _servico;
+
+ private bool _allowAlterarExcluir = true;
+
+ private object _cobertura;
+
+ private string _codigoItem;
+
+ private Item _selectedItem = new Item();
+
+ private Visibility _atualizarCamposSaude;
+
+ private Item ItemSelecionado { get; set; }
+
+ private Ramo Ramo { get; }
+
+ public bool Invoke { get; set; }
+
+ public bool AllowAlterarExcluir
+ {
+ get
+ {
+ return _allowAlterarExcluir;
+ }
+ set
+ {
+ _allowAlterarExcluir = value;
+ OnPropertyChanged("AllowAlterarExcluir");
+ }
+ }
+
+ public object Cobertura
+ {
+ get
+ {
+ return _cobertura;
+ }
+ set
+ {
+ _cobertura = value;
+ OnPropertyChanged("Cobertura");
+ }
+ }
+
+ public string CodigoItem
+ {
+ get
+ {
+ return _codigoItem;
+ }
+ set
+ {
+ _codigoItem = value;
+ OnPropertyChanged("CodigoItem");
+ }
+ }
+
+ public Item SelectedItem
+ {
+ get
+ {
+ return _selectedItem;
+ }
+ set
+ {
+ _selectedItem = value;
+ VerificarEnables((value != null) ? new long?(((DomainBase)value).Id) : null);
+ OnPropertyChanged("SelectedItem");
+ }
+ }
+
+ public Visibility AtualizarCamposSaude
+ {
+ get
+ {
+ //IL_0001: Unknown result type (might be due to invalid IL or missing references)
+ return _atualizarCamposSaude;
+ }
+ 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)
+ _atualizarCamposSaude = value;
+ OnPropertyChanged("AtualizarCamposSaude");
+ }
+ }
+
+ public VidaViewModel(bool substituir = false, ManutencaoItem manutencao = null, Item itemSelecionado = null, Ramo ramo = null, bool endossoRenovacao = false)
+ {
+ //IL_0008: Unknown result type (might be due to invalid IL or missing references)
+ //IL_0012: Expected O, but got Unknown
+ //IL_0060: Unknown result type (might be due to invalid IL or missing references)
+ Invoke = itemSelecionado == null;
+ ItemSelecionado = itemSelecionado ?? ConsultaViewModel.ItemSelecionado;
+ Ramo = ramo ?? ConsultaViewModel.DocumentoSelecionado.Controle.Ramo;
+ if (Invoke)
+ {
+ ItemSelecionado = (Item)(((object)ItemSelecionado) ?? ((object)new Item()));
+ ItemSelecionado.Documento = ConsultaViewModel.DocumentoSelecionado;
+ }
+ _itemServico = new ItemServico();
+ _servico = new VidaServico();
+ Gestor.Application.Actions.Actions.UpdateItem = (Action<Item>)Delegate.Combine(Gestor.Application.Actions.Actions.UpdateItem, new Action<Item>(Seleciona));
+ Gestor.Application.Actions.Actions.SubstituirItem = (Action<Item>)Delegate.Combine(Gestor.Application.Actions.Actions.SubstituirItem, new Action<Item>(Substituir));
+ Gestor.Application.Actions.Actions.ManterItem = (Action<Item, ManutencaoItem>)Delegate.Combine(Gestor.Application.Actions.Actions.ManterItem, new Action<Item, ManutencaoItem>(Manter));
+ Seleciona(ItemSelecionado);
+ if (substituir)
+ {
+ Substituir(ItemSelecionado);
+ }
+ if (manutencao != null)
+ {
+ Manter(ItemSelecionado, manutencao);
+ }
+ AllowAlterarExcluir = !endossoRenovacao;
+ CarregaCobertura();
+ }
+
+ public void CarregaCobertura()
+ {
+ CoberturaViewModel.Item = ItemSelecionado;
+ CoberturaViewModel.Ramo = Ramo;
+ Cobertura = new CoberturaView(CoberturaViewModel);
+ }
+
+ public void Descarregar()
+ {
+ Cobertura = null;
+ }
+
+ public void Manter(Item item, ManutencaoItem manutencao)
+ {
+ //IL_0001: Unknown result type (might be due to invalid IL or missing references)
+ //IL_0007: Invalid comparison between Unknown and I4
+ if ((int)manutencao.Tipo == 1)
+ {
+ base.ItemSubstituido = item;
+ }
+ Manter(manutencao);
+ base.Mantido = true;
+ }
+
+ public void Manter(ManutencaoItem manutencao)
+ {
+ //IL_006d: Unknown result type (might be due to invalid IL or missing references)
+ //IL_0077: Expected O, but got Unknown
+ //IL_0149: Unknown result type (might be due to invalid IL or missing references)
+ //IL_00c0: Unknown result type (might be due to invalid IL or missing references)
+ List<Cobertura> obj = CoberturaViewModel.Coberturas?.ToList();
+ List<long> list = new List<long> { 6L, 7L, 9L, 10L, 47L, 53L, 66L };
+ if (SelectedItem.Vida == null)
+ {
+ SelectedItem.Vida = new Vida();
+ }
+ if (((DomainBase)ItemSelecionado.Documento.Controle).Id != ((DomainBase)SelectedItem.Documento.Controle).Id)
+ {
+ Item selectedItem = SelectedItem;
+ if (selectedItem == null || selectedItem.Sinistros.Count() <= 0 || (int)manutencao.Tipo != 0)
+ {
+ if (!list.Contains(((DomainBase)Ramo).Id))
+ {
+ ((DomainBase)SelectedItem).Id = 0L;
+ }
+ goto IL_0108;
+ }
+ }
+ ((DomainBase)SelectedItem).Id = 0L;
+ ((DomainBase)SelectedItem.Vida).Id = 0L;
+ goto IL_0108;
+ IL_0108:
+ Item selectedItem2 = SelectedItem;
+ Item itemSubstituido = base.ItemSubstituido;
+ selectedItem2.Substituicao = ((itemSubstituido != null) ? new long?(((DomainBase)itemSubstituido).Id) : null);
+ SelectedItem.Documento = ItemSelecionado.Documento;
+ if ((int)manutencao.Tipo == 0)
+ {
+ SelectedItem.Sinistrado = false;
+ SelectedItem.Status = "";
+ SelectedItem.Sinistro = null;
+ SelectedItem.Sinistros = null;
+ }
+ CoberturaViewModel.CarregaPadrao();
+ CoberturaViewModel.Coberturas = new ObservableCollection<Cobertura>();
+ obj?.ForEach(delegate(Cobertura x)
+ {
+ x.Item = SelectedItem;
+ CoberturaViewModel.Coberturas.Add(x);
+ });
+ Alterar(alterar: true);
+ }
+
+ public async void Substituir(Item item)
+ {
+ base.ItemSubstituido = item;
+ await Incluir(substituir: true);
+ }
+
+ private async void Seleciona(Item item)
+ {
+ Loading(isLoading: true);
+ await PermissaoTela((TipoTela)3);
+ await SelecionaItem(item);
+ Loading(isLoading: false);
+ }
+
+ public async Task SelecionaItem(Item item, bool registrar = true)
+ {
+ if (item != null && LastAccessId == ((DomainBase)item).Id && (int)LastAccessTela == 9)
+ {
+ return;
+ }
+ base.Mantido = false;
+ if (!new List<long> { 6L, 7L, 9L, 10L, 47L, 53L, 66L }.Contains(((DomainBase)Ramo).Id))
+ {
+ return;
+ }
+ AtualizarCamposSaude = (Visibility)((((DomainBase)Ramo).Id == 9) ? 2 : 0);
+ CoberturaViewModel.Ramo = Ramo;
+ if (CoberturaViewModel.CoberturasPadrao == null)
+ {
+ await CoberturaViewModel.SelectionaCoberturas();
+ }
+ if (item == null || ((DomainBase)item).Id == 0L)
+ {
+ SelectedItem = null;
+ CoberturaViewModel.Coberturas = null;
+ base.IsVisible = (Visibility)0;
+ base.Titulares = new ObservableCollection<TitularesVida>();
+ return;
+ }
+ Loading(isLoading: true);
+ item = await _itemServico.BuscarItemPorIdAsync(((DomainBase)item).Id);
+ Item val = item;
+ val.Vida = await _itemServico.BuscaVida(((DomainBase)item).Id);
+ await CarregarTitulares(((DomainBase)item).Id);
+ SelectedItem = item;
+ ((DomainBase)SelectedItem).Initialize();
+ Initialized = true;
+ CoberturaViewModel.Item = item;
+ await CoberturaViewModel.CancelarAlteracao();
+ if (registrar)
+ {
+ RegistrarAcao("ACESSOU ITEM DE DESCRIÇÃO \"" + SelectedItem.Descricao + "\"", ((DomainBase)SelectedItem).Id, (TipoTela)3, $"ID ITEM: {((DomainBase)SelectedItem).Id}\nID DOCUMENTO: {((DomainBase)SelectedItem.Documento).Id}\nRAMO: {SelectedItem.Documento.Controle.Ramo.Nome}\nCLIENTE: {SelectedItem.Documento.Controle.Cliente.Nome}\nID CLIENTE: {((DomainBase)SelectedItem.Documento.Controle.Cliente).Id}");
+ }
+ LastAccessId = ((DomainBase)SelectedItem).Id;
+ LastAccessTela = (TipoTela)3;
+ CodigoItem = ((DomainBase)SelectedItem).Id.ToString();
+ Loading(isLoading: false);
+ }
+
+ public async Task Incluir(bool substituir = false)
+ {
+ List<Cobertura> coberturas = ((CoberturaViewModel.Coberturas == null) ? CoberturaViewModel.CarregaCoberturaPadrao().ToList() : CoberturaViewModel.Coberturas.ToList());
+ Item val = new Item();
+ val.Documento = ItemSelecionado.Documento;
+ Item val2 = val;
+ int? ordem = (substituir ? base.ItemSubstituido.Ordem : new int?(await QuantidadeDeItens(((DomainBase)ItemSelecionado.Documento.Controle).Id)));
+ val2.Ordem = ordem;
+ val.Vida = new Vida
+ {
+ Item = SelectedItem
+ };
+ val.Substituicao = (substituir ? new long?(((DomainBase)base.ItemSubstituido).Id) : null);
+ Item item = val;
+ base.Titulares = new ObservableCollection<TitularesVida>();
+ if (item.Ordem.GetValueOrDefault() == 2 && !(await ShowMessage("ESTA APÓLICE SERÁ UMA FROTA, DESEJA CONTINUAR?", "SIM", "NÃO")))
+ {
+ return;
+ }
+ bool flag = substituir;
+ if (flag)
+ {
+ flag = await ShowMessage("DESEJA COPIAR OS DADOS DO ITEM?", "SIM", "NÃO");
+ }
+ if (flag)
+ {
+ ((DomainBase)SelectedItem).Id = 0L;
+ SelectedItem.Documento = ItemSelecionado.Documento;
+ }
+ else
+ {
+ SelectedItem = item;
+ SelectedItem.Vida.Item = item;
+ }
+ flag = item.Ordem > 1;
+ if (flag)
+ {
+ flag = await ShowMessage("DESEJA REPLICAR AS COBERTURAS DO ITEM SELECIONADO?", "SIM", "NÃO");
+ }
+ if (flag)
+ {
+ CoberturaViewModel.Coberturas = new ObservableCollection<Cobertura>();
+ coberturas.ForEach(delegate(Cobertura x)
+ {
+ x.Item = SelectedItem;
+ CoberturaViewModel.Coberturas.Add(x);
+ });
+ }
+ else
+ {
+ CoberturaViewModel.CarregaPadrao();
+ }
+ if (substituir)
+ {
+ CoberturaViewModel.Coberturas = new ObservableCollection<Cobertura>();
+ coberturas.ForEach(delegate(Cobertura x)
+ {
+ x.Item = SelectedItem;
+ CoberturaViewModel.Coberturas.Add(x);
+ });
+ }
+ Alterar(alterar: true);
+ }
+
+ public async Task<List<KeyValuePair<string, string>>> Salvar(List<TitularesVida> titularesGrid)
+ {
+ SelectedItem.Descricao = (string.IsNullOrWhiteSpace(SelectedItem.Descricao) ? (SelectedItem.Vida.Plano ?? "") : SelectedItem.Descricao);
+ SelectedItem.Titulares = titularesGrid;
+ List<KeyValuePair<string, string>> list = SelectedItem.Validate();
+ if (list.Count > 0)
+ {
+ return list;
+ }
+ Item selectedItem = SelectedItem;
+ selectedItem.Coberturas = await CoberturaViewModel.LimpaCoberturas();
+ string status = ((SelectedItem.Documento.Ordem <= 0) ? "" : (base.Mantido ? $"ITEM ALTERADO NO ENDOSSO ORDEM {SelectedItem.Documento.Ordem}" : ((base.ItemSubstituido != null) ? $"SUBSTITUIÇÃO DO ITEM {base.ItemSubstituido.Ordem} NO ENDOSSO ORDEM {SelectedItem.Documento.Ordem}" : $"ITEM INCLUÍDO NO ENDOSSO ORDEM {SelectedItem.Documento.Ordem}")));
+ if (((DomainBase)SelectedItem).Id == 0L)
+ {
+ SelectedItem.Status = status;
+ }
+ await _itemServico.DeleteTitulares(base.ExcluirTitulares);
+ base.ExcluirTitulares = new List<TitularesVida>();
+ string acao = ((((DomainBase)SelectedItem).Id == 0L) ? "INCLUIU" : "ALTEROU");
+ SelectedItem = await _itemServico.Save(SelectedItem);
+ foreach (TitularesVida item in titularesGrid)
+ {
+ item.IdItem = ((DomainBase)SelectedItem).Id;
+ }
+ List<TitularesVida> list2 = new List<TitularesVida>();
+ foreach (TitularesVida t in titularesGrid)
+ {
+ if (((DomainBase)t).Id == 0L)
+ {
+ if (t.Inicio.HasValue)
+ {
+ list2.Add(t);
+ }
+ continue;
+ }
+ TitularesVida val = base.OldTitulares.First((TitularesVida x) => ((DomainBase)x).Id == ((DomainBase)t).Id);
+ if (t.Codigo != val.Codigo || t.Inicio != val.Inicio || t.Fim != val.Fim || t.Fatura != val.Fatura || t.Nome != val.Nome || t.Observacao != val.Observacao || t.Nascimento != val.Nascimento || t.Cpf != val.Cpf || t.Matricula != val.Matricula || !(t.Premio == val.Premio) || !(t.Capital == val.Capital) || t.Tipo != val.Tipo || t.Dependente != val.Dependente)
+ {
+ list2.Add(t);
+ }
+ }
+ base.Titulares = new ObservableCollection<TitularesVida>(await _itemServico.SaveTitulares(list2));
+ if (!_itemServico.Sucesso)
+ {
+ return null;
+ }
+ if (base.ItemSubstituido != null)
+ {
+ string descricao = (base.Mantido ? $"ITEM ALTERADO NO ENDOSSO ORDEM {SelectedItem.Documento.Ordem}" : $"ITEM SUBSTITUIDO NO ENDOSSO ORDEM {SelectedItem.Documento.Ordem}");
+ await _itemServico.Substituir(base.ItemSubstituido, ((DomainBase)SelectedItem).Id, descricao);
+ }
+ base.Mantido = false;
+ await SelecionaItem(SelectedItem, registrar: false);
+ ItemSelecionado = SelectedItem;
+ if (Invoke)
+ {
+ ConsultaViewModel.ItemSelecionado = SelectedItem;
+ }
+ ToggleSnackBar(Ramo.Nome + " SALVO COM SUCESSO");
+ RegistrarAcao(acao + " ITEM DE DESCRIÇÃO \"" + SelectedItem.Descricao + "\"", ((DomainBase)SelectedItem).Id, (TipoTela)3, $"ID ITEM: {((DomainBase)SelectedItem).Id}\nID DOCUMENTO: {((DomainBase)SelectedItem.Documento).Id}\nRAMO: {SelectedItem.Documento.Controle.Ramo.Nome}\nCLIENTE: {SelectedItem.Documento.Controle.Cliente.Nome}\nID CLIENTE: {((DomainBase)SelectedItem.Documento.Controle.Cliente).Id}");
+ Alterar(alterar: false);
+ return null;
+ }
+
+ public async void CancelarAlteracao()
+ {
+ Loading(isLoading: true);
+ base.AllSelected = false;
+ await SelecionaItem(ItemSelecionado, registrar: false);
+ await CoberturaViewModel.CancelarAlteracao();
+ Alterar(alterar: false);
+ Loading(isLoading: false);
+ }
+
+ public async Task<bool> Excluir()
+ {
+ if (SelectedItem == null || ((DomainBase)SelectedItem).Id == 0L)
+ {
+ return false;
+ }
+ if (!(await ShowMessage("DESEJA EXCLUIR?", "SIM", "NÃO")))
+ {
+ return false;
+ }
+ Loading(isLoading: true);
+ bool num = await _servico.Delete(SelectedItem);
+ Loading(isLoading: false);
+ if (!num)
+ {
+ await ShowMessage("NÃO POSSÍVEL EXCLUIR O ITEM");
+ return false;
+ }
+ RegistrarAcao("EXCLUIU ITEM DE DESCRIÇÃO \"" + SelectedItem.Descricao + "\"", ((DomainBase)SelectedItem).Id, (TipoTela)3, $"ID ITEM: {((DomainBase)SelectedItem).Id}\nID DOCUMENTO: {((DomainBase)SelectedItem.Documento).Id}\nRAMO: {SelectedItem.Documento.Controle.Ramo.Nome}\nCLIENTE: {SelectedItem.Documento.Controle.Cliente.Nome}\nID CLIENTE: {((DomainBase)SelectedItem.Documento.Controle.Cliente).Id}");
+ ToggleSnackBar(Ramo.Nome + " EXCLUÍDO COM SUCESSO");
+ return true;
+ }
+
+ public void Dispose()
+ {
+ Gestor.Application.Actions.Actions.UpdateItem = (Action<Item>)Delegate.Remove(Gestor.Application.Actions.Actions.UpdateItem, new Action<Item>(Seleciona));
+ Gestor.Application.Actions.Actions.SubstituirItem = (Action<Item>)Delegate.Remove(Gestor.Application.Actions.Actions.SubstituirItem, new Action<Item>(Substituir));
+ Gestor.Application.Actions.Actions.ManterItem = (Action<Item, ManutencaoItem>)Delegate.Remove(Gestor.Application.Actions.Actions.ManterItem, new Action<Item, ManutencaoItem>(Manter));
+ }
+}