예제 #1
0
        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());
            }
        }
예제 #2
0
        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));
        }
예제 #3
0
        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);
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
        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"));
        }