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); } }
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)); } }
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)); } }