Esempio n. 1
0
        public void SalvarNotaManual(int QuestaoID, int ProvaID, int AlunoID, string Nota)
        {
            double nota      = Convert.ToDouble(Nota);
            Prova  provatemp = ProvaDAO.BuscarProvaId(ProvaID);

            provatemp.RespostasAlunos.Clear();

            RespostasAluno        questao;
            List <RespostasAluno> resultado = RespostasAlunoDAO.RespostasAlunoProvaId(ProvaID);

            //adiciono pois o resultado não traz correto da base de dados
            provatemp.RespostasAlunos = resultado;


            foreach (RespostasAluno item in resultado)
            {
                questao = new RespostasAluno();
                if (item.Aluno.AlunoId == AlunoID && item.Questao.QuestaoId == QuestaoID)
                {
                    questao = item;
                    questao.SituacaoCorrecao = 4;
                    questao.NotaAluno        = nota;
                    questao.Prova            = provatemp;
                    RespostasAlunoDAO.Editar(questao);
                }
            }
        }
Esempio n. 2
0
        public ActionResult ConsultarProva(DateTime DataInicio, DateTime DataFim, int Curso, string Disciplina, string NomeTurma)
        {
            List <Prova> provas = new List <Prova>();
            Disciplina   disc   = new Disciplina();

            if (!Disciplina.IsEmpty() || !Disciplina.Equals(null))
            {
            }
            disc = DisciplinaDAO.BuscarPorNome(Disciplina);

            if (Disciplina.Equals("Selecionar"))
            {
                provas = ProvaDAO.BuscarProvasPesquisa(Convert.ToInt32(Session["IdUsr"]), DataInicio, DataFim, Curso);
            }

            else if (Curso == 0)
            {
                provas = ProvaDAO.BuscarProvasPesquisa(Convert.ToInt32(Session["IdUsr"]), DataInicio, DataFim);
            }

            if ((!Disciplina.Equals("Selecionar")) && NomeTurma.Equals("Selecionar"))
            {
                provas = ProvaDAO.BuscarProvasPesquisa(Convert.ToInt32(Session["IdUsr"]), DataInicio, DataFim, Curso, disc.DisciplinaId);
            }

            if (!NomeTurma.Equals("Selecionar"))
            {
                provas = ProvaDAO.BuscarProvasPesquisa(Convert.ToInt32(Session["IdUsr"]), DataInicio, DataFim, Curso, disc.DisciplinaId, NomeTurma);
            }

            TempData["provas"] = provas;
            return(RedirectToAction("ConsultarProvaPr", "ConsultarProvaPr"));
        }
Esempio n. 3
0
        //Verificar a Prova e Questão, e validar a alternativa marcada com a correta no DB.
        public void SalvarQuestaoSE(int QuestaoID, int ProvaID, int AlternativaID)
        {
            int AlunoID = Convert.ToInt32(Session["IdUsr"]);
            //Tabela RespostasAlunos, provaID x, QuestãoID x, AlunoID x
            RespostasAluno Questao = RespostasAlunoDAO.BuscarProvaQuestaoAluno(QuestaoID, ProvaID, AlunoID);

            double notamax = ProvaDAO.BuscarValorNotamax(ProvaID, QuestaoID);

            foreach (Alternativa item2 in Questao.Questao.Alternativas)
            {
                if (item2.AlternativaId == AlternativaID)
                {
                    if (item2.correto == 1)
                    {
                        Questao.NotaAluno        = notamax;
                        Questao.SituacaoCorrecao = 1;
                    }
                    else
                    {
                        Questao.NotaAluno        = 0;
                        Questao.SituacaoCorrecao = 3;
                    }
                    break;
                }
            }
            Questao.DataHoraInicio = DateTime.Now;

            RespostasAlunoDAO.Editar(Questao);
        }
