using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Threading.Tasks; using Gestor.Application.Helpers; using Gestor.Application.Servicos; using Gestor.Application.Servicos.Generic; using Gestor.Application.ViewModels.Generic; using Gestor.Common.Validation; using Gestor.Model.Common; using Gestor.Model.Domain.Generic; using Gestor.Model.Domain.Seguros; namespace Gestor.Application.ViewModels.Ferramentas; public class CadastroParceiroViewModel : BaseSegurosViewModel { private readonly ParceiroServico _servico; private Parceiro _selectedParceiro; private ObservableCollection _parceirosFiltrados = new ObservableCollection(); private bool _isExpanded; public Parceiro CancelParceiro; private Item _selectedItem = new Item(); public List Parceiros { get; set; } public Parceiro SelectedParceiro { get { return _selectedParceiro; } set { _selectedParceiro = value; WorkOnSelectedParceiro(value); VerificarEnables((value != null) ? new long?(((DomainBase)value).Id) : null); OnPropertyChanged("SelectedParceiro"); } } public ObservableCollection ParceirosFiltrados { get { return _parceirosFiltrados; } set { _parceirosFiltrados = value; IsExpanded = value != null && value.Count > 0; OnPropertyChanged("ParceirosFiltrados"); } } public bool IsExpanded { get { return _isExpanded; } set { _isExpanded = value; OnPropertyChanged("IsExpanded"); } } public Item SelectedItem { get { return _selectedItem; } set { _selectedItem = value; OnPropertyChanged("SelectedItem"); } } public CadastroParceiroViewModel(Parceiro parceiro) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Expected O, but got Unknown _servico = new ParceiroServico(); base.EnableMenu = true; Seleciona(parceiro); } private async void Seleciona(Parceiro parceiro) { Loading(isLoading: true); await PermissaoTela((TipoTela)22); await SelecionaParceiro(parceiro); Loading(isLoading: false); } public async void SelecionarParceiro(Parceiro parceiro) { if (parceiro == null) { SelectedParceiro = null; return; } Parceiro val = await _servico.BuscarParceiro(((DomainBase)parceiro).Id); DomainBase.Copy(ParceirosFiltrados.First((Parceiro x) => ((DomainBase)x).Id == ((DomainBase)parceiro).Id), val); SelectedParceiro = ParceirosFiltrados.First((Parceiro x) => ((DomainBase)x).Id == ((DomainBase)parceiro).Id); } private async Task SelecionaParceiro(Parceiro parceiro = null) { Loading(isLoading: true); Parceiros = (await new BaseServico().BuscarParceirosAsync()).OrderBy((Parceiro x) => x.Nome).ToList(); ParceirosFiltrados = new ObservableCollection(Parceiros); SelecionarParceiro(parceiro ?? ParceirosFiltrados.FirstOrDefault()); Loading(isLoading: false); } private async void WorkOnSelectedParceiro(Parceiro value, bool registrar = true) { CancelParceiro = (Parceiro)((value == null || ((DomainBase)value).Id == 0L) ? ((object)CancelParceiro) : ((object)(Parceiro)((DomainBase)value).Clone())); if (value == null || ((DomainBase)value).Id == 0L || (LastAccessId == ((DomainBase)value).Id && (int)LastAccessTela == 22)) { return; } if (registrar) { RegistrarAcao("ACESSOU PARCEIRO \"" + value.Nome + "\"", ((DomainBase)value).Id, (TipoTela)22, "DOCUMENTO: " + value.Cgccpf + "\nTELEFONE 1: (" + value.Ddd1 + ") " + value.Telefone1 + "\nTELEFONE 2: (" + value.Ddd2 + ") " + value.Telefone2 + "\nTELEFONE 3: (" + value.Ddd3 + ") " + value.Telefone3 + "\nE-MAIL: " + value.Email + "\n\nENDEREÇO: " + value.Endereco + ", " + value.Numero + ", " + (string.IsNullOrWhiteSpace(value.Complemento) ? "-" : (value.Complemento ?? "")) + ", " + value.Bairro + ", " + value.Cidade + "/" + value.Uf + " - " + value.Cep); } LastAccessId = ((DomainBase)value).Id; LastAccessTela = (TipoTela)22; Parceiro selectedParceiro = SelectedParceiro; if (((selectedParceiro != null) ? new long?(((DomainBase)selectedParceiro).Id) : null) != ((DomainBase)value).Id) { Parceiro val = await _servico.BuscarParceiro(((DomainBase)value).Id); DomainBase.Copy(SelectedParceiro, val); Parceiro selectedParceiro2 = SelectedParceiro; if (selectedParceiro2 != null) { ((DomainBase)selectedParceiro2).Initialize(); } Initialized = true; } } internal async Task> Filtrar(string value) { return await Task.Run(() => FiltrarParceiro(value)); } public List FiltrarParceiro(string filter) { ParceirosFiltrados = (string.IsNullOrWhiteSpace(filter) ? new ObservableCollection(Parceiros) : new ObservableCollection(Parceiros.Where((Parceiro x) => ValidationHelper.RemoveDiacritics(x.Nome.Trim()).ToUpper().Contains(ValidationHelper.RemoveDiacritics(filter))))); return ParceirosFiltrados.ToList(); } public void Incluir() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown SelectedParceiro = new Parceiro(); Alterar(alterar: true); } public void CancelarAlteracao() { if (CancelParceiro != null && Parceiros.Any((Parceiro x) => ((DomainBase)x).Id == ((DomainBase)CancelParceiro).Id)) { DomainBase.Copy(Parceiros.First((Parceiro x) => ((DomainBase)x).Id == ((DomainBase)CancelParceiro).Id), CancelParceiro); if (ParceirosFiltrados.Count > 0 && ParceirosFiltrados.Any((Parceiro x) => ((DomainBase)x).Id == ((DomainBase)CancelParceiro).Id)) { DomainBase.Copy(ParceirosFiltrados.First((Parceiro x) => ((DomainBase)x).Id == ((DomainBase)CancelParceiro).Id), CancelParceiro); } else { ParceirosFiltrados.Add(CancelParceiro); } ParceirosFiltrados = new ObservableCollection(ParceirosFiltrados); SelecionarParceiro(ParceirosFiltrados.First((Parceiro x) => ((DomainBase)x).Id == ((DomainBase)CancelParceiro).Id)); } else { Incluir(); } Alterar(alterar: false); } public async Task>> Salvar() { List> list = SelectedParceiro.Validate(); if (list.Count > 0) { return list; } string acao = ((((DomainBase)SelectedParceiro).Id == 0L) ? "INCLUIU" : "ALTEROU"); Parceiro value = await _servico.Save(SelectedParceiro); if (!_servico.Sucesso) { return null; } RegistrarAcao(acao + " PARCEIRO \"" + value.Nome + "\"", ((DomainBase)value).Id, (TipoTela)22, "DOCUMENTO: " + value.Cgccpf + "\nTELEFONE 1: (" + value.Ddd1 + ") " + value.Telefone1 + "\nTELEFONE 2: (" + value.Ddd2 + ") " + value.Telefone2 + "\nTELEFONE 3: (" + value.Ddd3 + ") " + value.Telefone3 + "\nE-MAIL: " + value.Email + "\n\nENDEREÇO: " + value.Endereco + ", " + value.Numero + ", " + (string.IsNullOrWhiteSpace(value.Complemento) ? "-" : (value.Complemento ?? "")) + ", " + value.Bairro + ", " + value.Cidade + "/" + value.Uf + " - " + value.Cep); if (Parceiros.Any((Parceiro x) => ((DomainBase)x).Id == ((DomainBase)value).Id)) { DomainBase.Copy(Parceiros.First((Parceiro x) => ((DomainBase)x).Id == ((DomainBase)value).Id), value); } else { Parceiros.Add(value); } if (ParceirosFiltrados.Any((Parceiro x) => ((DomainBase)x).Id == ((DomainBase)value).Id)) { DomainBase.Copy(ParceirosFiltrados.First((Parceiro x) => ((DomainBase)x).Id == ((DomainBase)value).Id), value); } else { ParceirosFiltrados.Add(value); } ParceirosFiltrados = new ObservableCollection(ParceirosFiltrados); Recursos.Parceiros = Parceiros; WorkOnSelectedParceiro(value, registrar: false); Alterar(alterar: false); ToggleSnackBar("PARCEIRO SALVO COM SUCESSO"); return null; } public async void Excluir() { if (SelectedParceiro == null || ((DomainBase)SelectedParceiro).Id == 0L) { return; } if (await new BaseServico().ParceiroUtilizado(((DomainBase)SelectedParceiro).Id)) { await ShowMessage("PARCEIRO NÃO PODE SER EXCLUÍDO POIS ESTÁ SENDO UTILIZADO."); } else { if (!(await ShowMessage("DESEJA EXCLUIR?", "SIM", "NÃO"))) { return; } Loading(isLoading: true); if (!(await _servico.Delete(SelectedParceiro))) { Loading(isLoading: false); return; } RegistrarAcao("EXCLUIU O PARCEIRO \"" + SelectedParceiro.Nome + "\"", ((DomainBase)SelectedParceiro).Id, (TipoTela)22, "DOCUMENTO: " + SelectedParceiro.Cgccpf + "\nTELEFONE 1: (" + SelectedParceiro.Ddd1 + ") " + SelectedParceiro.Telefone1 + "\nTELEFONE 2: (" + SelectedParceiro.Ddd2 + ") " + SelectedParceiro.Telefone2 + "\nTELEFONE 3: (" + SelectedParceiro.Ddd3 + ") " + SelectedParceiro.Telefone3 + "\nE-MAIL: " + SelectedParceiro.Email + "\n\nENDEREÇO: " + SelectedParceiro.Endereco + ", " + SelectedParceiro.Numero + ", " + (string.IsNullOrWhiteSpace(SelectedParceiro.Complemento) ? "-" : (SelectedParceiro.Complemento ?? "")) + ", " + SelectedParceiro.Bairro + ", " + SelectedParceiro.Cidade + "/" + SelectedParceiro.Uf + " - " + SelectedParceiro.Cep); int num = ParceirosFiltrados.IndexOf(SelectedParceiro); Parceiros.Remove(SelectedParceiro); ParceirosFiltrados.Remove(SelectedParceiro); ParceirosFiltrados = new ObservableCollection(ParceirosFiltrados); if (ParceirosFiltrados.Count > 0) { SelecionarParceiro((num < ParceirosFiltrados.Count) ? ParceirosFiltrados.ElementAt(num) : ParceirosFiltrados.Last()); } else { Incluir(); Alterar(alterar: false); base.EnableMenu = false; } Loading(isLoading: false); ToggleSnackBar("PARCEIRO EXCLUÍDO COM SUCESSO"); } } }