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 PermissaoUsuarioServico : BaseServico { public async Task> SavePermiss(List permissao, List prev) { int tries = 3; base.Sucesso = true; List permissaoOriginal = permissao; List prevOriginal = prev; return await Task.Run(delegate { List logs = new List(); while (tries > 0) { permissao = permissaoOriginal; prev = prevOriginal; try { UnitOfWork unitOfWork = Instancia.Commited; try { permissao.ForEach(delegate(PermissaoUsuario x) { PermissaoUsuario val = ((IEnumerable)prev).FirstOrDefault((Func)((PermissaoUsuario y) => ((DomainBase)y).Id == ((DomainBase)x).Id)); if (val == null || val.Alterar != x.Alterar || val.Consultar != x.Consultar || val.Excluir != x.Excluir || val.Incluir != x.Incluir) { 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.PermissaoUsuarioRepository.SaveOrUpdate(x) : unitOfWork.PermissaoUsuarioRepository.Merge(x)); } }); SaveLog(logs, unitOfWork); ((GenericUnitOfWork)unitOfWork).Commit(); return permissao; } finally { if (unitOfWork != null) { ((IDisposable)unitOfWork).Dispose(); } } } catch (Exception e) { tries = Registrar(e, (TipoErro)258, tries, new { permissao, prev }); } } return permissaoOriginal; }); } public async Task> PermissUsuario(Usuario usuario) { int tries = 3; return await Task.Run(delegate { while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.PermissaoUsuarioRepository.FindByUsuario(((DomainBase)usuario).Id); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)84, tries, usuario); } } return new List(); }); } public async Task VerificarPermissao(Usuario usuario, TipoTela tela) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) int tries = 3; return await Task.Run((Func)delegate { //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.PermissaoUsuarioRepository.FindByPermissao(((DomainBase)usuario).Id, tela); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)85, tries, new { usuario, tela }); } } return (PermissaoUsuario)null; }); } public PermissaoUsuario BuscarPermissao(Usuario usuario, TipoTela tela) { //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.PermissaoUsuarioRepository.FindByPermissao(((DomainBase)usuario).Id, tela); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { num = Registrar(e, (TipoErro)85, num, new { usuario, tela }); } } return null; } }