public List <long?> GetListaMateriaisPermitidos_PorMatriculaAnoProduto(int matricula, int ano, int produto) { using (var ctx = new DesenvContext()) { var ResultProgressoPermitido = ctx.csp_ListaMaterialDireitoAluno(matricula, ano, produto) .Where(w => w.blnPermitido == 1) .Select(x => x.intBookEntityID) .Distinct().ToList(); if (ResultProgressoPermitido.Count() == 0) { var lisAulaPermitido = GetApostilasLiberadasAulaCronograma(ano); ResultProgressoPermitido = ctx.csp_ListaMaterialDireitoAluno(matricula, ano, null) .Where(a => lisAulaPermitido.Contains((int)a.intBookEntityID)) .Select(x => x.intBookEntityID) .ToList(); } return(ResultProgressoPermitido); } }
public List <MaterialDireitoDTO> ObterMaterialDireitoAluno(int matricula, int produtoId, int cursoId, int anoVigente, bool acessoAntecipado, int anoMaterial = 0) { List <MaterialDireitoDTO> materialDireitoPorEntidade; List <csp_ListaMaterialDireitoAluno_Result> materialComApostilas; using (var ctx = new DesenvContext()) { if (anoMaterial == 0) { anoMaterial = anoVigente; } var isMaterialBonusMedMaster = IsMaterialBonusMedMaster(matricula, anoMaterial, produtoId); if (isMaterialBonusMedMaster) { const int matriculaGlobal = Constants.CONTACTID_ACADEMICO; materialComApostilas = ctx.csp_ListaMaterialDireitoAluno(matriculaGlobal, anoMaterial, produtoId).ToList(); } else { materialComApostilas = ctx.csp_ListaMaterialDireitoAluno(matricula, anoVigente, produtoId).ToList(); } var apostilas = RetornaApostilasDeAcordoComMatricula(matricula); var apostilasLiberadas = (from tbl in apostilas join ma in materialComApostilas on tbl.intBookId equals ma.intMaterialID select new { idApostila = tbl.intBookId, idEntidade = ma.intBookEntityID }).ToList(); var materialDireitoPorEntidadeMuitos = (from ma in materialComApostilas select new { ma.intBookEntityID, ma.txtName, ma.intSemana, ma.dataInicio, ma.datafim, ma.intLessonTitleID, Ativa = (ma.blnPermitido == 1 || (ma.anoCursado == anoVigente && acessoAntecipado)) }).Distinct().ToList(); materialDireitoPorEntidade = materialDireitoPorEntidadeMuitos.Select(x => new MaterialDireitoDTO { Id = x.intBookEntityID, Entidade = x.txtName, IntSemana = x.intSemana, DataInicio = x.dataInicio, DataFim = x.datafim, IntLessonTitleId = x.intLessonTitleID, intBookEntityId = x.intBookEntityID, Ativa = x.Ativa }).ToList(); List <int?> listaApostilasAprovadas = null; foreach (var md in materialDireitoPorEntidade.ToList()) { md.IntYear = materialComApostilas.Where(X => X.intBookEntityID == md.Id).Min(y => y.anoCursado); if (anoVigente != anoMaterial || isMaterialBonusMedMaster) { if (listaApostilasAprovadas == null) { listaApostilasAprovadas = GetApostilasLiberadasSeHouveAulaCronograma(anoMaterial); } md.ApostilasAprovadas = listaApostilasAprovadas; } else { var visualizacaoLiberada = VisualizacaoLiberada(anoMaterial, matricula, cursoId, anoVigente, (int)(md.IntSemana ?? 0)); md.ApostilasAprovadas = visualizacaoLiberada ? apostilasLiberadas.Where(x => x.idEntidade == md.Id).Select(x => x.idApostila).ToList() : null; md.QuestoesAprovadas = visualizacaoLiberada ? materialComApostilas.Where(x => x.intBookEntityID == md.Id && x.blnPermitido == 1).Select(x => x.intMaterialID).ToList() : null; } } } return(materialDireitoPorEntidade); }