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);
        }
Beispiel #2
0
        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;
            }
        }