public ActionResult getCurrentQuestion(int examId) { var exam = offlineDB.Examination.SingleOrDefault(m => m.ID == examId); if (exam != null) { int currentSequence = exam.CurrentSequence ?? 0; if (currentSequence < exam.MaxSequence) { ExaminationDetails details = (from m in offlineDB.ExaminationDetails where m.ExaminationID == exam.ID && m.Sequence == currentSequence select m).FirstOrDefault(); TestQuestion question = details.TestQuestion; return(PartialView(question)); } else { return(RedirectToAction("FinishExam", new { examId = exam.ID })); } } else { return(PartialView()); } }
public JsonResult SubmitAndNext(int examId, int answerId) { var exam = offlineDB.Examination.SingleOrDefault(m => m.ID == examId); if (exam != null) { int currentSequence = exam.CurrentSequence ?? 0; if (currentSequence < exam.MaxSequence) { ExaminationDetails details = (from m in offlineDB.ExaminationDetails where m.ExaminationID == exam.ID && m.Sequence == currentSequence select m).FirstOrDefault(); TestAnswer answer = offlineDB.TestAnswer.SingleOrDefault(m => m.ID == answerId); if (answer.AnswerProperty) { details.Result = true; } else { details.Result = false; } exam.CurrentSequence = currentSequence + 1; offlineDB.SaveChanges(); return(Json(new { result = "SUCCESS", questionresult = details.Result }, JsonRequestBehavior.AllowGet)); } } return(Json(new { result = "FAIL" }, JsonRequestBehavior.AllowGet)); }
private Examination CreateExamintion(string OpenId, string NickName, int TestType, int count) { var questionList = from m in offlineDB.TestQuestion where m.TestTypeID == TestType select m; if (count > questionList.Count()) { count = questionList.Count(); } Examination exam = new Examination() { OpenId = OpenId, NickName = NickName, TestTypeID = TestType, CurrentSequence = 0, ExaminationStatus = false, ExaminationCreateTime = DateTime.Now, MaxSequence = count }; offlineDB.Examination.Add(exam); List <QuestionSequence> sequence = new List <QuestionSequence>(); Random r = new Random((int)DateTime.Now.Ticks); foreach (var item in questionList) { QuestionSequence tempitem = new QuestionSequence() { TestQuestion = item, RandomCode = r.Next(0, 1000) }; sequence.Add(tempitem); } int i = 0; foreach (var item in sequence.OrderBy(m => m.RandomCode).Take(count)) { ExaminationDetails details = new ExaminationDetails() { Examination = exam, QuestionID = item.TestQuestion.ID, Sequence = i }; offlineDB.ExaminationDetails.Add(details); i++; } offlineDB.SaveChanges(); return(exam); }
/// <summary> /// Validates this imaging examination result /// </summary> /// <param name="path">The path to this object as a string</param> /// <param name="messages">the validation messages to date, these may be added to within this method</param> void IDiagnosticImagingExaminationResult.Validate(string path, List <ValidationMessage> messages) { var vb = new ValidationBuilder(path, messages); var diagnosticImagingExaminationResult = (IDiagnosticImagingExaminationResult)this; vb.ArgumentRequiredCheck("OverallResultStatus", diagnosticImagingExaminationResult.OverallResultStatus); if (vb.ArgumentRequiredCheck("ExaminationResultName", ExaminationResultName)) { ExaminationResultName.ValidateMandatory(vb.Path + "ExaminationResultName", messages); } if (vb.ArgumentRequiredCheck("Modality", Modality)) { Modality.Validate(vb.Path + "Modality", messages); } if (diagnosticImagingExaminationResult.AnatomicalSite != null) { for (int index = 0; index < diagnosticImagingExaminationResult.AnatomicalSite.Count; index++) { diagnosticImagingExaminationResult.AnatomicalSite[index].Validate(vb.Path + string.Format("AnatomicalSite[{0}]", index), messages); } } // Optional Related Image if (RelatedImage != null) { RelatedImage.Validate(vb.Path + "RelatedImage", messages); // Checks that the ImageUrl is included } vb.ArgumentRequiredCheck("ExaminationProcedure", ExaminationProcedure); if (vb.ArgumentRequiredCheck("ExaminationDetails", ExaminationDetails)) { ExaminationDetails.Validate(vb.Path + "ExaminationDetails", messages); } vb.ArgumentRequiredCheck("ObservationDateTime", ObservationDateTime); }
public ActionResult getNextCheckout(int examId) { var exam = offlineDB.Examination.SingleOrDefault(m => m.ID == examId); if (exam != null) { var checkoutlist = exam.ExaminationDetails.Where(m => m.Result == false).ToArray(); int count = checkoutlist.Count(); if (count > 0) { // 返回随机错题 Random r = new Random((int)DateTime.Now.Ticks); ExaminationDetails details = checkoutlist[r.Next(0, count - 1)]; return(PartialView(details)); } else { // 无错题 return(RedirectToAction("FinishExam", new { examId = exam.ID })); } } return(View("Error")); }