using System; using System.Collections.Generic; using System.Threading.Tasks; using Gestor.Application.Helpers; using Gestor.Application.Servicos.Generic; using Gestor.Infrastructure.UnitOfWork.Generic; using Gestor.Infrastructure.UnitOfWork.Logic; using Gestor.Model.API; using Gestor.Model.Common; using Gestor.Model.Domain.Common; using Gestor.Model.Domain.Financeiro; using Gestor.Model.Domain.Generic; namespace Gestor.Application.Servicos.Financeiro; internal class BancosContasServico : BaseServico { public async Task Save(BancosContas bancosContas) { int tries = 3; base.Sucesso = true; BancosContas bancosContasOriginal = bancosContas; return await Task.Run((Func)delegate { while (tries > 0) { List list = new List(); bancosContas = bancosContasOriginal; try { UnitOfWork commited = Instancia.Commited; try { bool num = ((DomainBase)bancosContas).Id != 0L; if (num) { list.Add(CreateLog(((DomainBase)bancosContas).Id, bancosContas, (TipoTela)26)); } bancosContas = ((((DomainBase)bancosContas).Id == 0L) ? commited.BancosContasRepository.SaveOrUpdate(bancosContas) : commited.BancosContasRepository.Merge(bancosContas)); if (!num) { list.Add(CreateLog(((DomainBase)bancosContas).Id, ((DomainBase)bancosContas).GetValorOriginal(), (TipoTela)26, (TipoAcao)0)); } SaveLog(list, commited); ((GenericUnitOfWork)commited).Commit(); return bancosContas; } finally { ((IDisposable)commited)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)245, tries, bancosContas); } } return bancosContasOriginal; }); } public async Task Save(Saldo saldo) { int tries = 3; base.Sucesso = true; Saldo saldoOriginal = saldo; return await Task.Run((Func)delegate { while (tries > 0) { List list = new List(); saldo = saldoOriginal; try { UnitOfWork commited = Instancia.Commited; try { bool num = ((DomainBase)saldo).Id != 0L; if (num) { list.Add(CreateLog(((DomainBase)saldo.Conta).Id, saldo, (TipoTela)26)); } saldo = ((((DomainBase)saldo).Id == 0L) ? commited.SaldoRepository.SaveOrUpdate(saldo) : commited.SaldoRepository.Merge(saldo)); if (!num) { list.Add(CreateLog(((DomainBase)saldo.Conta).Id, ((DomainBase)saldo).GetValorOriginal(), (TipoTela)26, (TipoAcao)0)); } SaveLog(list, commited); ((GenericUnitOfWork)commited).Commit(); return saldo; } finally { ((IDisposable)commited)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)247, tries, saldo); } } return saldoOriginal; }); } public async Task Delete(BancosContas bancosContas) { int tries = 3; return await Task.Run(delegate { while (tries > 0) { List list = new List(); try { UnitOfWork commited = Instancia.Commited; try { list.Add(CreateLog(((DomainBase)bancosContas).Id, ((DomainBase)bancosContas).GetValorOriginal(), (TipoTela)26, (TipoAcao)2)); commited.BancosContasRepository.Delete(((DomainBase)bancosContas).Id); SaveLog(list, commited); ((GenericUnitOfWork)commited).Commit(); return true; } finally { ((IDisposable)commited)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)246, tries, bancosContas); } } return false; }); } public async Task DeleteSaldo(Saldo saldo) { int tries = 3; return await Task.Run(delegate { while (tries > 0) { List list = new List(); try { UnitOfWork commited = Instancia.Commited; try { list.Add(CreateLog(((DomainBase)saldo).Id, ((DomainBase)saldo).GetValorOriginal(), (TipoTela)26, (TipoAcao)2)); commited.SaldoRepository.Delete(((DomainBase)saldo).Id); SaveLog(list, commited); ((GenericUnitOfWork)commited).Commit(); return true; } finally { ((IDisposable)commited)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)248, tries, saldo); } } return false; }); } public async Task> BuscarBancos() { int tries = 3; return await Task.Run(delegate { while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.BancosContasRepository.Find(); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)145, tries); } } return new List(); }); } public async Task BuscarSaldoAberto(long id) { int tries = 3; return await Task.Run((Func)delegate { //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Expected O, but got Unknown while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.SaldoRepository.BuscarAberto(id); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)147, tries, id); } } return new Saldo(); }); } public async Task> BuscarSaldoAberto(List ids) { int tries = 3; return await Task.Run(delegate { while (tries > 0) { try { List saldos = new List(); UnitOfWork unitOfWork = Instancia.Read; try { ids.ForEach(delegate(long id) { Saldo val = unitOfWork.SaldoRepository.BuscarAberto(id); if (val != null) { saldos.Add(val); } }); } finally { if (unitOfWork != null) { ((IDisposable)unitOfWork).Dispose(); } } return saldos; } catch (Exception e) { tries = Registrar(e, (TipoErro)148, tries, ids); } } return new List(); }); } public async Task FecharSaldo(Saldo saldo) { int tries = 3; return await Task.Run((Func)delegate { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.LancamentoRepository.FecharSaldo(saldo); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)149, tries, saldo); } } return new Saldo(); }); } public async Task> BuscarSaldos(long id) { int tries = 3; return await Task.Run(delegate { while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.SaldoRepository.BuscarPorConta(id); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)150, tries, id); } } return new List(); }); } public async Task BuscarSaldo(DateTime inicio, long id) { int tries = 3; return await Task.Run((Func)delegate { //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Expected O, but got Unknown while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.SaldoRepository.BuscarPorData(inicio, id); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)151, tries, new { inicio, id }); } } return new Saldo(); }); } public async Task BuscarSaldoInicial(long id) { int tries = 3; return await Task.Run((Func)delegate { //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Expected O, but got Unknown while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.SaldoRepository.BuscarPorMenorData(id); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)151, tries, new { id }); } } return new Saldo(); }); } }