public List <EspecialRevalida> GetEspecialRevalida(int ano, int matricula, int idAplicacao = (int)Aplicacoes.MsProMobile) { try { var lsRevalida = new List <EspecialRevalida>(); var mednet = new MednetEntity(); var aluno = new AlunoEntity(); new Util.Log().SetLog(new LogMsPro { Matricula = matricula, IdApp = Aplicacoes.MsProMobile, Tela = Util.Log.MsProLog_Tela.Revalida, Acao = Util.Log.MsProLog_Acao.Abriu }); var rev = mednet.GetTemasVideoRevalida(); var revAgrp = rev.GroupBy(x => x.Assunto.Id).Select(grp => new { GrpID = grp.Key, RevalidaLst = grp.ToList() }).ToList(); //var permissao = aluno.GetIsCortesiaRevalida(matricula); using (MiniProfiler.Current.Step("Carregando lista revalida obtendo o máximo progresso de aula revalida por item da lista")) { foreach (var item in revAgrp) { var itemRevalida = new EspecialRevalida(); itemRevalida.Numero = item.GrpID; itemRevalida.Ativa = 1; var apostilas = item.RevalidaLst.Select(x => new Apostila { IdEntidade = x.Apostila.Especialidade.Id, Nome = x.Apostila.Descricao, PercentLido = GetMaximoProgressoAulaRevalida(x.IdTema, matricula), Temas = new List <AulaTema> { new AulaTema { TemaID = x.IdTema } } } ); itemRevalida.Apostilas.AddRange(apostilas); lsRevalida.Add(itemRevalida); } } return(lsRevalida); } catch { throw; } }
public List <EspecialRevalida> GetRevalidaCronograma(int idProduto, int ano) { List <EspecialRevalida> lsRevalida = new List <EspecialRevalida>(); using (var ctx = new DesenvContext()) { using (var ctxAcad = new AcademicoContext()) { var queryRevalida = (from ri in ctx.tblRevalidaAulaIndice join rv in ctx.tblRevalidaAulaVideo on ri.intRevalidaAulaIndiceId equals rv.intRevalidaAulaIndiceId join lt in ctx.tblLessonTitleRevalida on ri.intLessonTitleRevalidaId equals lt.intLessonTitleRevalidaId orderby ri.intOrdem select new { TemaDescricao = lt.txtName, IdRevalidaIndice = ri.intRevalidaAulaIndiceId, IdTema = ri.intRevalidaAulaIndiceId, GrupoId = lt.GrupoId, EspecialidadeId = lt.intEspecialidadeId } ).Distinct().ToList(); List <int?> listaEspecialidadeId = queryRevalida.Select(x => x.EspecialidadeId).ToList(); var queryEspecialidade = (from e in ctxAcad.tblEspecialidades where listaEspecialidadeId.Contains(e.intEspecialidadeID) select new { EspecialidadeId = e.intEspecialidadeID, EspecialidadeSigla = e.CD_ESPECIALIDADE }).ToList(); var query = (from r in queryRevalida join e in queryEspecialidade on r.EspecialidadeId equals e.EspecialidadeId select new { TemaDescricao = r.TemaDescricao, IdRevalidaIndice = r.IdRevalidaIndice, IdTema = r.IdTema, GrupoId = r.GrupoId, EspecialidadeId = e.EspecialidadeId, EspecialidadeSigla = e.EspecialidadeSigla }).Distinct().ToList(); var temasApostila = query.Select(tema => new TemaApostila() { Professores = new List <Pessoa>(), Id = tema.IdRevalidaIndice, IdTema = tema.IdTema, Descricao = tema.TemaDescricao, VideosRevisao = new VideosMednet(), Apostila = new Exercicio { ID = tema.IdTema, Descricao = tema.EspecialidadeId == 110 ? "GO" : tema.EspecialidadeSigla, Especialidade = new Especialidade { Id = tema.EspecialidadeId } }, Assunto = new AssuntoTemaApostila { Id = tema.GrupoId.Value, Descricao = string.Concat("Especial Revalida ", tema.GrupoId) } }) .ToList(); var revalidaAgrupado = temasApostila.GroupBy(x => x.Assunto.Id).Select(grp => new { GrpID = grp.Key, RevalidaLst = grp.ToList() }).ToList(); foreach (var item in revalidaAgrupado) { var itemRevalida = new EspecialRevalida(); itemRevalida.Numero = item.GrpID; itemRevalida.Ativa = 1; var apostilas = item.RevalidaLst.Select(x => new Apostila { IdEntidade = x.Apostila.Especialidade.Id, Nome = x.Apostila.Descricao, PercentLido = 0, Temas = new List <AulaTema> { new AulaTema { TemaID = x.IdTema } } } ); itemRevalida.Apostilas.AddRange(apostilas); lsRevalida.Add(itemRevalida); } return(lsRevalida); } } }