Esempio n. 4
0
        public ActionResult CorrigirTodaProva(int id, int idProva)
        {
            int AlunoID = id;

            List <RespostasAluno> Resp = ProvaDAO.BuscarRespostasPorAluno(AlunoID, idProva);
            double NotaSomada          = 0;

            foreach (var item in Resp)
            {
                if (item.NotaAluno > 3 && item.NotaAluno <= 10)
                {
                    item.NotaAluno = (item.NotaAluno / 10);
                    NotaSomada     = NotaSomada + item.NotaAluno;
                }
                else if (item.NotaAluno > 10)
                {
                    item.NotaAluno = (item.NotaAluno / 100);
                    NotaSomada     = NotaSomada + item.NotaAluno;
                }
                else
                {
                    NotaSomada = NotaSomada + item.NotaAluno;
                }
                //NotaSomada = (NotaSomada + item.NotaAluno);
            }
            TempData["$NotaAluno$"] = NotaSomada.ToString("F");

            ViewBag.Marcadas = RespostasAlunoDAO.BuscarAltsMarcadas(idProva, AlunoID);;
            Prova prova = ProvaDAO.BuscarProvaId(idProva);

            prova.RespostasAlunos = Resp;


            return(View(OrdenarObjetosProva(prova)));
        }
Esempio n. 5
0
        public void GerenciarNotaAluno(int alunoId, int provaId)
        {
            Prova provatemp = ProvaDAO.BuscarProvaId(provaId);

            provatemp.RespostasAlunos.Clear();

            List <RespostasAluno> resultado = RespostasAlunoDAO.RespostasAlunoProvaId(provaId);

            //adiciono pois o resultado não traz correto da base de dados
            provatemp.RespostasAlunos = resultado;

            AlunoNota alunoNota = AlunoNotaDAO.BuscarAlunoNota(alunoId, provaId);
            double    notaTotal = 0;

            if (alunoNota == null)
            {
                alunoNota       = new AlunoNota();
                alunoNota.Aluno = AlunoDAO.BuscarAlunoId(alunoId);
                alunoNota.Prova = provatemp;
            }
            foreach (var item in BuscarRespostasPorAluno(alunoId, provaId))
            {
                notaTotal += item.NotaAluno;
            }
            alunoNota.NotaTotal = notaTotal;
            if (AlunoNotaDAO.BuscarAlunoNota(alunoNota.Aluno.AlunoId, alunoNota.Prova.ProvaId) == null)
            {
                AlunoNotaDAO.CadastrarAlunoNota(alunoNota);
            }
            else
            {
                AlunoNotaDAO.EditarAlunoNota(alunoNota);
            }
        }
