コード例 #1
0
        public async Task <Usuario> ObterUsuarioLogado()
        {
            var login   = ObterLoginAtual();
            var usuario = repositorioUsuario.ObterPorCodigoRfLogin(string.Empty, login);

            if (usuario == null)
            {
                throw new NegocioException("Usuário não encontrado.");
            }

            var chaveRedis          = $"perfis-usuario-{login}";
            var perfisUsuarioString = repositorioCache.Obter(chaveRedis);

            IEnumerable <PrioridadePerfil> perfisDoUsuario = null;

            if (string.IsNullOrWhiteSpace(perfisUsuarioString))
            {
                var perfisPorLogin = await servicoEOL.ObterPerfisPorLogin(login);

                if (perfisPorLogin == null)
                {
                    throw new NegocioException($"Não foi possível obter os perfis do usuário {login}");
                }

                perfisDoUsuario = repositorioPrioridadePerfil.ObterPerfisPorIds(perfisPorLogin.Perfis);
                _ = repositorioCache.SalvarAsync(chaveRedis, JsonConvert.SerializeObject(perfisDoUsuario));
            }
            else
            {
                perfisDoUsuario = JsonConvert.DeserializeObject <IEnumerable <PrioridadePerfil> >(perfisUsuarioString);
            }
            usuario.DefinirPerfis(perfisDoUsuario);

            return(usuario);
        }
コード例 #2
0
        public async Task <IEnumerable <PrioridadePerfil> > ObterPerfisUsuario(string login)
        {
            var chaveRedis = $"perfis-usuario-{login}";

            var perfisPorLogin = await servicoEOL.ObterPerfisPorLogin(login);

            if (perfisPorLogin == null)
            {
                throw new NegocioException($"Não foi possível obter os perfis do usuário {login}");
            }

            var perfisDoUsuario = repositorioPrioridadePerfil.ObterPerfisPorIds(perfisPorLogin.Perfis);

            _ = repositorioCache.SalvarAsync(chaveRedis, JsonConvert.SerializeObject(perfisDoUsuario));

            return(perfisDoUsuario);
        }
コード例 #3
0
        private async Task <IEnumerable <Guid> > ValidarPerfilCJ(string codigoRF, Guid codigoUsuarioCore, IEnumerable <Guid> perfilsAtual, string login)
        {
            var atribuicaoCJ = repositorioAtribuicaoCJ.ObterAtribuicaoAtiva(codigoRF);

            if (atribuicaoCJ != null && atribuicaoCJ.Any())
            {
                return(perfilsAtual);
            }

            var atribuicaoEsporadica = repositorioAtribuicaoEsporadica.ObterUltimaPorRF(codigoRF);

            if (atribuicaoEsporadica != null && !string.IsNullOrWhiteSpace(atribuicaoEsporadica.ProfessorRf) && atribuicaoEsporadica.DataFim > DateTime.Today)
            {
                return(perfilsAtual);
            }

            await servicoEOL.RemoverCJSeNecessario(codigoUsuarioCore);

            var usuarioEol = await servicoEOL.ObterPerfisPorLogin(login);

            return(usuarioEol.Perfis);
        }
コード例 #4
0
 public async Task <UsuarioEolAutenticacaoRetornoDto> ObterPerfilsUsuarioPorLogin(string login)
 {
     return(await servicoEOL.ObterPerfisPorLogin(login));
 }