public IHttpActionResult Post(ConsultaNivelTemas dados) { //var rnd = new Random(DateTime.Now.Millisecond); var perguntas = new List <ViewPergunta>(); var retorno = new ListViewPerguntaResposta(); ValidaDadosConsulta(dados); using (ctx = new JogoMasterEntities()) { dados.idsTema.ForEach(tema => { var perguntasBanco = ctx.Perguntas .Where(x => x.IdNivel == dados.idNivel && x.IdTema == tema) .Select(x => new ViewPergunta() { Id = x.Id, Pergunta = x.Pergunta1, IdNivel = x.IdNivel, IdTema = x.IdTema, Patrocinada = x.Patrocinada }).ToList(); perguntas = perguntasBanco.OrderBy(x => Guid.NewGuid()).Take(4).ToList(); perguntas.ForEach(pergunta => { var res = ctx.Respostas .Where(x => x.IdPergunta == pergunta.Id) .Select(x => new ViewResposta() { Id = x.Id, Correta = x.Correta, Resposta = x.Resposta1, IdPergunta = x.IdPergunta }) .ToList(); var perRes = new ViewPerguntaResposta { pergunta = pergunta, respostas = res }; retorno.lista.Add(perRes); }); }); } return(Ok(retorno.lista)); }
private void ValidaDadosConsulta(ConsultaNivelTemas dados) { using (ctx = new JogoMasterEntities()) { dados.idsTema.ForEach(idTema => { Refute(idTema <= 0, "Tema inválido."); Tema tema = null; tema = ctx.Temas .FirstOrDefault(x => x.Id == idTema); Refute(tema == null, "Tema inexistente."); }); Nivel nivel = null; nivel = ctx.Niveis.Where(x => x.Id == dados.idNivel) .FirstOrDefault(); Refute(nivel == null, "Nível inexistente."); Refute(dados.idNivel <= 0, "Nível inválido."); } }