using System; using System.Collections.Generic; using System.Linq; 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; public class RestricaoUsuarioServico : BaseServico { public RestricaoUsuario BuscarRestricao(Usuario usuario, TipoRestricao restricao) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) int num = 3; while (num > 0) { try { UnitOfWork read = Instancia.Read; try { return read.RestricaoUsuarioRepository.FindRestricao(((DomainBase)usuario).Id, restricao); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { num = Registrar(e, (TipoErro)89, num, new { usuario, restricao }); } } return null; } public async Task> SaveRestri(List restricoes, List prev) { int tries = 3; base.Sucesso = true; List restricoesOriginal = restricoes; List prevOriginal = prev; return await Task.Run(delegate { while (tries > 0) { new List(); List logs = new List(); restricoes = restricoesOriginal; prev = prevOriginal; try { UnitOfWork unitOfWork = Instancia.Commited; try { restricoes.ForEach(delegate(RestricaoUsuario x) { RestricaoUsuario val = ((IEnumerable)prev).FirstOrDefault((Func)((RestricaoUsuario y) => (((DomainBase)x).Id != 0L) ? (((DomainBase)y).Id == ((DomainBase)x).Id) : (y.Tipo == x.Tipo))); if (val == null || val.Restricao != x.Restricao) { if (val == null) { logs.Add(CreateLog(((DomainBase)x.Usuario).Id, ((DomainBase)x).GetValorOriginal(), (TipoTela)43, (TipoAcao)0)); } else { logs.Add(CreateLog(((DomainBase)x.Usuario).Id, ((DomainBase)x).Compare(((DomainBase)val).GetValorOriginal()), (TipoTela)43, (TipoAcao)1)); } x = ((((DomainBase)x).Id == 0L) ? unitOfWork.RestricaoUsuarioRepository.SaveOrUpdate(x) : unitOfWork.RestricaoUsuarioRepository.Merge(x)); } }); SaveLog(logs, unitOfWork); ((GenericUnitOfWork)unitOfWork).Commit(); return restricoes; } finally { if (unitOfWork != null) { ((IDisposable)unitOfWork).Dispose(); } } } catch (Exception e) { tries = Registrar(e, (TipoErro)261, tries, new { restricoes, prev }); } } return restricoesOriginal; }); } public async Task> SaveRestriCamposRelatorios(List restricoes, List prev) { int tries = 3; base.Sucesso = true; List restricoesOriginal = restricoes; List prevOriginal = prev; return await Task.Run(delegate { while (tries > 0) { new List(); List logs = new List(); restricoes = restricoesOriginal; prev = prevOriginal; try { UnitOfWork unitOfWork = Instancia.Commited; try { restricoes.ForEach(delegate(RestricaoUsuarioCamposRelatorios x) { RestricaoUsuarioCamposRelatorios val = ((IEnumerable)prev).FirstOrDefault((Func)delegate(RestricaoUsuarioCamposRelatorios y) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) if (((DomainBase)y).Id != 0L) { return ((DomainBase)y).Id == ((DomainBase)x).Id; } return y.Campo == x.Campo && y.Relatorio == x.Relatorio; }); if (val == null || val.Restricao != x.Restricao) { if (val == null) { logs.Add(CreateLog(((DomainBase)x.Usuario).Id, ((DomainBase)x).GetValorOriginal(), (TipoTela)43, (TipoAcao)0)); } else { logs.Add(CreateLog(((DomainBase)x.Usuario).Id, ((DomainBase)x).Compare(((DomainBase)val).GetValorOriginal()), (TipoTela)43, (TipoAcao)1)); } x = ((((DomainBase)x).Id == 0L) ? unitOfWork.RestricaoUsuarioCamposRelatoriosRepository.SaveOrUpdate(x) : unitOfWork.RestricaoUsuarioCamposRelatoriosRepository.Merge(x)); } }); SaveLog(logs, unitOfWork); ((GenericUnitOfWork)unitOfWork).Commit(); return restricoes; } finally { if (unitOfWork != null) { ((IDisposable)unitOfWork).Dispose(); } } } catch (Exception e) { tries = Registrar(e, (TipoErro)261, tries, new { restricoes, prev }); } } return restricoesOriginal; }); } public async Task> BuscarRestricoes(long id) { int tries = 3; return await Task.Run(delegate { while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.RestricaoUsuarioRepository.FindByUsuario(id); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)90, tries, id); } } return new List(); }); } public async Task> BuscarRestricoesCamposRelatorios(long id) { int tries = 3; return await Task.Run(delegate { while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.RestricaoUsuarioCamposRelatoriosRepository.FindByUsuario(id); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)90, tries, id); } } return new List(); }); } }