Esempio n. 6
0
        //Passar para a prova a resposta discursiva do aluno...
        public ActionResult VisualizarProva(int?idAluno, int idProva)
        {
            int Pr      = 0;
            int AlunoID = Convert.ToInt32(Session["IdUsr"]);

            if (idAluno != null)
            {
                AlunoID = Convert.ToInt32(idAluno); Pr = 1;
            }

            //Verificar se o AlunoID ja realizou a prova...
            if (!RespostasAlunoDAO.VerificarSeProvaFeita(idProva, AlunoID))
            {
                TempData["$ProvaJaFeita$"] = "Só é possivel visualizar a prova depois de concluída.";
                return(RedirectToAction("ConsultarProvaAl", "ConsultarProvaAl"));
            }

            List <RespostasAluno> Resp = ProvaDAO.BuscarRespostasPorAluno(AlunoID, idProva);
            double NotaSomada          = 0;

            if (ProvaDAO.MostrarNota(idProva) || Pr == 1)
            {
                foreach (var item in Resp)
                {
                    if (item.NotaAluno > 3 && item.NotaAluno <= 10)
                    {
                        item.NotaAluno = (item.NotaAluno / 10);
                        NotaSomada     = NotaSomada + item.NotaAluno;
                    }
                    else if (item.NotaAluno > 10)
                    {
                        item.NotaAluno = (item.NotaAluno / 100);
                        NotaSomada     = NotaSomada + item.NotaAluno;
                    }
                    else
                    {
                        NotaSomada = NotaSomada + item.NotaAluno;
                    }
                    //NotaSomada = (NotaSomada + item.NotaAluno);
                }
                TempData["$NotaAluno$"] = NotaSomada.ToString("F");
            }
            else
            {
                TempData.Remove("$NotaAluno$");
                TempData["$ProvaJaFeita$"] = "Só é possivel visualizar a prova após a data e hora final.";
                return(RedirectToAction("ConsultarProvaAl", "ConsultarProvaAl"));
            }

            ViewBag.Marcadas = RespostasAlunoDAO.BuscarAltsMarcadas(idProva, AlunoID);;
            Prova prova = ProvaDAO.BuscarProvaId(idProva);

            prova.RespostasAlunos = Resp;
            return(View(prova));
        }
        public JsonResult Simular()
        {
            using (IConnection Conexao = new Connection())
            {
                IDAO <Aluno>   alunoDAO   = new AlunoDAO(Conexao);
                IDAO <Materia> materiaDAO = new MateriaDAO(Conexao);
                IDAO <Prova>   provaDAO   = new ProvaDAO(Conexao);

                Collection <Aluno> listaAluno = new  Collection <Aluno>();
                listaAluno = alunoDAO.Listar();

                Collection <Materia> listaMateria = new Collection <Materia>();
                listaMateria = materiaDAO.Listar();


                foreach (Aluno aluno in listaAluno)
                {
                    foreach (Materia materia in listaMateria)
                    {
                        Prova prova = new Prova();
                        prova.Materia = materia;
                        prova.Aluno   = aluno;

                        Random random = new Random();
                        prova.NotaProva1 = Math.Round((random.NextDouble() * (10 - 4) + 4), 1);
                        prova.NotaProva2 = Math.Round((random.NextDouble() * (10 - 4) + 4), 1);
                        prova.NotaProva3 = Math.Round((random.NextDouble() * (10 - 4) + 4), 1);

                        double p1       = prova.Materia.PesoProva1 * prova.NotaProva1;
                        double p2       = prova.Materia.PesoProva2 * prova.NotaProva2;
                        double p3       = prova.Materia.PesoProva3 * prova.NotaProva3;
                        double somaPeso = prova.Materia.PesoProva1 + prova.Materia.PesoProva2 + prova.Materia.PesoProva3;

                        double mediaPonderada = (p1 + p2 + p3) / (somaPeso);

                        prova.MediaProva = Math.Round(mediaPonderada, 1);

                        provaDAO.inserir(prova);

                        if (prova.MediaProva >= 6 || prova.MediaProva <= 4)
                        {
                            AlunoDAO alunoAlterar = new AlunoDAO(Conexao);
                            alunoAlterar.alterarStatus(aluno);
                        }
                    }
                }
            }

            return(Json("Ok"));
        }
Esempio n. 8
0
        public ActionResult CorrigirProvaAlunoEspecifico(int id, int idProva)
        {
            Prova prova = ProvaDAO.BuscarProvaId(idProva);
            List <RespostasAluno> respos = new List <RespostasAluno>();

            ViewBag.Prova = OrdenarObjetosProva(prova);
            foreach (var item in OrdenarObjetosProva(prova).RespostasAlunos)
            {
                if (item.Aluno.AlunoId == id)
                {
                    respos.Add(item);
                }
            }
            ViewBag.RespostasAlunoCorrecao = respos;

            return(View(OrdenarObjetosProva(prova)));
        }
Esempio n. 9
0
        // GET: ConsultarProvaPr
        public ActionResult ConsultarProvaPr()
        {
            ConfiguracoesController.ValidarCorrecoesDiscursivas();
            limpar();
            ViewBag.Cursos = ViewBag.Cursos = CursoDAO.listarCursosPorProfessor(Convert.ToInt32(Session["IdUsr"]));

            if (TempData["provas"] == null)
            {
                ViewBag.Provas = ProvaDAO.BuscarPorProfessor(Convert.ToInt32(Session["IdUsr"]));
            }
            else
            {
                ViewBag.Provas = TempData["provas"];
            }

            return(View(new Prova()));
        }
