using Gestor.Application.Helpers; using Gestor.Application.Servicos.Generic; using Gestor.Infrastructure.Repository.Interface; using Gestor.Infrastructure.UnitOfWork.Generic; using Gestor.Infrastructure.UnitOfWork.Logic; using Gestor.Model.Common; using Gestor.Model.Domain.Common; using Gestor.Model.Domain.Generic; using Gestor.Model.Domain.Seguros; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Runtime.CompilerServices; using System.Threading.Tasks; namespace Gestor.Application.Servicos { public class PermissaoArquivoDigitalServico : BaseServico { public PermissaoArquivoDigitalServico() { } public PermissaoArquivoDigital BuscarPermissao(Usuario usuario, TipoArquivoDigital tela) { PermissaoArquivoDigital permissaoArquivoDigital; int num = 3; while (num > 0) { try { using (UnitOfWork read = Instancia.Read) { PermissaoArquivoDigital permissaoArquivoDigital1 = read.get_PermissaoArquivoDigitalRepository().FindByPermissao(usuario.get_Id(), tela); if (permissaoArquivoDigital1 != null) { permissaoArquivoDigital = permissaoArquivoDigital1; } else { PermissaoArquivoDigital permissaoArquivoDigital2 = new PermissaoArquivoDigital(); permissaoArquivoDigital2.set_Usuario(usuario); permissaoArquivoDigital2.set_Tela(tela); permissaoArquivoDigital2.set_Consultar(true); permissaoArquivoDigital2.set_Excluir(true); permissaoArquivoDigital2.set_Incluir(true); permissaoArquivoDigital = permissaoArquivoDigital2; } } } catch (Exception exception1) { Exception exception = exception1; num = base.Registrar(exception, 85, num, new { usuario = usuario, tela = tela }, true); continue; } return permissaoArquivoDigital; } return null; } public async Task> PermissArquivoDigital(Usuario usuario) { int num = 3; List permissaoArquivoDigitals1 = await Task.Run>(() => { List permissaoArquivoDigitals; while (num > 0) { try { using (UnitOfWork read = Instancia.Read) { permissaoArquivoDigitals = read.get_PermissaoArquivoDigitalRepository().FindByUsuario(usuario.get_Id()); } } catch (Exception exception) { num = base.Registrar(exception, 84, num, usuario, true); continue; } return permissaoArquivoDigitals; } return new List(); }); return permissaoArquivoDigitals1; } public async Task> SavePermiss(List permissao, List prev) { int num = 3; base.Sucesso = true; List permissaoArquivoDigitals1 = permissao; List permissaoArquivoDigitals2 = prev; List permissaoArquivoDigitals3 = await Task.Run>(() => { List permissaoArquivoDigitals; while (num > 0) { permissao = permissaoArquivoDigitals1; prev = permissaoArquivoDigitals2; List diferencas = new List(); List registroLogs = new List(); try { using (UnitOfWork commited = Instancia.Commited) { permissao.ForEach((PermissaoArquivoDigital x) => { PermissaoArquivoDigital permissaoArquivoDigital = x; PermissaoArquivoDigital permissaoArquivoDigital1 = prev.FirstOrDefault((PermissaoArquivoDigital y) => y.get_Id() == permissaoArquivoDigital.get_Id()); if (permissaoArquivoDigital1 != null && permissaoArquivoDigital1.get_Consultar() == permissaoArquivoDigital.get_Consultar() && permissaoArquivoDigital1.get_Excluir() == permissaoArquivoDigital.get_Excluir() && permissaoArquivoDigital1.get_Incluir() == permissaoArquivoDigital.get_Incluir()) { return; } if (permissaoArquivoDigital1 != null) { registroLogs.Add(base.CreateLog(permissaoArquivoDigital.get_Usuario().get_Id(), permissaoArquivoDigital.Compare(permissaoArquivoDigital1.GetValorOriginal()), 43, 1)); } else { registroLogs.Add(base.CreateLog(permissaoArquivoDigital.get_Usuario().get_Id(), permissaoArquivoDigital.GetValorOriginal(), 43, 0)); } permissaoArquivoDigital = (permissaoArquivoDigital.get_Id() == 0 ? commited.get_PermissaoArquivoDigitalRepository().SaveOrUpdate(permissaoArquivoDigital) : commited.get_PermissaoArquivoDigitalRepository().Merge(permissaoArquivoDigital)); }); base.SaveLog(registroLogs, commited); commited.Commit(); permissaoArquivoDigitals = permissao; } } catch (Exception exception) { num = base.Registrar(exception, 258, num, new { permissao = permissao, prev = prev }, true); continue; } return permissaoArquivoDigitals; } return permissaoArquivoDigitals1; }); return permissaoArquivoDigitals3; } public async Task VerificarPermissao(Usuario usuario, TipoArquivoDigital tela) { int num = 3; PermissaoArquivoDigital permissaoArquivoDigital1 = await Task.Run(() => { PermissaoArquivoDigital permissaoArquivoDigital; while (num > 0) { try { using (UnitOfWork read = Instancia.Read) { permissaoArquivoDigital = read.get_PermissaoArquivoDigitalRepository().FindByPermissao(usuario.get_Id(), tela); } } catch (Exception exception) { num = base.Registrar(exception, 85, num, new { usuario = usuario, tela = tela }, true); continue; } return permissaoArquivoDigital; } return null; }); return permissaoArquivoDigital1; } } }