Exemplo n.º 1
0
        public Modulo ListPreRequisitosPorModulo(ModuloSolucaoEducacional modSol, int IdUsuario)
        {
            Modulo modReq = new Modulo();

            var query = repositorio.session.Query <ModuloPreRequisito>();

            query = query.Where(x => x.ModuloFilho == modSol.Modulo);

            IList <ModuloPreRequisito> modPreReqs = query.ToList();

            if (modPreReqs.Count() > 0)
            {
                BMMatriculaOferta matOfer = new BMMatriculaOferta();

                foreach (ModuloPreRequisito modPreReq in modPreReqs)
                {
                    int totalSol = modPreReq.ModuloPai.ListaSolucaoEducacional.Count();

                    if (modPreReq.ModuloPai.ListaSolucaoEducacional.Count() > 0)
                    {
                        foreach (ModuloSolucaoEducacional modPreReqSol in modPreReq.ModuloPai.ListaSolucaoEducacional)
                        {
                            if (!matOfer.AprovacaoPorUsuarioESolucaoEducacional(IdUsuario, modPreReqSol.SolucaoEducacional.ID))
                            {
                                return(modPreReq.ModuloPai);
                            }
                        }
                    }
                }
            }
            return(modReq);
        }
Exemplo n.º 2
0
        public void ValidarPreRequisitosDaMatricula(MatriculaOferta pMatriculaOferta, int idTurma = 0)
        {
            if (pMatriculaOferta.Oferta == null)
            {
                throw new AcademicoException("A matrícula não está vinculada adequadamente a uma Oferta. Tente novamente.");
            }
            ;

            if (pMatriculaOferta.Oferta.SolucaoEducacional == null)
            {
                pMatriculaOferta.Oferta.SolucaoEducacional = ObterPorId(new BMOferta().ObterPorId(pMatriculaOferta.Oferta.ID).SolucaoEducacional.ID);
            }

            ValidarVagasPorUf(pMatriculaOferta);

            if (idTurma > 0)
            {
                //Quantidade Máxima de Inscrições
                var turma = new BMTurma().ObterPorID(idTurma);

                var maxInscricoesOferta = new BMOferta().ObterPorId(pMatriculaOferta.Oferta.ID).QuantidadeMaximaInscricoes;

                if (turma.QuantidadeMaximaInscricoes > maxInscricoesOferta)
                {
                    throw new AcademicoException("A quantidade de inscrições da turma, excede o máximo permitido para a oferta.");
                }
            }

            if (!pMatriculaOferta.Oferta.SolucaoEducacional.ListaPreRequisito.Any())
            {
                return;
            }

            var aprovados = new List <enumStatusMatricula>
            {
                enumStatusMatricula.Aprovado,
                enumStatusMatricula.Concluido
            };

            var oferta = pMatriculaOferta.Oferta;

            foreach (var item in pMatriculaOferta.Oferta.SolucaoEducacional.ListaPreRequisito)
            {
                var matriculaOferta = new BMMatriculaOferta().ObterPorUsuarioESolucaoEducacional(pMatriculaOferta.Usuario.ID, item.PreRequisito.ID).ToList();

                if (matriculaOferta != null && matriculaOferta.Any())
                {
                    var lastOrDefault = matriculaOferta.LastOrDefault();

                    if (lastOrDefault != null &&
                        (oferta.SolucaoEducacional.ID == item.SolucaoEducacional.ID &&
                         !aprovados.Contains(lastOrDefault.StatusMatricula)))
                    {
                        throw new AcademicoException("Erro: Existem soluções como pré-requisito que não estão cursadas");
                    }
                }
            }
        }