コード例 #1
0
        } // 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");
        }
コード例 #2
0
        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