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; namespace Gestor.Application.Servicos.Ferramentas; internal class SocioServico : BaseServico { public async Task Save(Socio socio) { int tries = 3; base.Sucesso = true; Socio socioOriginal = socio; return await Task.Run((Func)delegate { List list = new List(); socio = socioOriginal; while (tries > 0) { socio = socioOriginal; try { UnitOfWork commited = Instancia.Commited; try { bool num = ((DomainBase)socio).Id != 0L; if (num) { list.Add(CreateLog(((DomainBase)socio).Id, socio, (TipoTela)19)); } socio = ((((DomainBase)socio).Id == 0L) ? commited.SocioRepository.SaveOrUpdate(socio) : commited.SocioRepository.Merge(socio)); if (!num) { list.Add(CreateLog(((DomainBase)socio).Id, ((DomainBase)socio).GetValorOriginal(), (TipoTela)19, (TipoAcao)0)); } SaveLog(list, commited); ((GenericUnitOfWork)commited).Commit(); return socio; } finally { ((IDisposable)commited)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)235, tries, socio); } } return socioOriginal; }); } public async Task Delete(Socio socio) { 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)socio).Id, ((DomainBase)socio).GetValorOriginal(), (TipoTela)19, (TipoAcao)2)); commited.SocioRepository.Delete(((DomainBase)socio).Id); SaveLog(list, commited); ((GenericUnitOfWork)commited).Commit(); return true; } finally { ((IDisposable)commited)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)236, tries, socio); } } return false; }); } }