Esempio n. 10
0
        public ActionResult ConsultarProva(DateTime?DataIni, DateTime?DataFim, int Curso, string Disciplina, int Turma, int Status)
        {
            List <Prova> provas = new List <Prova>();

            if (Curso == 0 || Disciplina == "0")
            {
                provas = ProvaDAO.BuscarProvasAlunoGeral(Status, DataIni, DataFim);
            }
            else
            {
                var disciplinaId = DisciplinaDAO.BuscarPorNome(Disciplina).DisciplinaId;
                provas = ProvaDAO.BuscarProvasAluno(Status, DataIni, DataFim, disciplinaId, Turma);
            }

            TempData["provas"] = provas;
            return(RedirectToAction("ConsultarProvaAl", "ConsultarProvaAl"));
        }
Esempio n. 11
0
        public ActionResult RealizarProva(int provaID)
        {
            //Verificar se o AlunoID ja realizou a prova...
            int AlunoID = Convert.ToInt32(Session["IdUsr"]);

            if (RespostasAlunoDAO.VerificarSeProvaFeita(provaID, AlunoID))
            {
                TempData["$ProvaJaFeita$"] = "Você já realizou essa prova.";
                return(RedirectToAction("ConsultarProvaAl", "ConsultarProvaAl"));
            }

            //Se não realizou, enviar para prova.
            TempData.Remove("$ProvaJaFeita$");
            Prova prova = ProvaDAO.BuscarProvaId(provaID);

            return(View(prova));
        }
        public ActionResult CadastrarQuestoesProva(Prova prova)
        {
            List <DateTime> listaData = new List <DateTime>();

            listaData = ajustarHoraFim(prova.DataProvaInicio, prova.HoraInicio, prova.DataProvaFim, prova.HoraFim);

            if (listaData != null)
            {
                prova.HoraInicio = listaData[0];
                prova.HoraFim    = listaData[1];
            }



            Disciplina            disc          = DisciplinaDAO.BuscarPorNome(prova.NomeDisciplina);
            List <RespostasAluno> respostaAluno = new List <RespostasAluno>();

            prova.RespostasAlunos = respostaAluno;
            prova.Disciplina      = disc;


            //Aplicando os valores da Faixa de correção (gambs)
            prova.ConfigPln.IncorretoInicio = 0;
            prova.ConfigPln.IncorretoFim    = prova.InFim;
            prova.ConfigPln.RevisarInicio   = (prova.InFim + 1);
            prova.ConfigPln.RevisarFim      = prova.ParFim;
            prova.ConfigPln.CorretoInicio   = (prova.ParFim + 1);
            prova.ConfigPln.CorretoFim      = 100;

            int id = Convert.ToInt32(Session["IdUsr"]);

            prova.Professor = ProfessorDAO.BuscarProfessorPorId(id);
            provaFixa       = prova;
            GerarQuestoesProva();

            if (ProvaDAO.BuscarPorTituloProva(prova.TituloProva) == null)
            {
                return(RedirectToAction("AdicionarQuestoesNaProva", "GerarProva", provaFixa));
            }

            return(RedirectToAction("GerarProva", "GerarProva", provaFixa));
        }
        public ActionResult SalvarProvaQuestoes(List <int> idquestao, List <double> notas)
        {
            for (int i = 0; i < provaFixa.NotasQuestoes.Count; i++)
            {
                if (provaFixa.NotasQuestoes[i].Questao.QuestaoId == idquestao[i])
                {
                    provaFixa.NotasQuestoes[i].ValorQuestao = Math.Round(notas[i], 2);;
                }
            }
            //adiciona o gabarito de todos os alunosk
            GerarGabaritoAluno();

            if (ProvaDAO.CadastrarProva(provaFixa))
            {
                TempData["$ProvaGerada$"] = "Prova criada com sucesso.";

                return(RedirectToAction("GerarProva", "GerarProva"));
            }

            return(RedirectToAction("AdicionarQuestoesNaProva", "GerarProva", provaFixa));
        }
        public ActionResult Resultado()
        {
            using (IConnection Conexao = new Connection())
            {
                IDAO <Aluno>   alunoDAO   = new AlunoDAO(Conexao);
                IDAO <Turma>   turmaDAO   = new TurmaDAO(Conexao);
                IDAO <Materia> materiaDAO = new MateriaDAO(Conexao);
                IDAO <Prova>   provaDAO   = new ProvaDAO(Conexao);
                Aluno          aluno      = new Aluno();

                Collection <Prova> prova = provaDAO.Listar();

                foreach (var item in prova)
                {
                    item.Aluno       = alunoDAO.ListarPorCodigo(item.IDAluno);
                    item.Aluno.Turma = turmaDAO.ListarPorCodigo(item.Aluno.IDTurma);
                    item.Materia     = materiaDAO.ListarPorCodigo(item.IDMateria);
                }

                return(View(prova));
            }
        }
        public JsonResult GeraAlunos(int qtdTurmas, int qtdAlunos)
        {
            string resposta = Util.Resultado.Ok.ToString();

            using (IConnection Conexao = new Connection())
            {
                Conexao.Abrir();
                IDAO <Turma>   turmaDAO   = new TurmaDAO(Conexao);
                IDAO <Aluno>   alunoDAO   = new AlunoDAO(Conexao);
                IDAO <Prova>   provaDAO   = new ProvaDAO(Conexao);
                IDAO <Materia> materiaDAO = new MateriaDAO(Conexao);

                provaDAO.ExcluirTodos();
                materiaDAO.ExcluirTodos();
                alunoDAO.ExcluirTodos();
                turmaDAO.ExcluirTodos();

                Turma turma = new Turma();
                Aluno aluno = new Aluno();

                //Gera as turmas automaticamente...
                for (var i = 1; i <= qtdTurmas; i++)
                {
                    turma.Nome = Util.cTurma + i.ToString();
                    turmaDAO.inserir(turma);

                    for (var y = 1; y <= qtdAlunos; y++)
                    {
                        aluno.Nome  = Util.cAluno + y.ToString();
                        aluno.Turma = turma;

                        alunoDAO.inserir(aluno);
                    }
                }
            }

            return(Json(resposta));
        }
