public string adicionarPergunta(Pergunta p)
 {
     string erro = null;
     try
     {
         db.Pergunta.AddObject(p);
         db.SaveChanges();
     }
     catch (Exception ex)
     {
         erro = ex.Message;
     }
     return erro;
 }
        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 string excluirPergunta(Pergunta p)
        {
            string erro = null;

            try
            {
                db.DeleteObject(p);
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                erro = ex.Message;
            }
            return erro;
        }
        public string editarPergunta(Pergunta p)
        {
            string erro = null;

            try
            {
                if (p.EntityState == System.Data.EntityState.Detached)
                {
                    db.Pergunta.Attach(p);
                }
                db.ObjectStateManager.ChangeObjectState(p,
                    System.Data.EntityState.Modified);
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                erro = ex.Message;
            }
            return erro;
        }
 /// <summary>
 /// Deprecated Method for adding a new object to the Pergunta EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToPergunta(Pergunta pergunta)
 {
     base.AddObject("Pergunta", pergunta);
 }
 /// <summary>
 /// Create a new Pergunta object.
 /// </summary>
 /// <param name="idPergunta">Initial value of the idPergunta property.</param>
 /// <param name="idTema">Initial value of the idTema property.</param>
 /// <param name="idNivelDificuldade">Initial value of the idNivelDificuldade property.</param>
 /// <param name="titulo">Initial value of the Titulo property.</param>
 /// <param name="enunciado">Initial value of the Enunciado property.</param>
 /// <param name="identificacao">Initial value of the Identificacao property.</param>
 /// <param name="correta">Initial value of the Correta property.</param>
 public static Pergunta CreatePergunta(global::System.Int32 idPergunta, global::System.Int32 idTema, global::System.Int32 idNivelDificuldade, global::System.String titulo, global::System.String enunciado, global::System.String identificacao, global::System.Int32 correta)
 {
     Pergunta pergunta = new Pergunta();
     pergunta.idPergunta = idPergunta;
     pergunta.idTema = idTema;
     pergunta.idNivelDificuldade = idNivelDificuldade;
     pergunta.Titulo = titulo;
     pergunta.Enunciado = enunciado;
     pergunta.Identificacao = identificacao;
     pergunta.Correta = correta;
     return pergunta;
 }
        public ActionResult EditPerguntaAtividade(Pergunta_Atividade pa, Pergunta p)
        {
            if (Roles.IsUserInRole(User.Identity.Name, "Professor"))
            {
                ViewBag.idPergunta
                    = new SelectList(perguntaModel.todasPerguntas(),
                        "idPergunta", "Identificacao", p);

                string erro = null;
                if (pa.idPerguntaAtividade == 0)
                {
                    erro = perguntaAtividadeModel.adicionarPerguntaAtividade(pa);
                }
                else
                {
                    erro = perguntaAtividadeModel.editarPerguntaAtividade(pa);
                }
                if (erro == null)
                {
                    //if(pa.idPerguntaAtividade !=0)
                    //    return RedirectToAction("Index");

                    return RedirectToAction("ListaPerguntaAtividade", new { idAtividade = pa.idAtividade });
                }
                else
                {
                    ViewBag.Erro = erro;
                    return View(pa);
                }
            }
            return Redirect("/Shared/Restrito");
        }
        private bool validarPergunta(Pergunta pergunta)
        {
            if (pergunta.Identificacao == "")
                return false;
            if (pergunta.Titulo == "")
                return false;
            if (pergunta.Enunciado == "")
                return false;
            if (pergunta.Correta == null)
                return false;

            return true;
        }
 public ActionResult Editalternativa(Alternativa a, Pergunta p)
 {
     if (Roles.IsUserInRole(User.Identity.Name, "Professor"))
     {
         string erro = null;
         if (a.idAlternativa == 0)
         {
             erro = alternativaModel.adicionarAlternativa(a);
         }
         else
         {
             erro = alternativaModel.editarAlternativa(a);
         }
         if (erro == null)
         {
             if (p.idPergunta == 0)
             {
                 erro = "p.idPEssoa vazio";
             }
             return RedirectToAction("ListaAlternativas", new { idPergunta = a.idPergunta });
         }
         else
         {
             ViewBag.Erro = erro;
             return View(a);
         }
     }
     return Redirect("/Shared/Restrito");
 }
        public ActionResult Edit(Pergunta p, Tema t, NivelDificuldade nd, Alternativa al)
        {
            if (Roles.IsUserInRole(User.Identity.Name, "Professor"))
            {
                ViewBag.idTema
                    = new SelectList(temaModel.todosTemas(),
                        "idTema", "Descricao", t);

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

                ViewBag.Correta
                    = new SelectList(alternativaModel.obterAlternativasPorPergunta(p.idPergunta),
                        "idAlternativa", "Descricao", al);

                if (!validarPergunta(p))
                {
                    ViewBag.Erro = "Erro na validação da Pergunta";
                    return View(p);
                }

                string erro = null;
                if (p.idPergunta == 0)
                {
                    erro = perguntaModel.adicionarPergunta(p);
                }
                else
                {
                    erro = perguntaModel.editarPergunta(p);
                }
                if (erro == null)
                {
                    if (p.Correta == 0)
                    {
                        return RedirectToAction("EditAlternativa", new { idAlternativa = 0, p.idPergunta });
                    }
                    else
                    {
                        return RedirectToAction("Index");
                    }

                }
                else
                {
                    ViewBag.Erro = erro;
                    return View(p);
                }
            }
            return Redirect("/Shared/Restrito");
        }