Esempio n. 1
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. 2
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. 3
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);
            }
        }