Esempio n. 16
0
        public static void ValidarCorrecoesDiscursivas()
        {
            List <Prova> provas = ProvaDAO.BuscarTodasProvas();

            foreach (var item in provas)
            {
                List <RespostasAluno> respostas = RespostasAlunoDAO.BuscarRespostasPorProvaId(item.ProvaId);
                respostas = respostas.Where(x => x.RespostaDiscursiva != null).ToList();

                foreach (var item2 in respostas)
                {
                    if (item2.SituacaoCorrecao == 0 && item2.NotaAluno != 0)
                    {
                        var incorreto = item.ConfigPln.IncorretoFim;
                        var parcial   = item.ConfigPln.RevisarFim;
                        var notaMAX   = ProvaDAO.BuscarValorNotamax(item.ProvaId, item2.Questao.QuestaoId);

                        if (item2.NotaAluno <= incorreto)
                        {
                            item2.SituacaoCorrecao = 3;
                            item2.NotaAluno        = 0;
                        }
                        else if (item2.NotaAluno <= parcial)
                        {
                            item2.SituacaoCorrecao = 2;
                            item2.NotaAluno        = 0;
                        }
                        else
                        {
                            item2.SituacaoCorrecao = 1;
                            item2.NotaAluno        = notaMAX;
                        }

                        RespostasAlunoDAO.Editar(item2);
                    }
                }
            }
        }
Esempio n. 17
0
        public ActionResult VisualizarProva(int ProvaID)
        {
            Prova prova = ProvaDAO.BuscarProvaId(ProvaID);

            return(View(OrdenarObjetosProva(prova)));
        }
