public TemaApostila GetTemaApostila(ETipoVideo tipoVideo = ETipoVideo.Revisao) { var temaApostila = new TemaApostila() { Apostila = null, Assunto = null, DataProximaAula = 0, Descricao = "", GrupoId = 1, Id = 1, IdResumo = 1, IdTema = 1, Professores = new List <Pessoa>(), Semana = 1, VideoAulas = new List <VideoAula>(), Videos = new VideosMednet() { new VideoMednet { IdProfessor = 1, Url = "", KeyVideo = "", ID = 1, Descricao = "CPMED e", Assistido = false, DuracaoFormatada = "", IdProvaVideo = 1, Ordem = 0, Thumb = "", TipoVideo = tipoVideo, Links = null } }, VideosAdaptaMed = new VideosMednet(), VideosResumo = new VideosMednet(), VideosRevalida = new VideosMednet(), VideosRevisao = new VideosMednet() { new VideoMednet { IdProfessor = 1, Url = "", KeyVideo = "", ID = 1, Descricao = "CPMED e", Assistido = false, DuracaoFormatada = "", IdProvaVideo = 1, Ordem = 0, Thumb = "", TipoVideo = tipoVideo, Links = null } } }; return(temaApostila); }
public TemaApostila GetTemaRevalida(int ano, int matricula, int idAplicacao, int idTema) { try { var mednet = new MednetEntity(); var videosRevalida = mednet.GetTemasVideoRevalida(); var videoTema = videosRevalida.FirstOrDefault(x => x.IdTema == idTema); var logVideos = mednet.GetLogVideos(matricula, ETipoVideo.Revalida); if (videoTema != null) { var idsVideos = videoTema.VideosRevisao.Select(v => v.IdRevisaoAula).ToList(); var ctx = new DesenvContext(); var totalVisualizacoesVideos = (from a in ctx.tblVideoLog //join b in idsVideos on a.intOrigemVideoId equals b where a.intTipoVideo == (int)ETipoVideo.Revalida && idsVideos.Contains(a.intOrigemVideoId) select a.intOrigemVideoId).ToList(); var todosProgressosVideos = (from a in ctx.tblRevalidaAulaVideoLogPosition where a.intClientId == matricula select new { a.intRevalidaAulaVideoId, a.intSecond }).ToList(); ctx.Dispose(); using (MiniProfiler.Current.Step("Set progresso aula revalida por professor")) { foreach (var professor in videoTema.Professores) { var segundosTotalVideos = 0; var segundosTotalVideosAssistidos = 0; var videosProf = videoTema.VideosRevisao.Where(v => v.IdProfessor == professor.ID).ToList(); foreach (var video in videosProf) { video.Visualizacoes = totalVisualizacoesVideos.Count(t => t == video.IdRevisaoAula); segundosTotalVideos += Convert.ToInt32(TimeSpan.Parse(video.DuracaoFormatada).TotalSeconds); video.Assistido = logVideos.Any(l => l == video.IdRevisaoAula); var duracaoVideo = Convert.ToInt32(TimeSpan.Parse(video.DuracaoFormatada).TotalSeconds); if (todosProgressosVideos.Any(v => v.intRevalidaAulaVideoId == video.IdRevisaoAula)) { var tempoDeVideoAssistido = todosProgressosVideos.FirstOrDefault(v => v.intRevalidaAulaVideoId == video.IdRevisaoAula).intSecond; segundosTotalVideosAssistidos += tempoDeVideoAssistido > duracaoVideo ? duracaoVideo : tempoDeVideoAssistido; if (duracaoVideo > 0) { video.Progresso = (todosProgressosVideos.Where(v => v.intRevalidaAulaVideoId == video.IdRevisaoAula).FirstOrDefault().intSecond * 100) / duracaoVideo; } } } if (segundosTotalVideos != 0) { professor.PercentVisualizado = (segundosTotalVideosAssistidos * 100) / segundosTotalVideos; } else { professor.PercentVisualizado = 0; } mednet.SetProgressoAulaRevalida(idTema, professor.ID, matricula, professor.PercentVisualizado); } } } else { videoTema = new TemaApostila(); } return(videoTema); } catch { throw; } }