//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); }
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); } } }
public static bool Editar(RespostasAluno resp) { //ctx.Entry(resp).Property("Prova_ProvaId").IsModified = false; ctx.Entry(resp).State = System.Data.Entity.EntityState.Modified; ctx.SaveChanges(); return(true); }
public void SalvarQuestaoDS(int QuestaoID, int ProvaID, string Resposta) { int AlunoID = Convert.ToInt32(Session["IdUsr"]); RespostasAluno Questao = RespostasAlunoDAO.BuscarProvaQuestaoAluno(QuestaoID, ProvaID, AlunoID); Questao.RespostaDiscursiva = Resposta; Questao.SituacaoCorrecao = 0; Questao.DataHoraInicio = DateTime.Now; RespostasAlunoDAO.Editar(Questao); }
public static RespostasAluno BuscarProvaQuestaoAluno(int QuestaoID, int ProvaID, int AlunoID) { Prova prova = ProvaDAO.BuscarProvaId(ProvaID); RespostasAluno result = new RespostasAluno(); foreach (RespostasAluno item in prova.RespostasAlunos) { if (item.Aluno.AlunoId == AlunoID && item.Questao.QuestaoId == QuestaoID) { result = RespostasAlunoId(item.RespostasAlunoId); } } return(result); }
private void GerarGabaritoAluno() { Turma turma = TurmaDAO.BuscarTurmaId(provaFixa.Disciplina.DisciplinaId); RespostasAluno respostaAluno; List <RespostasAluno> listaRespostaAluno = new List <RespostasAluno>(); List <Aluno> alunos = turma.Alunos; foreach (Aluno aluno in alunos) { foreach (var item in provaFixa.NotasQuestoes) { respostaAluno = new RespostasAluno(); respostaAluno.Aluno = aluno; respostaAluno.Questao = item.Questao; respostaAluno.Alternativas = new List <Alternativa>(); respostaAluno.DataHoraInicio = null; respostaAluno.DataHoraFim = null; respostaAluno.Prova = provaFixa; listaRespostaAluno.Add(respostaAluno); } } provaFixa.RespostasAlunos.AddRange(listaRespostaAluno); }
//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); } }
/*o objeto deve vir validado e com todos os campos obrigatórios preenchidos*/ public static bool CadastrarResposta(RespostasAluno resp) { ctx.RespostasAlunos.Add(resp); ctx.SaveChanges(); return(true); }