public async Task <UsuarioAutenticacaoRetornoDto> Autenticar(string login, string senha)
        {
            login = login.Trim().ToLower();

            var retornoAutenticacaoEol = await servicoAutenticacao.AutenticarNoEol(login, senha);

            if (!retornoAutenticacaoEol.Item1.Autenticado)
            {
                return(retornoAutenticacaoEol.Item1);
            }

            if (!retornoAutenticacaoEol.Item4 && retornoAutenticacaoEol.Item5)
            {
                retornoAutenticacaoEol.Item3 = ValidarPerfilCJ(retornoAutenticacaoEol.Item2, retornoAutenticacaoEol.Item1.UsuarioId, retornoAutenticacaoEol.Item3, login).Result;
            }

            var dadosUsuario = await servicoEOL.ObterMeusDados(login);

            var usuario = servicoUsuario.ObterUsuarioPorCodigoRfLoginOuAdiciona(retornoAutenticacaoEol.Item2, login, dadosUsuario.Nome, dadosUsuario.Email, true);

            retornoAutenticacaoEol.Item1.PerfisUsuario = await servicoPerfil.DefinirPerfilPrioritario(retornoAutenticacaoEol.Item3, usuario);

            var perfilSelecionado = retornoAutenticacaoEol.Item1.PerfisUsuario.PerfilSelecionado;

            var permissionamentos = await repositorioCache.Obter($"Permissionamento-{perfilSelecionado.ToString()}", () => servicoEOL.ObterPermissoesPorPerfil(perfilSelecionado), 720);

            if (permissionamentos == null || !permissionamentos.Any())
            {
                retornoAutenticacaoEol.Item1.Autenticado = false;
                return(retornoAutenticacaoEol.Item1);
            }

            var listaPermissoes = permissionamentos
                                  .Distinct()
                                  .Select(a => (Permissao)a)
                                  .ToList();

            // Revoga token atual para geração de um novo
            //await servicoTokenJwt.RevogarToken(login);

            // Gera novo token e guarda em cache
            retornoAutenticacaoEol.Item1.Token =
                servicoTokenJwt.GerarToken(login, dadosUsuario.Nome, usuario.CodigoRf, retornoAutenticacaoEol.Item1.PerfisUsuario.PerfilSelecionado, listaPermissoes);

            retornoAutenticacaoEol.Item1.DataHoraExpiracao = servicoTokenJwt.ObterDataHoraExpiracao();
            //var fromDate = servicoTokenJwt.ObterDataHoraCriacao();

            usuario.AtualizaUltimoLogin();

            repositorioUsuario.Salvar(usuario);

            await servicoAbrangencia.Salvar(login, perfilSelecionado, true);

            return(retornoAutenticacaoEol.Item1);
        }
Example #2
0
        public async Task <MeusDadosDto> BuscarMeusDados()
        {
            var login     = servicoUsuario.ObterLoginAtual();
            var meusDados = await servicoEOL.ObterMeusDados(login);

            return(meusDados);
        }
Example #3
0
        public async Task <MeusDadosDto> BuscarMeusDados()
        {
            var login     = servicoUsuario.ObterLoginAtual();
            var meusDados = await servicoEOL.ObterMeusDados(login);

            var dadosUsuarioSgp = repositorioUsuario.ObterPorCodigoRfLogin(null, login);

            if (dadosUsuarioSgp != null)
            {
                meusDados.Email = dadosUsuarioSgp.Email;
            }
            return(meusDados);
        }
Example #4
0
        public void NotificarCompensacaoAusencia(long compensacaoId)
        {
            // Verifica se compensação possui alunos vinculados
            var alunos = repositorioCompensacaoAusenciaAluno.ObterPorCompensacao(compensacaoId).Result;

            if (alunos == null || !alunos.Any())
            {
                return;
            }

            // Verifica se possui aluno não notificado na compensação
            alunos = alunos.Where(a => !a.Notificado);
            if (!alunos.Any())
            {
                return;
            }

            // Carrega dados da compensacao a notificar
            var          compensacao   = repositorioCompensacaoAusencia.ObterPorId(compensacaoId);
            var          turma         = repositorioTurma.ObterPorId(compensacao.TurmaId);
            var          ue            = repositorioUe.ObterUEPorTurma(turma.CodigoTurma);
            var          dre           = repositorioDre.ObterPorId(ue.DreId);
            var          disciplinaEOL = ObterNomeDisciplina(compensacao.DisciplinaId);
            MeusDadosDto professor     = servicoEOL.ObterMeusDados(compensacao.CriadoRF).Result;

            // Carrega dados dos alunos não notificados
            var alunosTurma = servicoEOL.ObterAlunosPorTurma(turma.CodigoTurma).Result;
            var alunosDto   = new List <CompensacaoAusenciaAlunoQtdDto>();

            foreach (var aluno in alunos)
            {
                var alunoEol = alunosTurma.FirstOrDefault(a => a.CodigoAluno == aluno.CodigoAluno);
                alunosDto.Add(new CompensacaoAusenciaAlunoQtdDto()
                {
                    NumeroAluno            = alunoEol.NumeroAlunoChamada,
                    CodigoAluno            = aluno.CodigoAluno,
                    NomeAluno              = alunoEol.NomeAluno,
                    QuantidadeCompensacoes = aluno.QuantidadeFaltasCompensadas
                });
            }

            var gestores = BuscaGestoresUe(ue.CodigoUe);

            if (gestores != null && gestores.Any())
            {
                foreach (var gestor in gestores)
                {
                    var notificacaoId = NotificarCompensacaoAusencia(compensacaoId
                                                                     , gestor.Usuario
                                                                     , professor.Nome
                                                                     , professor.CodigoRf
                                                                     , disciplinaEOL
                                                                     , turma.CodigoTurma
                                                                     , turma.Nome
                                                                     , turma.ModalidadeCodigo.GetAttribute <DisplayAttribute>().ShortName
                                                                     , ue.CodigoUe
                                                                     , ue.Nome
                                                                     , ue.TipoEscola.GetAttribute <DisplayAttribute>().ShortName
                                                                     , dre.CodigoDre
                                                                     , dre.Nome
                                                                     , compensacao.Bimestre
                                                                     , compensacao.Nome
                                                                     , alunosDto);

                    // Grava vinculo de notificação x compensação
                    repositorioNotificacaoCompensacaoAusencia.Inserir(notificacaoId, compensacaoId);
                }

                // Marca aluno como notificado
                alunosDto.ForEach(alunoDto =>
                {
                    var aluno        = alunos.FirstOrDefault(a => a.CodigoAluno == alunoDto.CodigoAluno);
                    aluno.Notificado = true;
                    repositorioCompensacaoAusenciaAluno.Salvar(aluno);
                });
            }
        }