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