예제 #1
0
        public async Task <bool> ValidaConteudoExibicao(Conteudo conteudoSelecionado, Domain.Models.ProvaUsuario[] listaProvaUsuario)
        {
            try
            {
                //Obter todos os modulos do curso
                var obterModulosCurso = await _moduloRepository.Buscar(x => x.CursoId == conteudoSelecionado.Modulo.CursoId);

                PreencheModuloConteudoConcluido(obterModulosCurso, listaProvaUsuario);

                foreach (var mod in obterModulosCurso)
                {
                    var validarProva = true;

                    validarProva = mod.Conteudos.Where(c => (c.Tipo.Equals("PR") || c.Tipo.Equals("PA")) && !c.ConteudoConcluido).Count() > 0 ? false : true;

                    if (!validarProva)
                    {
                        if (conteudoSelecionado.Modulo.Ordem > mod.Ordem)
                        {
                            return(false);
                        }
                    }
                }

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
예제 #2
0
        public async Task <IActionResult> BuscarModuloCurso(int idCurso)
        {
            try
            {
                var retorno = await _moduloRepository.Buscar(x => x.CursoId.Equals(idCurso));

                var listaProvaUsuario = await _provaUsuarioRepository.Buscar(x => x.UsuarioId.Equals(Convert.ToInt32(User.Identity.Name)));

                foreach (var modulo in retorno)
                {
                    foreach (var conteudo in modulo.Conteudos)
                    {
                        if (conteudo.Tipo.Equals("PR") || conteudo.Tipo.Equals("PA"))
                        {
                            var provaUsuario = listaProvaUsuario.Where(x => x.Prova.ConteudoId.Equals(conteudo.Id)).ToList();

                            if (provaUsuario.Count > 0)
                            {
                                conteudo.ConteudoConcluido = true;
                            }
                            else
                            {
                                conteudo.ConteudoConcluido = false;
                            }
                        }
                        else
                        {
                            conteudo.ConteudoConcluido = conteudo.ConteudoUsuarios.Exists(x => x.ConteudoId == conteudo.Id && x.UsuariosId == Convert.ToInt32(User.Identity.Name) && x.Concluido.Equals("S"));
                        }
                    }
                }

                return(Response(retorno));
            }
            catch (Exception ex)
            {
                return(ResponseErro(ex));
            }
        }
예제 #3
0
        public async Task <IActionResult> CarregaConteudoCursoAcao(int id, int idConteudo, string acao)
        {
            try
            {
                //Valida se esta acesso do curso
                var retornoDadosInscricao = await _inscricaoUsuarioRepository.ObterPorId(id);

                if (retornoDadosInscricao.UsuarioId != Convert.ToInt32(User.Identity.Name))
                {
                    return(Response("Busca invalida", false));
                }

                //Obter conteudo atual
                var conteudoAtual = await _conteudoRepository.ObterPorId(idConteudo);

                if (conteudoAtual == null)
                {
                    return(Response("Conteudo nao encontrado", false));
                }

                //Obter todos os modulos do curso
                var obterModulosCurso = await _moduloRepository.Buscar(x => x.CursoId == conteudoAtual.Modulo.CursoId);

                if (obterModulosCurso.Length <= 0)
                {
                    return(Response("Modulo nao encontrado", false));
                }

                //Obter lista prova realizado
                var listaProvaUsuario = await _provaUsuarioRepository.Buscar(x => x.UsuarioId.Equals(Convert.ToInt32(User.Identity.Name)));

                var _cursoService = new CursoService(_moduloRepository, _conteudoUsuarioRepository, Convert.ToInt32(User.Identity.Name));

                //Preenche o conteudo concluido
                _cursoService.PreencheModuloConteudoConcluido(obterModulosCurso, listaProvaUsuario);

                if (string.IsNullOrEmpty(acao) || (acao != "P" && acao != "A"))
                {
                    return(Response("Ação não definida", false));
                }

                var moduloAtual = obterModulosCurso.ToList().Where(x => x.Id.Equals(conteudoAtual.ModuloId)).FirstOrDefault();

                if (acao.Equals("P"))
                {
                    var retornaProximo = moduloAtual.Conteudos.Where(x => x.Ordem > conteudoAtual.Ordem).FirstOrDefault();

                    if (retornaProximo != null)
                    {
                        if (!await _cursoService.ValidaConteudoExibicao(retornaProximo, listaProvaUsuario))
                        {
                            return(Response(false));
                        }


                        await _cursoService.SalvarVisualizacaoUsuario(retornaProximo.Id);

                        return(Response(_mapper.Map <ConteudoDto>(retornaProximo)));
                    }

                    var proximoModulo = obterModulosCurso.Where(c => c.Ordem > moduloAtual.Ordem).FirstOrDefault();

                    if (proximoModulo == null)
                    {
                        return(Response("Ação Proxima não definida", false));
                    }

                    if (!await _cursoService.ValidaConteudoExibicao(proximoModulo.Conteudos.FirstOrDefault(), listaProvaUsuario))
                    {
                        return(Response(false));
                    }

                    await _cursoService.SalvarVisualizacaoUsuario(proximoModulo.Conteudos.FirstOrDefault().Id);

                    return(Response(_mapper.Map <ConteudoDto>(proximoModulo.Conteudos.FirstOrDefault())));
                }
                else
                {
                    var retonraAnterior = moduloAtual.Conteudos.Where(x => x.Ordem < conteudoAtual.Ordem).LastOrDefault();

                    if (retonraAnterior != null)
                    {
                        await _cursoService.SalvarVisualizacaoUsuario(retonraAnterior.Id);

                        return(Response(_mapper.Map <ConteudoDto>(retonraAnterior)));
                    }

                    var anteriorModulo = obterModulosCurso.Where(c => c.Ordem < moduloAtual.Ordem).LastOrDefault();

                    if (anteriorModulo == null)
                    {
                        return(Response("Ação Anterior não definida", false));
                    }

                    await _cursoService.SalvarVisualizacaoUsuario(anteriorModulo.Conteudos.LastOrDefault().Id);

                    return(Response(_mapper.Map <ConteudoDto>(anteriorModulo.Conteudos.LastOrDefault())));
                }
            }
            catch (Exception ex)
            {
                return(ResponseErro(ex));
            }
        }