public ActionResult Edit(int id)
        {
            if (Roles.IsUserInRole(User.Identity.Name, "Professor"))
            {
                Pergunta p = new Pergunta();
                ViewBag.Titulo = "Nova Pergunta";

                int idCurso      = 1;
                int idDisciplina = 1;

                int idTema = 1;
                int idNivelDificuldadeSelecionado = 1;
                int correta = 1;

                if (id != 0)
                {
                    p            = perguntaModel.obterPergunta(id);
                    idCurso      = p.Tema.Disciplina.idCurso;
                    idDisciplina = p.Tema.idDisciplina;
                    idTema       = p.idTema;
                    idNivelDificuldadeSelecionado = p.idNivelDificuldade;
                    correta        = p.Correta;
                    ViewBag.Titulo = "Editar Pergunta";
                }


                ViewBag.idCurso
                    = new SelectList(cursoModel.todosCursos(),
                                     "idCurso", "Descricao", idCurso);

                ViewBag.idDisciplina
                    = new SelectList(disciplinaModel.obterDisciplinaPorCurso(idCurso),
                                     "idDisciplina", "Descricao", idDisciplina);

                ViewBag.idTema
                    = new SelectList(temaModel.obterTemasPorDisciplina(idCurso),
                                     "idTema", "Descricao", idTema);

                ViewBag.idNivelDificuldade
                    = new SelectList(nivelDificuldadeModel.todosNiveisDificuldade(),
                                     "idNivelDificuldade", "Descricao", idNivelDificuldadeSelecionado);

                ViewBag.Correta
                    = new SelectList(alternativaModel.obterAlternativasPorPergunta(id),
                                     "idAlternativa", "Descricao", correta);

                return(View(p));
            }
            return(Redirect("/Shared/Restrito"));
        }
        public ActionResult EditResposta(int idAlunoAtividade, int idPergunta)
        {
            if (Roles.IsUserInRole(User.Identity.Name, "Aluno"))
            {
                Questao_Resposta qr = new Questao_Resposta();

                Questao_Resposta q = questaoRespostaModel.verficaRespostaAluno(idAlunoAtividade, idPergunta);

                int idQuestaoResposta = 1;

                if (q == null)
                {
                    idQuestaoResposta = 0;
                }
                else
                {
                    idQuestaoResposta = questaoRespostaModel.verficaRespostaAluno(idAlunoAtividade, idPergunta).idQuestaoResposta;
                }

                qr.idAlunoAtividade = idAlunoAtividade;
                qr.idPergunta       = idPergunta;

                Pergunta p = perguntaModel.obterPergunta(idPergunta);
                ViewBag.Enunciado = p.Enunciado;

                int idAlternativa = 1;

                if (idQuestaoResposta != 0)
                {
                    qr            = questaoRespostaModel.obterQuestaoResposta(idQuestaoResposta);
                    idAlternativa = qr.idAlternativa;
                }

                ViewBag.idAlternativa
                    = new SelectList(alternativaModel.listarAlternativasPorPergunta(idPergunta),
                                     "idAlternativa", "Descricao", idAlternativa);

                ViewBag.Pergunta = p.Enunciado;

                return(View(qr));
            }
            return(Redirect("/Shared/Restrito"));
        }
        public ActionResult prepararSorteio()
        {
            int idAluno = 1;

            errosPorTema(idAluno);
            NumerosSorteados = new List <int>();

            int idTema1 = temaModel.obterTemaPorDescricao(ViewBag.listaErradasTema[0].Tema).idTema;
            int idTema2 = temaModel.obterTemaPorDescricao(ViewBag.listaErradasTema[1].Tema).idTema;
            int idTema3 = temaModel.obterTemaPorDescricao(ViewBag.listaErradasTema[2].Tema).idTema;

//==================  1º TEMA QUE O ALUNO MAIS ERROU ====================================================

            //----------------------- DIFICEIS --------------------------------------------------
            List <Pergunta> PerguntasDificeisASortearT1 =
                perguntaModel.listarPerguntasParaSorteio(idTema1, 3); // 3 = Nivel de Dificuldade DIFICIL

            contadorPergunta = PerguntasDificeisASortearT1.Count;
            nPerguntas       = 3;
            Sortear(contadorPergunta, nPerguntas);

            var listaPerguntasDIficeisT1 = new List <Pergunta>();

            for (int i = 0; i < 3; i++)
            {
                int      idPerguntaSorteada = PerguntasDificeisASortearT1[NumerosSorteados[i]].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaPerguntasDIficeisT1.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }

            //------ MEDIAS ------------------------------------------------------------------------------------
            List <Pergunta> PerguntasMediasASortearT1 =
                perguntaModel.listarPerguntasParaSorteio(idTema1, 2); // 2 = Nivel de Dificuldade MEDIO

            contadorPergunta = PerguntasMediasASortearT1.Count;
            nPerguntas       = 1;
            Sortear(contadorPergunta, nPerguntas);

            var listaPerguntasMediasT1 = new List <Pergunta>();

            for (int i = 0; i < 1; i++)
            {
                int      idPerguntaSorteada = PerguntasMediasASortearT1[NumerosSorteados[i]].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaPerguntasMediasT1.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }


            //-------- FACEIS ----------------------------------------------------------------------------------
            List <Pergunta> PerguntasFaceisASortearT1 =
                perguntaModel.listarPerguntasParaSorteio(idTema1, 1); // 1 = Nivel de Dificuldade FACIL

            contadorPergunta = PerguntasFaceisASortearT1.Count;
            nPerguntas       = 1;
            Sortear(contadorPergunta, nPerguntas);

            var listaPerguntasFaceisT1 = new List <Pergunta>();

            for (int i = 0; i < 1; i++)
            {
                int      idPerguntaSorteada = PerguntasDificeisASortearT1[NumerosSorteados[i]].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaPerguntasFaceisT1.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }


//==================  2º TEMA QUE O ALUNO MAIS ERROU ====================================================

            //----------------------- DIFICEIS --------------------------------------------------
            List <Pergunta> PerguntasDificeisASortearT2 =
                perguntaModel.listarPerguntasParaSorteio(idTema1, 3); // 3 = Nivel de Dificuldade DIFICIL

            contadorPergunta = PerguntasDificeisASortearT2.Count;
            nPerguntas       = 1;
            Sortear(contadorPergunta, nPerguntas);

            var listaPerguntasDificeisT2 = new List <Pergunta>();

            for (int i = 0; i < 1; i++)
            {
                int      idPerguntaSorteada = PerguntasDificeisASortearT1[NumerosSorteados[i]].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaPerguntasDificeisT2.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }


            //----------------------- MEDIAS --------------------------------------------------
            List <Pergunta> PerguntasMediasASortearT2 =
                perguntaModel.listarPerguntasParaSorteio(idTema1, 2); // 2 = Nivel de Dificuldade MEDIO

            contadorPergunta = PerguntasMediasASortearT2.Count;
            nPerguntas       = 1;
            Sortear(contadorPergunta, nPerguntas);

            var listaPerguntasMediasT2 = new List <Pergunta>();

            for (int i = 0; i < 1; i++)
            {
                int      idPerguntaSorteada = PerguntasDificeisASortearT1[NumerosSorteados[i]].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaPerguntasMediasT2.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }


            //----------------------- FACEIS --------------------------------------------------
            List <Pergunta> PerguntasFaceisASortearT2 =
                perguntaModel.listarPerguntasParaSorteio(idTema1, 1); // 1 = Nivel de Dificuldade FACIL

            contadorPergunta = PerguntasFaceisASortearT2.Count;
            nPerguntas       = 1;
            Sortear(contadorPergunta, nPerguntas);

            var listaPerguntasFaceisT2 = new List <Pergunta>();

            for (int i = 0; i < 1; i++)
            {
                int      idPerguntaSorteada = PerguntasDificeisASortearT1[NumerosSorteados[i]].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaPerguntasFaceisT2.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }


//==================  3º TEMA QUE O ALUNO MAIS ERROU ====================================================

            //----------------------- MEDIAS --------------------------------------------------
            List <Pergunta> PerguntasMediasASortearT3 =
                perguntaModel.listarPerguntasParaSorteio(idTema1, 2); // 2 = Nivel de Dificuldade MEDIO

            contadorPergunta = PerguntasMediasASortearT3.Count;
            nPerguntas       = 1;
            Sortear(contadorPergunta, nPerguntas);

            var listaPerguntasMediasT3 = new List <Pergunta>();

            for (int i = 0; i < 1; i++)
            {
                int      idPerguntaSorteada = PerguntasDificeisASortearT1[NumerosSorteados[i]].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaPerguntasMediasT3.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }

            //----------------------- FACEIS --------------------------------------------------
            List <Pergunta> PerguntasFaceisASortearT3 =
                perguntaModel.listarPerguntasParaSorteio(idTema1, 1); // 1 = Nivel de Dificuldade FACIL

            contadorPergunta = PerguntasFaceisASortearT3.Count;
            nPerguntas       = 1;
            Sortear(contadorPergunta, nPerguntas);

            var listaPerguntasFaceisT3 = new List <Pergunta>();

            for (int i = 0; i < 1; i++)
            {
                int      idPerguntaSorteada = PerguntasDificeisASortearT1[NumerosSorteados[i]].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaPerguntasMediasT2.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }

            //------------------------ MONTA LISTA COM PERGUNTAS PARA A ATIVIDADE--------------------------

            var listaFinalPerguntas = new List <Pergunta>();

            // Adiciona perguntas do tema 1
            //DIFICEIS
            for (int i = 0; i < listaPerguntasDIficeisT1.Count; i++)
            {
                int      idPerguntaSorteada = listaPerguntasDIficeisT1[i].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaFinalPerguntas.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }

            //MEDIAS
            for (int i = 0; i < listaPerguntasMediasT1.Count; i++)
            {
                int      idPerguntaSorteada = listaPerguntasMediasT1[i].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaFinalPerguntas.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }

            //FACEIS
            for (int i = 0; i < listaPerguntasFaceisT1.Count; i++)
            {
                int      idPerguntaSorteada = listaPerguntasFaceisT1[i].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaFinalPerguntas.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }

            // Adiciona perguntas do Tema 2
            //DIFICEIS
            for (int i = 0; i < listaPerguntasDificeisT2.Count; i++)
            {
                int      idPerguntaSorteada = listaPerguntasDificeisT2[i].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaFinalPerguntas.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }

            //MEDIAS
            for (int i = 0; i < listaPerguntasMediasT2.Count; i++)
            {
                int      idPerguntaSorteada = listaPerguntasMediasT2[i].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaFinalPerguntas.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }

            //FACEIS
            for (int i = 0; i < listaPerguntasFaceisT2.Count; i++)
            {
                int      idPerguntaSorteada = listaPerguntasFaceisT2[i].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaFinalPerguntas.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }

            // Adiciona perguntas do Tema 2
            //MEDIAS
            for (int i = 0; i < listaPerguntasMediasT3.Count; i++)
            {
                int      idPerguntaSorteada = listaPerguntasMediasT3[i].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaFinalPerguntas.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }

            //FACEIS
            for (int i = 0; i < listaPerguntasFaceisT3.Count; i++)
            {
                int      idPerguntaSorteada = listaPerguntasFaceisT3[i].idPergunta;
                Pergunta pergunta           = perguntaModel.obterPergunta(idPerguntaSorteada);

                listaFinalPerguntas.Add(new Pergunta()
                {
                    idPergunta         = pergunta.idPergunta,
                    idTema             = pergunta.idTema,
                    idNivelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }

            var testeView = new List <perguntasProva>();

            for (int i = 0; i < listaFinalPerguntas.Count; i++)
            {
                int      idPergunta = listaFinalPerguntas[i].idPergunta;
                Pergunta pergunta   = perguntaModel.obterPergunta(idPergunta);

                testeView.Add(new perguntasProva()
                {
                    IdPergunta         = pergunta.idPergunta,
                    IdTema             = pergunta.idTema,
                    IdNIvelDificuldade = pergunta.idNivelDificuldade,
                    Titulo             = pergunta.Titulo,
                    Enunciado          = pergunta.Enunciado,
                    Identificacao      = pergunta.Identificacao,
                    Correta            = pergunta.Correta
                });
            }

            return(View(testeView));
        }