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.Generic; using Gestor.Model.Domain.Seguros; namespace Gestor.Application.Servicos.Ferramentas; internal class TipoVendedorServico : BaseServico { internal async Task Save(TipoVendedor tipoVendedor) { int tries = 3; base.Sucesso = true; TipoVendedor tipoVendedorOriginal = tipoVendedor; return await Task.Run(async delegate { while (tries > 0) { List logs = new List(); tipoVendedor = tipoVendedorOriginal; try { UnitOfWork unitOfWork = Instancia.Commited; try { TipoAcao acao = (TipoAcao)(((DomainBase)tipoVendedor).Id != 0L); if (((DomainBase)tipoVendedor).Id == 0L) { TipoVendedor val = tipoVendedor; ((DomainBase)val).Id = await FindLastId() + 1; } TipoAcao val2 = acao; if ((int)val2 != 0) { if ((int)val2 == 1) { logs.Add(CreateLog(((DomainBase)tipoVendedor).Id, tipoVendedor, (TipoTela)14)); } } else { logs.Add(CreateLog(((DomainBase)tipoVendedor).Id, ((DomainBase)tipoVendedor).GetValorOriginal(), (TipoTela)14, (TipoAcao)0)); } tipoVendedor = (((int)acao == 0) ? unitOfWork.TipoVendedorRepository.SaveOrUpdate(tipoVendedor) : unitOfWork.TipoVendedorRepository.Merge(tipoVendedor)); SaveLog(logs, unitOfWork); ((GenericUnitOfWork)unitOfWork).Commit(); return tipoVendedor; } finally { ((IDisposable)unitOfWork)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)237, tries, tipoVendedor); } } return tipoVendedorOriginal; }); } public async Task Delete(TipoVendedor tipoVendedor) { 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)tipoVendedor).Id, ((DomainBase)tipoVendedor).GetValorOriginal(), (TipoTela)14, (TipoAcao)2)); commited.TipoVendedorRepository.Delete(((DomainBase)tipoVendedor).Id); SaveLog(list, commited); ((GenericUnitOfWork)commited).Commit(); return true; } finally { ((IDisposable)commited)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)238, tries, tipoVendedor); } } return false; }); } public async Task FindLastId() { int tries = 3; return await Task.Run(delegate { while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.TipoVendedorRepository.FindLastId(); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)17, tries); } } return 0L; }); } }