コード例 #1
0
        public DTOSolucoes ConsultarTurmaPorSolucaoEducacional(int idSolucaoEducacional, int idOferta, string cpfUsuario)
        {
            DTOSolucoes retorno = new DTOSolucoes();

            var        usuario           = new BMUsuario().ObterPorCPF(cpfUsuario);
            List <int> permissoesOfertas =
                new BMOferta().ObterListaDePermissoes(usuario.ID).Select(f => f.IdOferta).Distinct().ToList();

            var solucaoEducacional = new ManterSolucaoEducacional().ObterSolucaoEducacionalPorId(idSolucaoEducacional);

            IList <Oferta> ofertas = RecuperarOfertasValidas(solucaoEducacional, permissoesOfertas);

            if (idOferta > 0)
            {
                ofertas = ofertas.Where(f => f.ID == idOferta).ToList();
            }

            var se = new DTOCurso();

            se.IDSolucaoEducacional = solucaoEducacional.ID;

            foreach (var oferta in ofertas)
            {
                var o = new DTOOfertas
                {
                    IDOferta = oferta.ID,
                    PermiteAlterarStatusPeloGestor =
                        (oferta.AlteraPeloGestorUC.HasValue ? oferta.AlteraPeloGestorUC.Value : true)
                };

                var turmas =
                    oferta.ListaTurma.Where(
                        f => (f.DataFinal == null || f.DataFinal.Value.Date > DateTime.Today) && f.InAberta).ToList();

                foreach (var turma in turmas)
                {
                    o.ListaTurma.Add(new DTOOfertaTurma {
                        IdTurma = turma.ID, Nome = turma.Nome
                    });
                }

                se.Ofertas.Add(o);
            }

            if (se.Ofertas.Count() > 0)
            {
                retorno.Cursos.Add(se);
            }

            return(retorno);
        }
コード例 #2
0
        public DTODisponibilidadeSolucaoEducacionalPorUsuarioT ConsultarDisponibilidadeMatriculaPorUsuario(
            int pIdUsuario, int?pagina)
        {
            var retorno = new DTODisponibilidadeSolucaoEducacionalPorUsuarioT();

            var usuario = new ManterUsuario().ObterUsuarioPorID(pIdUsuario);

            new ManterMatriculaOferta().ObterPorUsuario(pIdUsuario);

            var listaPermissaoSolucaoEducacional = new BMSolucaoEducacional().ObterListaDePermissoes(usuario.ID, 0);
            var idsSolucoesPermissoes            = listaPermissaoSolucaoEducacional.Select(f => f.SolucaoEducacional.ID).ToList();

            var filtro = new SolucaoEducacional();

            var recuperarListaSolucaoEducacional = new ManterSolucaoEducacional().ObterPorFiltroPesquisa(filtro, true,
                                                                                                         idsSolucoesPermissoes);

            const int skip = 5;

            var paginaAtual = (pagina.HasValue && pagina.Value > 0) ? (pagina.Value - 1) : 0;

            retorno.PaginaAtual  = (paginaAtual + 1);
            retorno.QtdeSolucoes = recuperarListaSolucaoEducacional.Count();
            retorno.QtdePaginas  = Convert.ToInt32((retorno.QtdeSolucoes / skip));
            if ((retorno.QtdeSolucoes % skip) > 0)
            {
                retorno.QtdePaginas++;
            }

            foreach (var item in recuperarListaSolucaoEducacional.Skip((paginaAtual * skip)).Take(skip).ToList())
            {
                retorno.DTODisponibilidadeSolucaoEducacional.Add(
                    ConsultarDisponibilidadeMatriculaSolucaoEducacional(pIdUsuario, item.ID));
            }

            return(retorno);
        }
