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 PermissaoArquivoDigitalServico : 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 { while (tries > 0) { permissao = permissaoOriginal; prev = prevOriginal; new List(); List logs = new List(); try { UnitOfWork unitOfWork = Instancia.Commited; try { permissao.ForEach(delegate(PermissaoArquivoDigital x) { PermissaoArquivoDigital val = ((IEnumerable)prev).FirstOrDefault((Func)((PermissaoArquivoDigital y) => ((DomainBase)y).Id == ((DomainBase)x).Id)); if (val == null || 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.PermissaoArquivoDigitalRepository.SaveOrUpdate(x) : unitOfWork.PermissaoArquivoDigitalRepository.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> PermissArquivoDigital(Usuario usuario) { int tries = 3; return await Task.Run(delegate { while (tries > 0) { try { UnitOfWork read = Instancia.Read; try { return read.PermissaoArquivoDigitalRepository.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, TipoArquivoDigital 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.PermissaoArquivoDigitalRepository.FindByPermissao(((DomainBase)usuario).Id, tela); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { tries = Registrar(e, (TipoErro)85, tries, new { usuario, tela }); } } return (PermissaoArquivoDigital)null; }); } public PermissaoArquivoDigital BuscarPermissao(Usuario usuario, TipoArquivoDigital tela) { //IL_0063: 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) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown int num = 3; while (num > 0) { try { UnitOfWork read = Instancia.Read; try { PermissaoArquivoDigital val = read.PermissaoArquivoDigitalRepository.FindByPermissao(((DomainBase)usuario).Id, tela); if (val == null) { return new PermissaoArquivoDigital { Usuario = usuario, Tela = tela, Consultar = true, Excluir = true, Incluir = true }; } return val; } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception e) { num = Registrar(e, (TipoErro)85, num, new { usuario, tela }); } } return null; } }