Esempio n. 18
0
        public void RecuperaGabaritosAlunos(int ProvaId, int?Matricula, int?Situacao)
        {
            try
            {
                List <string>         status     = new List <string>();
                List <string>         statusSitu = new List <string>();
                List <double>         notas      = new List <double>();
                List <double>         notasSitu  = new List <double>();
                List <RespostasAluno> result     = new List <RespostasAluno>();
                List <RespostasAluno> resultSitu = new List <RespostasAluno>();
                prova = ProvaDAO.BuscarProvaIdConsultaProf(ProvaId);

                if (Matricula != null)
                {
                    var   matr  = Convert.ToInt32(Matricula);
                    Aluno aluno = AlunoDAO.BuscarAlunoPorMatricula(matr);
                    result = prova.RespostasAlunos.GroupBy(x => x.Aluno.AlunoId == aluno.AlunoId)
                             .Select(g => g.First()).ToList();
                    result.Remove(prova.RespostasAlunos.Where(f => f.Aluno.AlunoId != aluno.AlunoId).First());
                }
                else
                {
                    result = prova.RespostasAlunos.GroupBy(x => x.Aluno.AlunoId)
                             .Select(g => g.First()).ToList();
                }

                var cont = 0;
                foreach (var respostas in result)
                {
                    notas.Add(ClacularNotaTotalAluno(respostas.Aluno.AlunoId, respostas.Prova.ProvaId));

                    List <RespostasAluno> resps = new List <RespostasAluno>();
                    resps = respostas.Prova.RespostasAlunos.Where(x => x.RespostaDiscursiva != null && x.Aluno.AlunoId == respostas.Aluno.AlunoId).ToList();
                    status.Add("");
                    if (resps.Count != 0)
                    {
                        foreach (var item in resps)
                        {
                            if (item.SituacaoCorrecao == 1 || item.SituacaoCorrecao == 3 || item.SituacaoCorrecao == 4)
                            {
                                status[cont] = "Corrigido";
                            }
                            else if (item.SituacaoCorrecao == 0)
                            {
                                status[cont] = "Processando";
                            }
                            else if (item.SituacaoCorrecao == 2 || item.SituacaoCorrecao == 5)
                            {
                                status[cont] = "Corrigir Manual";
                                break;
                            }
                            else
                            {
                                status[cont] = "Erro!";
                            }
                        }
                    }
                    else
                    {
                        status[cont] = "Não Realizado";
                    }
                    cont++;
                }

                var cc  = 0;
                var cc2 = 0;
                foreach (var respostas in result)
                {
                    List <RespostasAluno> resps = new List <RespostasAluno>();
                    resps = respostas.Prova.RespostasAlunos.Where(x => x.RespostaDiscursiva != null && x.Aluno.AlunoId == respostas.Aluno.AlunoId).ToList();
                    if (resps.Count != 0)
                    {
                        var contcor = 0;
                        foreach (var item in resps)
                        {
                            switch (Situacao)
                            {
                            case 0:
                                break;

                            case 1:
                                if (item.SituacaoCorrecao == 1 || item.SituacaoCorrecao == 3 || item.SituacaoCorrecao == 4)
                                {
                                    if (contcor == 0)
                                    {
                                        notasSitu.Add(0);
                                        statusSitu.Add("");
                                        resultSitu.Add(item);
                                        statusSitu[cc] = (status[cc2]);
                                        notasSitu[cc]  = (notas[cc2]);
                                        cc++;
                                    }
                                    contcor++;
                                }
                                break;

                            case 2:
                                if (item.SituacaoCorrecao == 0)
                                {
                                    notasSitu.Add(0);
                                    statusSitu.Add("");

                                    resultSitu.Add(item);
                                    statusSitu[cc] = (status[cc2]);
                                    notasSitu[cc]  = (notas[cc2]);
                                    cc++;
                                }
                                break;

                            case 3:
                                if (item.SituacaoCorrecao == 2 || item.SituacaoCorrecao == 5)
                                {
                                    notasSitu.Add(0);
                                    statusSitu.Add("");

                                    resultSitu.Add(item);
                                    statusSitu[cc] = (status[cc2]);
                                    notasSitu[cc]  = (notas[cc2]);
                                    cc++;
                                    return;
                                }
                                break;

                            default:
                                break;
                            }
                            if (item.SituacaoCorrecao == 2 || item.SituacaoCorrecao == 5)
                            {
                                break;
                            }
                            if (item.SituacaoCorrecao == 0)
                            {
                                break;
                            }
                        }
                    }
                    else if (Situacao == 4)
                    {
                        notasSitu.Add(0);
                        statusSitu.Add("");

                        resultSitu.Add(respostas);
                        statusSitu[cc] = (status[cc2]);
                        notasSitu[cc]  = (notas[cc2]);
                        cc++;
                    }
                    cc2++;
                }

                if (Situacao == 1 || Situacao == 2 || Situacao == 3 || Situacao == 4)
                {
                    ViewBag.StatusDSProva  = statusSitu;
                    ViewBag.NotaDaProva    = notasSitu;
                    ViewBag.RespostasAluno = resultSitu;
                }
                else
                {
                    ViewBag.StatusDSProva  = status;
                    ViewBag.NotaDaProva    = notas;
                    ViewBag.RespostasAluno = result;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("{0} Exception caught.", e);
            }
        }
Esempio n. 19
0
        //Variavel "Parcial" significa se essa questão aceita nota parcial ou total.
        public void SalvarQuestaoMEVF(int QuestaoID, int ProvaID, List <int> AlternativaID, int?Parcial)
        {
            List <int>     corretos = new List <int>();
            var            MarcCor  = 0;
            var            MarcInc  = 0;
            double         Total    = 0;
            int            AlunoID  = Convert.ToInt32(Session["IdUsr"]);
            RespostasAluno Questao  = RespostasAlunoDAO.BuscarProvaQuestaoAluno(QuestaoID, ProvaID, AlunoID);

            //Se o aluno desmarcar todas as alternativas, o valor é automaticamente 0...
            if (AlternativaID == null)
            {
                Questao.SituacaoCorrecao = 3;
                Questao.NotaAluno        = 0;
                Questao.DataHoraInicio   = DateTime.Now;

                RespostasAlunoDAO.Editar(Questao);
            }
            else
            {
                //if (Parcial == 1) {} else {}  --  Função separada para ativar e desativar o Salvar nota Parcial ou Total.
                //Pegar todas as AlternativasID dessa questão em especifica...
                List <int> AltersQuestao = new List <int>();
                foreach (Alternativa AltsQuest in Questao.Questao.Alternativas)
                {
                    AltersQuestao.Add(AltsQuest.AlternativaId);
                }

                //Inclui na lista "AltsDtQuest" as "AlternativaID" que pertencem a essa questão...
                List <int> AltsDtQuest = new List <int>();
                foreach (var SelAlts in AlternativaID)
                {
                    if (AltersQuestao.Contains(SelAlts))
                    {
                        AltsDtQuest.Add(SelAlts);
                    }
                }

                //Pega as AlternativasID dessa questão, onde as alternativas são "Corretas"...
                foreach (Alternativa item in Questao.Questao.Alternativas)
                {
                    if (item.correto == 1)
                    {
                        corretos.Add(item.AlternativaId);
                    }
                }
                double notamax    = ProvaDAO.BuscarValorNotamax(ProvaID, QuestaoID);
                double notaDiv    = (notamax / AltersQuestao.Count);
                double notaDivCor = (notamax / corretos.Count);

                //Separa quantas alternativas marcadas estão corretas e incorretas...
                foreach (int item2 in AltsDtQuest)
                {
                    if (corretos.Contains(item2))
                    {
                        MarcCor++;
                    }
                    else
                    {
                        MarcInc++;
                    }
                }

                //Atribui o valor total da nota do Aluno com base nas alternativas marcadas...
                Total = (notaDivCor * MarcCor);
                Total = (Total - (notaDiv * MarcInc));
                if (Total < 0)
                {
                    Total = 0;
                }

                //Define qual é o status da questão, correto, parcialmente correto ou incorreto...
                if (MarcCor > 0)
                {
                    if (Total == notamax)
                    {
                        Questao.SituacaoCorrecao = 1;
                    }
                    else
                    {
                        Questao.SituacaoCorrecao = 2;
                    }
                }
                else
                {
                    Questao.SituacaoCorrecao = 3;
                }

                Questao.NotaAluno      = Math.Round(Total, 2);
                Questao.DataHoraInicio = DateTime.Now;

                RespostasAlunoDAO.Editar(Questao);
            }
        }