} // end CorrectExam public ActionResult Correct(CorrectingViewModel viewmodel) { int id = viewmodel.Answer.AnswerId; StudentAnswer studentAnswer = db.StudentAnswers.Find(id); //studentAnswer.ExaminerComments = viewmodel.Answer.ExaminerComments; if (studentAnswer == null) { return(RedirectToAction("CorrectExam", "Examiner", new { subject = viewmodel.Subject })); } studentAnswer.ExaminerComments = viewmodel.Answer.ExaminerComments; studentAnswer.MarksGained = viewmodel.Answer.MarksGained; studentAnswer.CorrectedDateTime = viewmodel.Answer.CorrectedDateTime; studentAnswer.CorrectorId = viewmodel.Answer.CorrectorId; db.Entry(studentAnswer).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("CorrectExam", "Examiner", new { subject = viewmodel.Subject })); //return RedirectToAction("Examiner", "Dashboard"); }
public ActionResult CorrectExam(string subject) { CorrectingViewModel viewmodel; viewmodel = new CorrectingViewModel { AllQsCorrected = false, AllSessionsCorrected = false }; string teacher = User.Identity.GetUserId(); List <string> subjectNames; List <Subject> subjects; //We get a list of only subjects for this tutor subjectNames = new List <string>(from t in db.Teachings.Where(x => x.ExaminerId == teacher) select t.SubjectId); subjects = new List <Subject>(from s in db.Subjects where subjectNames.Contains(s.SubjectId) select s); //and pass them to the viewmodel viewmodel.Subjects = subjects; //if no subject has been selected the view is returned without querying for questions if (subject == null) { return(View(viewmodel)); } //if a subject has been selected we find its last session provided it is in the past string session = (from e in db.ExamSessions where (e.SubjectId == subject && e.FullyCorrected == false && e.ExamEndTime < DateTime.Now && e.ExamEndTime != null) select e.ExamId).SingleOrDefault(); if (session == null) { session = (from e in db.ExamSessions where (e.SubjectId == subject && e.FullyCorrected == false) select e.ExamId).SingleOrDefault(); if (session == null) { viewmodel.ExamFullyCorrected = true; } else { viewmodel.ExamNotEnded = true; } string sessionCheck = (from e in db.ExamSessions where (e.SubjectId == subject && e.FullyCorrected == false && (e.ExamEndTime > DateTime.Now || e.ExamEndTime == null)) select e.ExamId).SingleOrDefault(); if (sessionCheck == null) { viewmodel.AllQsCorrected = true; viewmodel.AllSessionsCorrected = true; } else { ViewBag.Error = "The exam sessions for this subject is still not yet finished."; } return(View(viewmodel)); } //if a session was found we find the PaperQuestions that are to be manually corrected List <PaperQuestion> paperquestions = new List <PaperQuestion>(from q in db.PaperQuestions where q.ExamId == session && q.RelatedQuestion.QuestionFormat == Question.QuestionType.WrittenAnswer select q); //if there are no PaperQuestions to be corrected manually if (paperquestions.Count != 0) { // find the student answer for this paper than need to be corrected manually List <string> paperquestionid = new List <string>(from q in paperquestions select q.PaperQuestionId); StudentAnswer answer = (from a in db.StudentAnswers where paperquestionid.Contains(a.PaperQuestionId) && a.CorrectorId == null select a).FirstOrDefault(); if (answer != null) { answer.CorrectorId = teacher; answer.CorrectedDateTime = DateTime.Now; viewmodel.Answer = answer; } else { //if there are no answers to correct viewmodel.AllQsCorrected = true; AutoCorrectMC(session); } } else { //if there are no answers to correct viewmodel.AllQsCorrected = true; AutoCorrectMC(session); } viewmodel.Subject = subject; viewmodel.Exam = session; // viewmodel.Questions = questions; return(View(viewmodel)); } // end CorrectExam