using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Threading.Tasks; using System.Windows; using CsQuery.ExtensionMethods.Internal; 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.Attributes; using Gestor.Model.Common; using Gestor.Model.Domain.Common; using Gestor.Model.Domain.Configuracoes; using Gestor.Model.Domain.Generic; using Gestor.Model.Domain.Seguros; namespace Gestor.Application.ViewModels.Ferramentas; public class VendedorViewModel : BaseSegurosViewModel { private readonly VendedorServico _servico; public Vendedor CancelVendedor; private Vendedor _selectedVendedor; private GridLength _gridHeight = new GridLength(1.0, (GridUnitType)2); private GridLength _gridHeight2 = new GridLength(0.0); private ObservableCollection _vendedoresFiltrados = new ObservableCollection(); private bool _isExpanded; private VendedorTelefone _selectedTelefone = new VendedorTelefone(); private ObservableCollection _telefones = new ObservableCollection(); private Repasse _selectedRepasse = new Repasse(); private ObservableCollection _repasses = new ObservableCollection(); private string _pesquisa; private Visibility _mostrarRamo; private ObservableCollection _ramos = new ObservableCollection(); public List Vendedores { get; set; } public Vendedor SelectedVendedor { get { return _selectedVendedor; } set { _selectedVendedor = value; WorkOnSelectedVendedor(value); VerificarEnables((value != null) ? new long?(((DomainBase)value).Id) : null); OnPropertyChanged("SelectedVendedor"); } } public GridLength GridHeight { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _gridHeight; } 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) _gridHeight = value; OnPropertyChanged("GridHeight"); } } public GridLength GridHeight2 { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _gridHeight2; } 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) _gridHeight2 = value; OnPropertyChanged("GridHeight2"); } } private Visibility _visualizacaoPropriaCorretora { get; set; } = (Visibility)2; public Visibility VisualizacaoPropriaCorretora { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _visualizacaoPropriaCorretora; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) _visualizacaoPropriaCorretora = value; OnPropertyChanged("VisualizacaoPropriaCorretora"); } } public ObservableCollection VendedoresFiltrados { get { return _vendedoresFiltrados; } set { _vendedoresFiltrados = value; IsExpanded = value != null && value.Count > 0; OnPropertyChanged("VendedoresFiltrados"); } } public bool IsExpanded { get { return _isExpanded; } set { _isExpanded = value; OnPropertyChanged("IsExpanded"); } } public VendedorTelefone SelectedTelefone { get { return _selectedTelefone; } set { _selectedTelefone = value; OnPropertyChanged("SelectedTelefone"); } } public ObservableCollection Telefones { get { return _telefones; } set { _telefones = value; OnPropertyChanged("Telefones"); } } public Repasse SelectedRepasse { get { return _selectedRepasse; } set { _selectedRepasse = value; OnPropertyChanged("SelectedRepasse"); } } public ObservableCollection Repasses { get { return _repasses; } set { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown if (value != null && value.Count > 0) { foreach (Repasse item in value) { if (item.Ramo == null) { item.Ramo = new Ramo(); } } } _repasses = value; OnPropertyChanged("Repasses"); } } public string Pesquisa { get { return _pesquisa; } set { _pesquisa = value; OnPropertyChanged("Pesquisa"); } } public Visibility MostrarRamo { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _mostrarRamo; } 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) _mostrarRamo = value; OnPropertyChanged("MostrarRamo"); } } public ObservableCollection Ramos { get { return _ramos; } set { _ramos = value; OnPropertyChanged("Ramos"); } } public List TiposRepasseFiltrados => Enum.GetValues(typeof(TipoRepasse)).Cast().Where(delegate(TipoRepasse tipo) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) TipoAttribute val = (TipoAttribute)typeof(TipoRepasse).GetField(((object)(TipoRepasse)(ref tipo)).ToString()).GetCustomAttributes(typeof(TipoAttribute), inherit: false).FirstOrDefault(); return val == null || val.Tipo == "0" || CoCorretagemAtiva || (TipoRepasse?)tipo == SelectedRepasse.Tipo; }) .ToList(); public bool CoCorretagemAtiva { get; set; } = Recursos.Configuracoes.Any((ConfiguracaoSistema config) => (int)config.Configuracao == 56); public VendedorViewModel() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Expected O, but got Unknown _servico = new VendedorServico(); base.EnableMenu = true; Seleciona(); } private async void WorkOnSelectedVendedor(Vendedor value, bool registrar = true) { CancelVendedor = (Vendedor)((value == null || ((DomainBase)value).Id == 0L) ? ((object)CancelVendedor) : ((object)(Vendedor)((DomainBase)value).Clone())); if (value == null || ((DomainBase)value).Id == 0L) { return; } Loading(isLoading: true); Repasses = new ObservableCollection(await _servico.BuscaRepassesPorIdVendedor(((DomainBase)value).Id)); Telefones = new ObservableCollection(await _servico.BuscarTelefonesAsync(((DomainBase)value).Id)); Loading(isLoading: false); if (LastAccessId == ((DomainBase)value).Id && (int)LastAccessTela == 15) { return; } if (registrar) { VendedorViewModel vendedorViewModel = this; string descricao = "ACESSOU VENDEDOR \"" + value.Nome + "\""; long id = ((DomainBase)value).Id; TipoTela? tela = (TipoTela)15; object[] obj = new object[8] { ((DomainBase)value).Id, Recursos.Empresas.First((Empresa x) => ((DomainBase)x).Id == ((value.IdEmpresa == 0L) ? 1 : value.IdEmpresa)).Nome, value.Documento, null, null, null, null, null }; Banco banco = value.Banco; obj[3] = ((banco != null) ? banco.Nome : null); obj[4] = value.Agencia; obj[5] = value.Conta; obj[6] = value.Desconto; obj[7] = (value.Ativo ? "SIM" : "NÃO"); vendedorViewModel.RegistrarAcao(descricao, id, tela, string.Format("ID: {0}\nFILIAL DO VENDEDOR: {1}\nDOCUMENTO: {2}\nBANCO: {3}\nAGÊNCIA: {4}\nCONTA: {5}\nDESCONTO: {6:N2}\nATIVO: {7}", obj)); } LastAccessId = ((DomainBase)value).Id; LastAccessTela = (TipoTela)15; Vendedor selectedVendedor = SelectedVendedor; if (((selectedVendedor != null) ? new long?(((DomainBase)selectedVendedor).Id) : null) != ((DomainBase)value).Id) { SelectedVendedor = ((IEnumerable)VendedoresFiltrados).FirstOrDefault((Func)((Vendedor x) => ((DomainBase)x).Id == ((DomainBase)value).Id)); } VendedorViewModel vendedorViewModel2 = this; Vendedor selectedVendedor2 = SelectedVendedor; vendedorViewModel2.VisualizacaoPropriaCorretora = (Visibility)((selectedVendedor2 == null || !selectedVendedor2.Corretora) ? 2 : 0); if (((DomainBase)Recursos.Usuario).Id == 0L) { Vendedor selectedVendedor3 = SelectedVendedor; if (selectedVendedor3 != null && selectedVendedor3.Corretora) { _alterarPermissEnabled = true; base.EnableAlterar = true; } else { _alterarPermissEnabled = false; base.EnableAlterar = false; } } } private async void Seleciona() { Loading(isLoading: true); await PermissaoTela((TipoTela)15); await SelecionaVendedores(); await SelecionaRamos(); Loading(isLoading: false); } private async Task SelecionaVendedores(bool selecionar = true) { List list = await new BaseServico().BuscarVendedoresAsync(); Vendedores = (from x in list where Recursos.Usuario.IdEmpresa == 1 || x.IdEmpresa == Recursos.Usuario.IdEmpresa orderby x.Ativo descending, x.Nome select x).ToList(); VendedoresFiltrados = new ObservableCollection(Vendedores); if (selecionar) { SelectedVendedor = VendedoresFiltrados.FirstOrDefault(); } Recursos.Vendedores = list; } private async Task SelecionaRamos() { MostrarRamo = (Visibility)(Recursos.Configuracoes.All((ConfiguracaoSistema x) => (int)x.Configuracao != 20) ? 2 : 0); Ramos.Add(new Ramo { Nome = "TODOS OS RAMOS" }); List source = await new BaseServico().BuscarRamosAsync(); ExtensionMethods.AddRange((ICollection)Ramos, (IEnumerable)(from x in source where x.Ativo orderby x.Nome select x)); } 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_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Expected O, but got Unknown SelectedVendedor = new Vendedor { Ativo = true, Desconto = default(decimal) }; Telefones = new ObservableCollection(); Repasses = new ObservableCollection(); Alterar(alterar: true); } public async Task>> Salvar() { SelectedVendedor.Telefones = Telefones.ToList(); List> errorMessages = SelectedVendedor.Validate(); List> list = errorMessages; list.AddRange(await Validate()); if (errorMessages.Count > 0) { return errorMessages; } SelectedVendedor.Telefones = Telefones.Where((VendedorTelefone x) => !string.IsNullOrEmpty(x.Nome)).ToList(); List repassesValidos = Repasses.ToList().Where(delegate(Repasse x) { List> list2 = x.Validate(); return list2 != null && list2.Count == 0; }).ToList(); if (repassesValidos.Count < Repasses.Count && !(await ShowMessage("HÁ REPASSES INVÁLIDOS, DESEJA PROSSEGUIR?" + Environment.NewLine + "CASO PROSSIGA OS REPASSES INVÁLIDOS NÃO SERÃO SALVOS.", "SIM", "NÃO"))) { Repasses.ToList().ForEach(delegate(Repasse x) { errorMessages.AddRange(x.Validate()); }); return errorMessages; } Repasses = new ObservableCollection(repassesValidos); string acao = ((((DomainBase)SelectedVendedor).Id == 0L) ? "INCLUIU" : "ALTEROU"); Vendedor value = await _servico.Save(SelectedVendedor, Repasses.ToList()); if (!_servico.Sucesso) { return null; } VendedorViewModel vendedorViewModel = this; string descricao = acao + " VENDEDOR \"" + value.Nome + "\""; long id = ((DomainBase)value).Id; TipoTela? tela = (TipoTela)15; object[] obj = new object[8] { ((DomainBase)value).Id, Recursos.Empresas.First((Empresa x) => ((DomainBase)x).Id == ((value.IdEmpresa == 0L) ? 1 : value.IdEmpresa)).Nome, value.Documento, null, null, null, null, null }; Banco banco = value.Banco; obj[3] = ((banco != null) ? banco.Nome : null); obj[4] = value.Agencia; obj[5] = value.Conta; obj[6] = value.Desconto; obj[7] = (value.Ativo ? "SIM" : "NÃO"); vendedorViewModel.RegistrarAcao(descricao, id, tela, string.Format("ID: {0}\nFILIAL DO VENDEDOR: {1}\nDOCUMENTO: {2}\nBANCO: {3}\nAGÊNCIA: {4}\nCONTA: {5}\nDESCONTO: {6:N2}\nATIVO: {7}", obj)); Pesquisa = string.Empty; SelectedVendedor = null; await SelecionaVendedores(selecionar: false); SelectedVendedor = ((IEnumerable)VendedoresFiltrados).FirstOrDefault((Func)((Vendedor x) => ((DomainBase)x).Id == ((DomainBase)value).Id)); Recursos.Vendedores = Vendedores; Alterar(alterar: false); ToggleSnackBar("VENDEDOR SALVO COM SUCESSO"); return null; } public void CancelarAlteracao() { if (CancelVendedor != null && Vendedores.Any((Vendedor x) => ((DomainBase)x).Id == ((DomainBase)CancelVendedor).Id)) { DomainBase.Copy(Vendedores.First((Vendedor x) => ((DomainBase)x).Id == ((DomainBase)CancelVendedor).Id), CancelVendedor); if (VendedoresFiltrados.Count > 0 && VendedoresFiltrados.Any((Vendedor x) => ((DomainBase)x).Id == ((DomainBase)CancelVendedor).Id)) { DomainBase.Copy(VendedoresFiltrados.First((Vendedor x) => ((DomainBase)x).Id == ((DomainBase)CancelVendedor).Id), CancelVendedor); } else { VendedoresFiltrados.Add(CancelVendedor); } VendedoresFiltrados = new ObservableCollection(VendedoresFiltrados); SelectedVendedor = VendedoresFiltrados.First((Vendedor x) => ((DomainBase)x).Id == ((DomainBase)CancelVendedor).Id); } else { Incluir(); } Alterar(alterar: false); } public void IncluirTelefone() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Expected O, but got Unknown if (SelectedVendedor != null) { if (Telefones == null) { Telefones = new ObservableCollection(); } VendedorTelefone val = new VendedorTelefone { Vendedor = SelectedVendedor, Tipo = (TipoTelefone)1 }; Telefones.Add(val); SelectedTelefone = val; } } public void ExcluirTelefone(VendedorTelefone telefone) { Telefones.Remove(telefone); } public void IncluirRepasse() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Expected O, but got Unknown if (SelectedVendedor != null) { if (Repasses == null) { Repasses = new ObservableCollection(); } Repasse val = new Repasse { Vendedor = SelectedVendedor, Forma = (FormaRepasse)1, Incidencia = (TipoIncidencia)1, Tipo = (TipoRepasse)2, Ativo = true, Ramo = Ramos.First() }; Repasses.Insert(0, val); SelectedRepasse = val; } } internal async Task> Filtrar(string value) { return await Task.Run(() => FiltrarVendedor(value)); } public List FiltrarVendedor(string filter) { VendedoresFiltrados = (string.IsNullOrWhiteSpace(filter) ? new ObservableCollection(Vendedores) : new ObservableCollection(from x in Vendedores where ValidationHelper.RemoveDiacritics(x.Nome.Trim()).ToUpper().Contains(ValidationHelper.RemoveDiacritics(filter)) orderby x.Ativo descending, x.Nome select x)); SelectedVendedor = VendedoresFiltrados.FirstOrDefault(); return VendedoresFiltrados.ToList(); } private async Task>> Validate() { List> errors = new List>(); List source = ((!ValidationHelper.ValidateDocument(SelectedVendedor.Documento)) ? new List() : (await new BaseServico().BuscarVendedor(SelectedVendedor.Documento))); Vendedor val = ((IEnumerable)source).FirstOrDefault((Func)((Vendedor x) => ((DomainBase)x).Id != ((DomainBase)SelectedVendedor).Id && x.Documento == SelectedVendedor.Documento && x.Ativo)); if (val != null && Recursos.Configuracoes.All((ConfiguracaoSistema x) => (int)x.Configuracao != 7)) { errors.Add(new KeyValuePair("Documento", "O DOCUMENTO JÁ ESTÁ CADASTRADO PARA O VENDEDOR " + val.Nome + ".")); } if (Recursos.Configuracoes.All((ConfiguracaoSistema x) => (int)x.Configuracao != 15)) { IEnumerable enumerable = Repasses?.Where((Repasse x) => (int)x.Tipo.GetValueOrDefault() == 2 && (x.ValorNovo > 100m || x.ValorRenovacao > 100m)); if (enumerable != null && enumerable.Any()) { errors.Add(new KeyValuePair("VALOR REPASSE", "O VALOR DE REPASSE NÃO PODE SER SUPERIOR A 100%")); } } ObservableCollection observableCollection = await _servico.BuscaRepassesPorIdVendedor(((DomainBase)SelectedVendedor).Id); if (observableCollection != null && observableCollection.Count > 0) { foreach (Repasse semAlteracao in observableCollection) { if (Repasses.Any(delegate(Repasse repasse) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) if (((DomainBase)semAlteracao).Id == ((DomainBase)repasse).Id) { if (semAlteracao.Tipo == repasse.Tipo && !(semAlteracao.ValorNovo != repasse.ValorNovo) && !(semAlteracao.ValorRenovacao != repasse.ValorRenovacao) && semAlteracao.Incidencia == repasse.Incidencia && semAlteracao.Forma == repasse.Forma && semAlteracao.Base == repasse.Base && semAlteracao.Seguradora == repasse.Seguradora) { if (semAlteracao.Ramo == null) { Ramo ramo = repasse.Ramo; if (ramo != null && ((DomainBase)ramo).Id == 0) { return false; } } Ramo ramo2 = semAlteracao.Ramo; long? num = ((ramo2 != null) ? new long?(((DomainBase)ramo2).Id) : null); Ramo ramo3 = repasse.Ramo; return num != ((ramo3 != null) ? new long?(((DomainBase)ramo3).Id) : null); } return true; } return false; }) && (await _servico.BuscarVendedorParcela(((DomainBase)semAlteracao).Id)).Count > 1) { errors.Add(new KeyValuePair("REPASSE", $"O REPASSE, DE ID {((DomainBase)semAlteracao).Id}, NÃO PODE SER ALTERADO POIS JÁ ESTÁ CADASTRADO EM ALGUM DOCUMENTO!")); } } } return errors; } public async Task SalvarVinculo(VinculoRepasse vinculo) { await _servico.Save(vinculo); Repasses = new ObservableCollection(await _servico.BuscaRepassesPorIdVendedor(((DomainBase)SelectedVendedor).Id)); ToggleSnackBar("VINCULO SALVO COM SUCESSO"); } public async Task ExcluirVinculo(VinculoRepasse vinculo) { if (await ShowMessage("DESEJA REALMENTE EXCLUIR O VÍNCULO DO REPASSE SELECIONADO?", "SIM", "NÃO")) { await _servico.Delete(vinculo); Repasses = new ObservableCollection(await _servico.BuscaRepassesPorIdVendedor(((DomainBase)SelectedVendedor).Id)); ToggleSnackBar("VINCULO EXCLUÍDO COM SUCESSO"); } } public async Task AtivarInativarVendedor(Vendedor vendedor) { if (vendedor != null && ((DomainBase)vendedor).Id != 0L) { string acao = (vendedor.Ativo ? "INATIVOU VENDEDOR" : "ATIVOU VENDEDOR"); vendedor.Ativo = !vendedor.Ativo; vendedor = await _servico.Save(vendedor, Repasses.ToList()); VendedorViewModel vendedorViewModel = this; string descricao = acao + " \"" + vendedor.Nome + "\""; long id = ((DomainBase)vendedor).Id; TipoTela? tela = (TipoTela)15; object[] obj = new object[8] { ((DomainBase)vendedor).Id, Recursos.Empresas.First((Empresa x) => ((DomainBase)x).Id == ((vendedor.IdEmpresa == 0L) ? 1 : vendedor.IdEmpresa)).Nome, vendedor.Documento, null, null, null, null, null }; Banco banco = vendedor.Banco; obj[3] = ((banco != null) ? banco.Nome : null); obj[4] = vendedor.Agencia; obj[5] = vendedor.Conta; obj[6] = vendedor.Desconto; obj[7] = (vendedor.Ativo ? "SIM" : "NÃO"); vendedorViewModel.RegistrarAcao(descricao, id, tela, string.Format("ID: {0}\nFILIAL DO VENDEDOR: {1}\nDOCUMENTO: {2}\nBANCO: {3}\nAGÊNCIA: {4}\nCONTA: {5}\nDESCONTO: {6:N2}\nATIVO: {7}", obj)); Pesquisa = string.Empty; SelectedVendedor = null; await SelecionaVendedores(selecionar: false); SelectedVendedor = ((IEnumerable)VendedoresFiltrados).FirstOrDefault((Func)((Vendedor x) => ((DomainBase)x).Id == ((DomainBase)vendedor).Id)); Recursos.Vendedores = Vendedores; Alterar(alterar: false); ToggleSnackBar("VENDEDOR SALVO COM SUCESSO"); } } public async Task AtivarInativarRepasse(Repasse repasse) { if (repasse != null && ((DomainBase)repasse).Id != 0L) { string acao = (repasse.Ativo ? "INATIVOU REPASSE" : "ATIVOU REPASSE"); repasse.Ativo = !repasse.Ativo; Repasse obj = repasse; Ramo ramo = repasse.Ramo; obj.Ramo = ((ramo != null && ((DomainBase)ramo).Id == 0) ? null : repasse.Ramo); repasse = await _servico.Save(repasse); long id = ((DomainBase)SelectedVendedor).Id; RegistrarAcao(acao + " \"" + SelectedVendedor.Nome + "\"", ((DomainBase)SelectedVendedor).Id, (TipoTela)15, string.Format("ID: {0}\nVALOR NOVO: {1:N2}\nVALOR RENOVAÇÃO: {2:N2}\nATIVO: {3}", ((DomainBase)repasse).Id, repasse.ValorNovo, repasse.ValorRenovacao, repasse.Ativo ? "SIM" : "NÃO")); Pesquisa = string.Empty; SelectedVendedor = null; await SelecionaVendedores(selecionar: false); SelectedVendedor = ((IEnumerable)VendedoresFiltrados).FirstOrDefault((Func)((Vendedor x) => ((DomainBase)x).Id == id)); Recursos.Vendedores = Vendedores; Alterar(alterar: false); ToggleSnackBar("REPASSE SALVO COM SUCESSO"); } } }