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.Ferramentas; using Gestor.Model.Domain.Generic; using Gestor.Model.Domain.Relatorios; namespace Gestor.Application.Servicos.Ferramentas; internal class NotaFiscalServico : BaseServico { internal async Task> BuscarNotasFiscais() { int tries = 3; return await Task.Run(delegate { while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.NotaFiscalRepository.FindAll(); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)312, tries); } } return new List(); }); } internal async Task Save(NotaFiscal notaFiscal) { int tries = 3; base.Sucesso = true; NotaFiscal notaFiscalOriginal = notaFiscal; return await Task.Run((Func)delegate { while (tries > 0) { List list = new List(); notaFiscal = notaFiscalOriginal; try { UnitOfWork commited = Instancia.Commited; try { bool num = ((DomainBase)notaFiscal).Id != 0L; if (num) { list.Add(CreateLog(((DomainBase)notaFiscal).Id, notaFiscal, (TipoTela)55)); } notaFiscal = ((((DomainBase)notaFiscal).Id == 0L) ? commited.NotaFiscalRepository.SaveOrUpdate(notaFiscal) : commited.NotaFiscalRepository.Merge(notaFiscal)); if (!num) { list.Add(CreateLog(((DomainBase)notaFiscal).Id, ((DomainBase)notaFiscal).GetValorOriginal(), (TipoTela)55, (TipoAcao)0)); } SaveLog(list, commited); ((GenericUnitOfWork)commited).Commit(); return notaFiscal; } finally { ((IDisposable)commited)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)313, tries, notaFiscal); } } return notaFiscalOriginal; }); } public async Task Delete(NotaFiscal notaFiscal) { 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)notaFiscal).Id, ((DomainBase)notaFiscal).GetValorOriginal(), (TipoTela)55, (TipoAcao)2)); commited.NotaFiscalRepository.Delete(((DomainBase)notaFiscal).Id); SaveLog(list, commited); ((GenericUnitOfWork)commited).Commit(); return true; } finally { ((IDisposable)commited)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)314, tries, notaFiscal); } } return false; }); } internal async Task Cadatrada(long idExtrato) { int tries = 3; return await Task.Run(delegate { while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.NotaFiscalRepository.FindByExtrato(idExtrato); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)315, tries, idExtrato); } } return false; }); } public async Task> BuscarNotasFiscais(Filtros filtro) { int tries = 3; return await Task.Run(delegate { while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.NotaFiscalRepository.FindByDatas(filtro); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)315, tries, filtro); } } return new List(); }); } }