using System; 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.Domain.Common; using Gestor.Model.Domain.Generic; namespace Gestor.Application.Servicos.Seguros; internal class ProfissaoServico : BaseServico { public async Task Save(Profissao profissao) { int tries = 3; base.Sucesso = true; Profissao profissaoOriginal = profissao; return await Task.Run((Func)delegate { while (tries > 0) { profissao = profissaoOriginal; try { UnitOfWork commited = Instancia.Commited; try { bool flag = ((DomainBase)profissao).Id == 0; profissao = (flag ? commited.ProfissaoRepository.SaveOrUpdate(profissao) : commited.ProfissaoRepository.Merge(profissao)); ((GenericUnitOfWork)commited).Commit(); return profissao; } finally { ((IDisposable)commited)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)214, tries, profissao); } } return profissaoOriginal; }); } public async Task FindLastId() { int tries = 3; return await Task.Run(delegate { while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.ProfissaoRepository.FindLastId(); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)17, tries); } } return 0L; }); } }