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.Ferramentas; 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 TipoVendedorViewModel : BaseSegurosViewModel { private readonly TipoVendedorServico _servico; public TipoVendedor CancelTipoVendedor; private Visibility _ativoVisibility = (Visibility)2; private TipoVendedor _selectedTipoVendedor = new TipoVendedor(); private ObservableCollection _tipoVendedoresFiltrados = new ObservableCollection(); private bool _isExpanded; public List TipoVendedores { get; set; } public Visibility AtivoVisibility { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _ativoVisibility; } 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) _ativoVisibility = value; OnPropertyChanged("AtivoVisibility"); } } public TipoVendedor SelectedTipoVendedor { get { return _selectedTipoVendedor; } set { _selectedTipoVendedor = value; WorkOnSelectedTipoVendedor(value); AtivoVisibility = (Visibility)((value != null && ((DomainBase)value).Id == 1) ? 2 : 0); VerificarEnables((value != null) ? new long?(((DomainBase)value).Id) : null); OnPropertyChanged("SelectedTipoVendedor"); } } public ObservableCollection TipoVendedoresFiltrados { get { return _tipoVendedoresFiltrados; } set { _tipoVendedoresFiltrados = value; IsExpanded = value != null && value.Count > 0; OnPropertyChanged("TipoVendedoresFiltrados"); } } public bool IsExpanded { get { return _isExpanded; } set { _isExpanded = value; OnPropertyChanged("IsExpanded"); } } public TipoVendedorViewModel() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown _servico = new TipoVendedorServico(); base.EnableMenu = true; Seleciona(); } public async void Seleciona() { Loading(isLoading: true); await PermissaoTela((TipoTela)14); await SelecionaTipoVendedores(); Loading(isLoading: false); } private async Task SelecionaTipoVendedores() { Loading(isLoading: true); List list = await new BaseServico().BuscarTipoVendedoresAsync(); TipoVendedores = (from x in list orderby x.Ativo descending, x.Descricao select x).ToList(); TipoVendedoresFiltrados = new ObservableCollection(TipoVendedores); if (TipoVendedoresFiltrados.Count > 0) { SelecionaTipoVendedor(TipoVendedoresFiltrados.First()); } else { SelectedTipoVendedor = new TipoVendedor(); Alterar(alterar: false); base.EnableMenu = false; } Recursos.TipoVendedor = list; Loading(isLoading: false); } public void Incluir() { //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) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown SelectedTipoVendedor = new TipoVendedor { Ativo = true, Inserido = false }; Alterar(alterar: true); } public async Task>> Salvar() { List> list = SelectedTipoVendedor.Validate(); if (list.Count > 0) { return list; } string acao = ((((DomainBase)SelectedTipoVendedor).Id == 0L) ? "INCLUIU" : "ALTEROU"); TipoVendedor value = await _servico.Save(SelectedTipoVendedor); if (!_servico.Sucesso) { return null; } RegistrarAcao(acao + " TIPO VENDEDOR \"" + value.Descricao + "\"", ((DomainBase)value).Id, (TipoTela)14, string.Format("ID: {0}\nATIVO: {1}", ((DomainBase)value).Id, (value.Ativo.HasValue && value.Ativo.Value) ? "SIM" : "NÃO")); if (TipoVendedores.Any((TipoVendedor x) => ((DomainBase)x).Id == ((DomainBase)value).Id)) { DomainBase.Copy(TipoVendedores.First((TipoVendedor x) => ((DomainBase)x).Id == ((DomainBase)value).Id), value); } else { TipoVendedores.Add(value); } if (TipoVendedoresFiltrados.Any((TipoVendedor x) => ((DomainBase)x).Id == ((DomainBase)value).Id)) { DomainBase.Copy(TipoVendedoresFiltrados.First((TipoVendedor x) => ((DomainBase)x).Id == ((DomainBase)value).Id), value); } else { TipoVendedoresFiltrados.Add(value); } TipoVendedoresFiltrados = new ObservableCollection(TipoVendedoresFiltrados); WorkOnSelectedTipoVendedor(value, registrar: false); Recursos.TipoVendedor = TipoVendedores; Alterar(alterar: false); ToggleSnackBar("TIPO VENDEDOR SALVO COM SUCESSO"); return null; } public void CancelarAlteracao() { if (CancelTipoVendedor != null && TipoVendedores.Any((TipoVendedor x) => ((DomainBase)x).Id == ((DomainBase)CancelTipoVendedor).Id)) { DomainBase.Copy(TipoVendedores.First((TipoVendedor x) => ((DomainBase)x).Id == ((DomainBase)CancelTipoVendedor).Id), CancelTipoVendedor); if (TipoVendedoresFiltrados.Count > 0 && TipoVendedoresFiltrados.Any((TipoVendedor x) => ((DomainBase)x).Id == ((DomainBase)CancelTipoVendedor).Id)) { DomainBase.Copy(TipoVendedoresFiltrados.First((TipoVendedor x) => ((DomainBase)x).Id == ((DomainBase)CancelTipoVendedor).Id), CancelTipoVendedor); } else { TipoVendedoresFiltrados.Add(CancelTipoVendedor); } TipoVendedoresFiltrados = new ObservableCollection(TipoVendedoresFiltrados); SelectedTipoVendedor = TipoVendedoresFiltrados.First((TipoVendedor x) => ((DomainBase)x).Id == ((DomainBase)CancelTipoVendedor).Id); } else { Incluir(); } Alterar(alterar: false); } public async void Excluir() { if (SelectedTipoVendedor == null || ((DomainBase)SelectedTipoVendedor).Id == 0L || ((DomainBase)SelectedTipoVendedor).Id == 1) { return; } if (await new BaseServico().TipoVendedorUtilizado(((DomainBase)SelectedTipoVendedor).Id)) { await ShowMessage("TIPO VENDEDOR 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(SelectedTipoVendedor))) { Loading(isLoading: false); return; } RegistrarAcao("EXCLUIU TIPO VENDEDOR \"" + SelectedTipoVendedor.Descricao + "\"", ((DomainBase)SelectedTipoVendedor).Id, (TipoTela)14, string.Format("ID: {0}\nATIVO: {1}", ((DomainBase)SelectedTipoVendedor).Id, (SelectedTipoVendedor.Ativo.HasValue && SelectedTipoVendedor.Ativo.Value) ? "SIM" : "NÃO")); int num = TipoVendedoresFiltrados.IndexOf(SelectedTipoVendedor); TipoVendedores.Remove(SelectedTipoVendedor); TipoVendedoresFiltrados.Remove(SelectedTipoVendedor); TipoVendedoresFiltrados = new ObservableCollection(TipoVendedoresFiltrados); if (TipoVendedoresFiltrados.Count > 0) { SelectedTipoVendedor = ((num < TipoVendedoresFiltrados.Count) ? TipoVendedoresFiltrados.ElementAt(num) : TipoVendedoresFiltrados.Last()); } else { SelectedTipoVendedor = new TipoVendedor(); Alterar(alterar: false); base.EnableMenu = false; } Recursos.TipoVendedor = TipoVendedores; Loading(isLoading: false); ToggleSnackBar("TIPO VENDEDOR EXCLUÍDO COM SUCESSO"); } } internal async Task> Filtrar(string value) { return await Task.Run(() => FiltrarTipoVendedor(value)); } public List FiltrarTipoVendedor(string filter) { TipoVendedoresFiltrados = (string.IsNullOrWhiteSpace(filter) ? new ObservableCollection(TipoVendedores) : new ObservableCollection(from x in TipoVendedores where ValidationHelper.RemoveDiacritics(x.Descricao.Trim()).ToUpper().Contains(ValidationHelper.RemoveDiacritics(filter)) orderby x.Ativo descending, x.Descricao select x)); SelectedTipoVendedor = TipoVendedoresFiltrados.FirstOrDefault(); return TipoVendedoresFiltrados.ToList(); } public void SelecionaTipoVendedor(TipoVendedor tipoVendedor) { SelectedTipoVendedor = tipoVendedor; } private void WorkOnSelectedTipoVendedor(TipoVendedor 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_010f: Unknown result type (might be due to invalid IL or missing references) CancelTipoVendedor = (TipoVendedor)((value == null || ((DomainBase)value).Id == 0L) ? ((object)CancelTipoVendedor) : ((object)(TipoVendedor)((DomainBase)value).Clone())); if (value == null || ((DomainBase)value).Id == 0L || (LastAccessId == ((DomainBase)value).Id && (int)LastAccessTela == 14)) { return; } if (registrar) { RegistrarAcao("ACESSOU TIPO VENDEDOR \"" + value.Descricao + "\"", ((DomainBase)value).Id, (TipoTela)14, string.Format("ID: {0}\nATIVO: {1}", ((DomainBase)value).Id, (value.Ativo.HasValue && value.Ativo.Value) ? "SIM" : "NÃO")); } LastAccessId = ((DomainBase)value).Id; LastAccessTela = (TipoTela)14; TipoVendedor selectedTipoVendedor = SelectedTipoVendedor; if (((selectedTipoVendedor != null) ? new long?(((DomainBase)selectedTipoVendedor).Id) : null) != ((DomainBase)value).Id) { SelectedTipoVendedor = ((IEnumerable)TipoVendedoresFiltrados).FirstOrDefault((Func)((TipoVendedor x) => ((DomainBase)x).Id == ((DomainBase)value).Id)); } } }