using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Threading.Tasks; using Gestor.Application.Actions; using Gestor.Application.Helpers; using Gestor.Application.Servicos; using Gestor.Model.Common; using Gestor.Model.Domain.Configuracoes; using Gestor.Model.Domain.Generic; using Gestor.Model.Domain.Seguros; using Gestor.Model.Resources; namespace Gestor.Application.ViewModels.Generic; public class DialogEditarParcelasViewModel : BaseViewModel { private List _parcelasOriginais; internal ParcelaServico ParcelaServico; private ObservableCollection _parcelas; private bool _isFatura; private string _status; private Parcela _selectedParcela; private Documento _selectedDocumento; public ObservableCollection Parcelas { get { return _parcelas; } set { _parcelas = value; OnPropertyChanged("Parcelas"); } } public bool IsFatura { get { return _isFatura; } set { _isFatura = value; OnPropertyChanged("IsFatura"); } } public string Status { get { return _status; } set { _status = value; OnPropertyChanged("Status"); } } public Parcela SelectedParcela { get { return _selectedParcela; } set { _selectedParcela = value; OnPropertyChanged("SelectedParcela"); } } public Documento SelectedDocumento { get { return _selectedDocumento; } set { _selectedDocumento = value; OnPropertyChanged("SelectedDocumento"); } } public DialogEditarParcelasViewModel(Documento documento) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Invalid comparison between Unknown and I4 SelectedDocumento = documento; ParcelaServico = new ParcelaServico(); Carregar(((DomainBase)documento).Id); IsFatura = (int)documento.TipoRecebimento.GetValueOrDefault((TipoRecebimento)1) == 2; } public async void Carregar(long id) { await CarregarParcelas(id); } public async Task CarregarParcelas(long id) { ObservableCollection observableCollection = await new ParcelaServico().BuscarParcelasAsync(id); _parcelasOriginais = new List(); foreach (Parcela item in observableCollection) { _parcelasOriginais.Add((Parcela)((DomainBase)item).Clone()); } Parcelas = (IsFatura ? new ObservableCollection(observableCollection.OrderBy((Parcela x) => x.NumeroParcela)) : observableCollection); } public async Task SalvarParcelas() { foreach (Parcela p in Parcelas) { Parcela val = _parcelasOriginais.First((Parcela x) => ((DomainBase)x).Id == ((DomainBase)p).Id); if (!(p.Vencimento != val.Vencimento) && !(p.Valor != val.Valor)) { continue; } val.Vencimento = p.Vencimento; val.Valor = p.Valor; List> list = SelectedParcela.Validate(Recursos.Configuracoes.Any((ConfiguracaoSistema x) => (int)x.Configuracao == 9), Recursos.Configuracoes.Any((ConfiguracaoSistema y) => (int)y.Configuracao == 11), true, Recursos.Configuracoes.Any((ConfiguracaoSistema x) => (int)x.Configuracao == 16)); if (list.Count > 0) { string text = string.Join(", ", list.Select(delegate(KeyValuePair x) { string[] array = x.Key.Split(new char[1] { '|' }); return ((array.Length > 1) ? array[1] : x.Key) + ": " + x.Value + Environment.NewLine; })); Status = "NÃO FOI POSSÍVEL SALVAR DEVIDO AOS ERROS ABAIXO:" + Environment.NewLine + text; return false; } await new ParcelaServico().Save(val, _parcelasOriginais); } RegistrarAcao($"EDITOU VENCIMENTO E/OU VALORES DAS PARCELAS/FATURAS DO DOCUMENTO DE ID {((DomainBase)Parcelas[0].Documento).Id}", ((DomainBase)Parcelas[0].Documento).Id, (TipoTela)5); return true; } public void AlterandoValor() { //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Invalid comparison between Unknown and I4 //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Invalid comparison between Unknown and I4 if (SelectedParcela.Documento == null) { SelectedParcela.Documento = SelectedDocumento; } SelectedParcela.Documento.Parcelas = Parcelas; if ((int)SelectedDocumento.TipoRecebimento.GetValueOrDefault() == 1 && (int)SelectedParcela.SubTipo == 1 && SelectedParcela.Comissao == 0m) { SelectedParcela.Comissao = SelectedDocumento.Comissao; } SelectedParcela.Baixando = false; AlterarValor(); } public void AlterandoVencimento(Parcela parcela) { if (Recursos.Configuracoes.All((ConfiguracaoSistema y) => (int)y.Configuracao != 11) && parcela.Documento.Vigencia2.HasValue) { DateTime vencimento = parcela.Vencimento; DateTime? vigencia = parcela.Documento.Vigencia2; if (vigencia.HasValue && vencimento > vigencia.GetValueOrDefault() && ((DomainBase)parcela.Documento.Controle.Ramo).Id != 23) { Gestor.Application.Actions.Actions.AcionarSnackbar?.Invoke("DATA INVÁLIDA. " + Messages.VencimentoMaior); parcela.Vencimento = _parcelasOriginais.First((Parcela x) => ((DomainBase)x).Id == ((DomainBase)parcela).Id).Vencimento; } } if (Recursos.Configuracoes.All((ConfiguracaoSistema x) => (int)x.Configuracao != 9) && ((parcela.Documento.Vigencia1 > DateTime.MinValue && parcela.NumeroParcela == 1 && parcela.Vencimento < parcela.Documento.Vigencia1.AddDays(-30.0)) || (parcela.NumeroParcela != 1 && parcela.Vencimento < parcela.Documento.Vigencia1))) { Gestor.Application.Actions.Actions.AcionarSnackbar?.Invoke("DATA INVÁLIDA. " + Messages.VencimentoMenor); parcela.Vencimento = _parcelasOriginais.First((Parcela x) => ((DomainBase)x).Id == ((DomainBase)parcela).Id).Vencimento; } Parcelas = new ObservableCollection(Parcelas.OrderBy((Parcela x) => x.NumeroParcela)); } public void AlterarValor() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Invalid comparison between Unknown and I4 if (SelectedParcela == null) { return; } if ((int)SelectedParcela.SubTipo == 1 && !IsFatura) { decimal valor = SelectedDocumento.PremioTotal - Parcelas.Where((Parcela x) => (int)x.SubTipo == 1 && ((DomainBase)x).Id != ((DomainBase)SelectedParcela).Id).Sum((Parcela x) => x.Valor); decimal num = SelectedDocumento.PremioTotal - Parcelas.Where((Parcela x) => (int)x.SubTipo == 1 && ((DomainBase)x).Id < ((DomainBase)SelectedParcela).Id).Sum((Parcela x) => x.Valor); num -= SelectedParcela.Valor; decimal num2 = SelectedDocumento.NumeroParcelas - (decimal)SelectedParcela.NumeroParcela; if (num2 == 0m) { num2 = 1m; } decimal valorDemais = ((num2 > 0m) ? (num / num2) : 0m); if (valorDemais == 0m) { SelectedParcela.Valor = valor; } List parcelas = new List { SelectedParcela }; decimal num3 = Math.Abs(valorDemais); decimal? tolerancia = SelectedDocumento.Controle.Seguradora.Tolerancia; if (((num3 > tolerancia.GetValueOrDefault()) & tolerancia.HasValue) && !Parcelas.Any((Parcela x) => (int)x.SubTipo == 1 && x.NumeroParcela > SelectedParcela.NumeroParcela)) { SelectedParcela.Valor = valor; } Parcelas.Where((Parcela x) => (int)x.SubTipo == 1 && x.NumeroParcela != SelectedParcela.NumeroParcela).ToList().ForEach(delegate(Parcela x) { if (x.NumeroParcela > SelectedParcela.NumeroParcela) { x.Valor = ((valorDemais > 0m) ? valorDemais : x.Valor); x.Comissao = ((x.Comissao == 0m) ? SelectedDocumento.Comissao : x.Comissao); } parcelas.Add(x); }); foreach (Parcela item in parcelas.Where((Parcela x) => x.NumeroParcela >= SelectedParcela.NumeroParcela)) { item.Documento = SelectedDocumento; if (((DomainBase)item).Id != ((DomainBase)SelectedParcela).Id) { item.Valor = valorDemais; } } Parcelas = new ObservableCollection(parcelas.OrderBy((Parcela x) => x.NumeroParcela)); } else { SelectedParcela.Documento = SelectedDocumento; } } }