コード例 #3
0
        /// <summary>
        /// Verificar se o usuário informado pode se inscrever na solução informada.
        /// </summary>
        /// <param name="usuario">Usuário a ser matriculado.</param>
        /// <param name="solucaoId">ID da solução que o usuário deseja se matricular.</param>
        /// <param name="retorno">Objeto de retorno com DTO das informações de bloqueio de matrícula, caso necessário.</param>
        /// <returns>True: usuário não pode se inscrever por causa de algum bloqueio. False: usuário pode proceder com a inscrição.</returns>
        private static bool UsuarioPossuiBloqueioInscricao(Usuario usuario, int solucaoId,
                                                           ref DTODisponibilidadeSolucaoEducacional retorno)
        {
            // Verifica pendências
            if (PossuiQuestionarioPendente(usuario, ref retorno))
            {
                return(true);
            }

            // Verifica se o usuário está matriculado no limite de cursos simultâneos.
            if (UsuarioPossuiLimiteInscricoesSimultaneas(usuario.ID, ref retorno))
            {
                return(true);
            }

            // Obter todas as matrículas da Solução.
            var matriculasSe =
                new ManterMatriculaOferta().ObterPorUsuarioESolucaoEducacional(usuario.ID, solucaoId).ToList();

            // Verifica se o aluno já está matriculado na SE
            if (UsuarioPossuiMatriculaSolucao(matriculasSe, solucaoId, ref retorno))
            {
                return(true);
            }

            // Verifica se existe alguma matricula como Pendente de Confirmação.
            if (UsuarioPossuiPendenciaConfirmacao(matriculasSe, usuario, ref retorno))
            {
                return(true);
            }

            // Se chegou até aqui, pode retornar os dados do termo de aceite e da política de consequência.
            var solucaoEducacional = new ManterSolucaoEducacional().ObterSolucaoEducacionalPorId(solucaoId);

            // Verifica se o usuário tem permissão para se inscrever na SE.
            if (UsuarioPossuiPermissaoSolucao(usuario, solucaoEducacional, ref retorno))
            {
                return(true);
            }

            // MÉTODO IMPORTANTE!!!
            // Verificar bloqueio de acordo com as políticas de consequência.
            if (UsuarioPossuiBloqueioPoliticaDeConsequencia(usuario.ID, solucaoId, ref retorno))
            {
                return(true);
            }

            // Sse o aluno estiver inscrito em algum programa, verifica se existe algum pré-requisito não cursado.
            if (UsuarioPossuiPendenciaCapacitacaoPrograma(solucaoId, usuario, ref retorno))
            {
                return(true);
            }

            if (solucaoEducacional.TermoAceite != null)
            {
                retorno.NomeTermoAceite           = solucaoEducacional.TermoAceite.Nome;
                retorno.TextoTermoAceite          = solucaoEducacional.TermoAceite.Texto;
                retorno.TextoPoliticaConsequencia = solucaoEducacional.TermoAceite.PoliticaConsequencia;
            }

            // Verifica se a Solução está Inativa.
            if (solucaoEducacional.Ativo == false)
            {
                retorno.TextoDisponibilidade = "Solução Educacional não está ativa no momento";
                return(true);
            }

            return(false);
        }
