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