using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Threading.Tasks; using Gestor.Application.Servicos.Ferramentas; using Gestor.Application.Servicos.Generic; using Gestor.Application.ViewModels.Generic; using Gestor.Common.Validation; using Gestor.Model.Common; using Gestor.Model.Domain.Common; using Gestor.Model.Domain.Generic; namespace Gestor.Application.ViewModels.Ferramentas; public class SocioViewModel : BaseSegurosViewModel { private readonly SocioServico _servico; public Socio CancelSocio; private ObservableCollection _empresas = new ObservableCollection(); private Empresa _selectedEmpresa; private Socio _selectedSocio = new Socio(); private ObservableCollection _sociosFiltradas = new ObservableCollection(); private bool _isExpanded; private bool _isLoading; public ObservableCollection Empresas { get { return _empresas; } set { _empresas = value; OnPropertyChanged("Empresas"); } } public Empresa SelectedEmpresa { get { return _selectedEmpresa; } set { _selectedEmpresa = value; WorkOnSelectedEmpresa(value); OnPropertyChanged("SelectedEmpresa"); } } public Socio SelectedSocio { get { return _selectedSocio; } set { _selectedSocio = value; WorkOnSelectedSocio(value); VerificarEnables((value != null) ? new long?(((DomainBase)value).Id) : null); OnPropertyChanged("SelectedSocio"); } } public ObservableCollection SociosFiltradas { get { return _sociosFiltradas; } set { _sociosFiltradas = value; IsExpanded = value != null && value.Count > 0; OnPropertyChanged("SociosFiltradas"); } } public bool IsExpanded { get { return _isExpanded; } set { _isExpanded = value; OnPropertyChanged("IsExpanded"); } } public List Socios { get; set; } public bool IsLoading { get { return _isLoading; } set { _isLoading = value; OnPropertyChanged("IsLoading"); } } public SocioViewModel() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Expected O, but got Unknown _servico = new SocioServico(); base.EnableMenu = true; Seleciona(); } private async void Seleciona() { Loading(isLoading: true); await PermissaoTela((TipoTela)19); Empresas = new ObservableCollection(await new EmpresaServico().BuscarEmpresas()); Loading(isLoading: false); SelectedEmpresa = Empresas.FirstOrDefault(); } private async Task SelecionaSocios(long? id) { Socios = null; SociosFiltradas = null; if (id.HasValue && id != 0) { Loading(isLoading: true); Socios = (await new BaseServico().BuscarSociosAsync(id.Value)).OrderBy((Socio x) => x.Nome).ToList(); SociosFiltradas = new ObservableCollection(Socios); SelectedSocio = SociosFiltradas.FirstOrDefault(); Loading(isLoading: false); } } private async void WorkOnSelectedEmpresa(Empresa value) { if (value != null && ((DomainBase)value).Id != 0L) { await SelecionaSocios(((DomainBase)value).Id); } } internal async Task> Filtrar(string value) { return await Task.Run(() => FiltrarSocio(value)); } public List FiltrarSocio(string filter) { SociosFiltradas = (string.IsNullOrWhiteSpace(filter) ? new ObservableCollection(Socios) : new ObservableCollection(from x in Socios where ValidationHelper.RemoveDiacritics(x.Nome.Trim()).ToUpper().Contains(ValidationHelper.RemoveDiacritics(filter)) orderby x.Nome select x)); return SociosFiltradas.ToList(); } public async Task>> Salvar() { List> list = SelectedSocio.Validate(); if (list.Count > 0) { return list; } string acao = ((((DomainBase)SelectedSocio).Id == 0L) ? "INCLUIU" : "ALTEROU"); Socio value = await _servico.Save(SelectedSocio); if (!_servico.Sucesso) { return null; } RegistrarAcao(acao + " SÓCIO \"" + value.Nome + "\"", ((DomainBase)value).Id, (TipoTela)19, $"ID: {((DomainBase)value).Id}\nTELEFONE: ({value.Prefixo}) {value.Telefone}\nE-MAIL: {value.Email}"); if (Socios.Any((Socio x) => ((DomainBase)x).Id == ((DomainBase)value).Id)) { DomainBase.Copy(Socios.First((Socio x) => ((DomainBase)x).Id == ((DomainBase)value).Id), value); } else { Socios.Add(value); } if (SociosFiltradas.Any((Socio x) => ((DomainBase)x).Id == ((DomainBase)value).Id)) { DomainBase.Copy(SociosFiltradas.First((Socio x) => ((DomainBase)x).Id == ((DomainBase)value).Id), value); } else { SociosFiltradas.Add(value); } SociosFiltradas = new ObservableCollection(SociosFiltradas); WorkOnSelectedSocio(value, registrar: false); Alterar(alterar: false); ToggleSnackBar("SÓCIO SALVO COM SUCESSO"); return null; } public void CancelarAlteracao() { if (CancelSocio != null && Socios.Any((Socio x) => ((DomainBase)x).Id == ((DomainBase)CancelSocio).Id)) { DomainBase.Copy(Socios.First((Socio x) => ((DomainBase)x).Id == ((DomainBase)CancelSocio).Id), CancelSocio); if (SociosFiltradas.Count > 0 && SociosFiltradas.Any((Socio x) => ((DomainBase)x).Id == ((DomainBase)CancelSocio).Id)) { DomainBase.Copy(SociosFiltradas.First((Socio x) => ((DomainBase)x).Id == ((DomainBase)CancelSocio).Id), CancelSocio); } else { SociosFiltradas.Add(CancelSocio); } SociosFiltradas = new ObservableCollection(SociosFiltradas); SelectedSocio = SociosFiltradas.First((Socio x) => ((DomainBase)x).Id == ((DomainBase)CancelSocio).Id); } else { Incluir(); } Alterar(alterar: false); } public void Incluir() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown Socio selectedSocio = new Socio { IdEmpresa = ((DomainBase)SelectedEmpresa).Id }; SelectedSocio = selectedSocio; Alterar(alterar: true); } public async void Excluir() { if (SelectedSocio == null || ((DomainBase)SelectedSocio).Id == 0L || !(await ShowMessage("DESEJA EXCLUIR?", "SIM", "NÃO"))) { return; } Loading(isLoading: true); IsLoading = true; if (!(await _servico.Delete(SelectedSocio))) { Loading(isLoading: false); IsLoading = false; return; } RegistrarAcao("EXCLUIU SÓCIO \"" + SelectedSocio.Nome + "\"", ((DomainBase)SelectedSocio).Id, (TipoTela)19, $"ID: {((DomainBase)SelectedSocio).Id}\nTELEFONE: ({SelectedSocio.Prefixo}) {SelectedSocio.Telefone}\nE-MAIL: {SelectedSocio.Email}"); int num = SociosFiltradas.IndexOf(SelectedSocio); Socios.Remove(SelectedSocio); SociosFiltradas.Remove(SelectedSocio); SociosFiltradas = new ObservableCollection(SociosFiltradas); if (SociosFiltradas.Count > 0) { SelectedSocio = ((num < SociosFiltradas.Count) ? SociosFiltradas.ElementAt(num) : SociosFiltradas.Last()); } else { SelectedSocio = new Socio(); Alterar(alterar: false); } Loading(isLoading: false); IsLoading = false; ToggleSnackBar("SÓCIO EXCLUÍDO COM SUCESSO"); } private void WorkOnSelectedSocio(Socio value, bool registrar = true) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Invalid comparison between Unknown and I4 //IL_0109: Unknown result type (might be due to invalid IL or missing references) CancelSocio = (Socio)((value == null || ((DomainBase)value).Id == 0L) ? ((object)CancelSocio) : ((object)(Socio)((DomainBase)value).Clone())); if (value == null || ((DomainBase)value).Id == 0L || (LastAccessId == ((DomainBase)value).Id && (int)LastAccessTela == 19)) { return; } if (registrar) { RegistrarAcao("ACESSOU SÓCIO \"" + value.Nome + "\"", ((DomainBase)value).Id, (TipoTela)19, $"ID: {((DomainBase)value).Id}\nTELEFONE: ({value.Prefixo}) {value.Telefone}\nE-MAIL: {value.Email}"); } LastAccessId = ((DomainBase)value).Id; LastAccessTela = (TipoTela)19; Socio selectedSocio = SelectedSocio; if (((selectedSocio != null) ? new long?(((DomainBase)selectedSocio).Id) : null) != ((DomainBase)value).Id) { SelectedSocio = ((IEnumerable)SociosFiltradas).FirstOrDefault((Func)((Socio x) => ((DomainBase)x).Id == ((DomainBase)value).Id)); } } }