コード例 #4
0
        public DTOSolucoes ConsultarDisponibilidadeMatriculaPorUsuario(int pIdUsuario, int idSolucaoEducacional,
                                                                       int cargaHoraria)
        {
            var retorno = new DTOSolucoes();

            var usuario = new ManterUsuario().ObterUsuarioPorID(pIdUsuario);

            if (usuario != null)
            {
                var permissoesSoculaoEducacional =
                    new BMSolucaoEducacional().ObterListaDePermissoes(usuario.ID, idSolucaoEducacional)
                    .Select(f => f.SolucaoEducacional.ID)
                    .Distinct()
                    .ToList();
                var permissoesOfertas =
                    new BMOferta().ObterListaDePermissoes(usuario.ID).Select(f => f.IdOferta).Distinct().ToList();


                if (idSolucaoEducacional > 0 && permissoesSoculaoEducacional.Contains(idSolucaoEducacional))
                {
                    permissoesSoculaoEducacional.Clear();
                    permissoesSoculaoEducacional.Add(idSolucaoEducacional);
                }

                var solucoes = new ManterSolucaoEducacional().ObterPorFiltroPesquisa(new SolucaoEducacional(), true,
                                                                                     permissoesSoculaoEducacional);

                foreach (var solucaoEducacional in solucoes)
                {
                    var ofertas = solucaoEducacional.ListaOferta.Where(
                        x =>
                        (x.DataInicioInscricoes.HasValue &&
                         x.DataInicioInscricoes.Value.Date <= DateTime.Today) &&
                        x.DataFimInscricoes.HasValue &&
                        x.DataFimInscricoes.Value.Date >= DateTime.Today &&
                        permissoesOfertas.Contains(x.ID) &&
                        //x.ListaPermissao.Any(f=>f.Uf.ID == usuario.UF.ID) &&
                        !(x.ListaTurma.Any(
                              f =>
                              (f.DataFinal == null || f.DataFinal.Value.Date > DateTime.Today) &&

                              // Remover turmas canceladas das possibilidades de matrícula. #2997
                              f.Status != enumStatusTurma.Cancelada &&
                              f.InAberta == false)));

                    if (cargaHoraria > 0)
                    {
                        ofertas = ofertas.Where(f => f.CargaHoraria == cargaHoraria);
                    }

                    var se = new DTOCurso {
                        IDSolucaoEducacional = solucaoEducacional.ID
                    };

                    foreach (var oferta in ofertas.OrderBy(x => x.DataInicioInscricoes))
                    {
                        if (oferta.TipoOferta.Equals(enumTipoOferta.Exclusiva))
                        {
                            break;
                        }

                        //Verificando se existe alguma matricula na SE
                        if (ExisteAlgumaMatriculaComoInscrito(usuario.ListaMatriculaOferta, se.IDSolucaoEducacional))
                        {
                            break;
                        }

                        //VALIDAR SE O USUARIO POSSUI ACESSO A SE: 205 (permissão a se)
                        //VALIDADO NA BUSCA

                        //VALIDAR SE O USUARIO ESTA CURSANDO OUTRA SE
                        //VERIFICA O LIMITE DE CURSOS SIMULTANEOS
                        int cursosEmAndamento =
                            usuario.ListaMatriculaOferta.Where(
                                x => x.StatusMatricula.Equals(enumStatusMatricula.Inscrito)).Count();
                        int limteCursosSimultaneos =
                            int.Parse(
                                ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.CursosSimultaneos)
                                .Registro);
                        if (cursosEmAndamento >= limteCursosSimultaneos)
                        {
                            break;
                        }

                        //VALIDAR SE O USUARIO ESTA COM ALGUM ABANDONO ATIVO
                        if (new BMUsuarioAbandono().ValidarAbandonoAtivo(usuario.ID))
                        {
                            break;
                        }

                        //VERIFICA SE A OFERTA INFORMADA FOI ENCONTRADA
                        //NO CADASTRO

                        if (oferta.TipoOferta.Equals(enumTipoOferta.Continua))
                        {
                        }

                        if (oferta.TipoOferta.Equals(enumTipoOferta.Normal))
                        {
                        }

                        var qtdInscritosNaOferta =
                            oferta.ListaMatriculaOferta.Count(
                                x => (x.StatusMatricula != enumStatusMatricula.CanceladoAdm &&
                                      x.StatusMatricula != enumStatusMatricula.CanceladoAluno));

                        if (qtdInscritosNaOferta >= oferta.QuantidadeMaximaInscricoes && !oferta.FiladeEspera)
                        {
                            break;
                        }

                        var trancadoPorNaoPagante = false;

                        if (oferta.ListaNiveisTrancados != null &&
                            oferta.ListaNiveisTrancados.Any(x => x.ID == usuario.NivelOcupacional.ID))
                        {
                            if (!VerificarTrancadoParaPagante(usuario))
                            {
                                trancadoPorNaoPagante = true;
                            }
                        }

                        se.Ofertas.Add(new DTOOfertas
                        {
                            IDOferta                = oferta.ID,
                            CargaHoraria            = oferta.CargaHoraria,
                            TrancadoPorNaoPagamento = trancadoPorNaoPagante,
                            Nome = oferta.Nome
                        });
                    }

                    if (se.Ofertas.Any())
                    {
                        retorno.Cursos.Add(se);
                    }
                }
            }

            return(retorno);
        }