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); }
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"); } } } }