/// <summary> /// 获取考试的基本信息 /// </summary> /// <param name="examUserID">考试人员ID</param> /// <returns></returns> public ExamBaseInforShow GetExamBaseInforShow(int examUserID) { var examBaseInfor = new ExamBaseInforShow(); var examuser = Etdb.GetSingleById <TalExamSendStudent>(examUserID); //考生考试信息 if (examuser.SourceType == 0) { var exam = Etdb.GetSingleById <TalExamination>(examuser.RelationID); examBaseInfor.ExamEndTime = exam.ExamEndTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm"); examBaseInfor.ExamLength = exam.ExamLength; examBaseInfor.ExamRules = exam.ExamRules; int remainingtime = (int)(exam.ExamEndTime.ToLocalTime() - DateTime.Now).TotalSeconds; if (remainingtime > examuser.RemainingTime) { remainingtime = examuser.RemainingTime; } examBaseInfor.UserRemainingTime = remainingtime > 0 ? remainingtime : 0;//用户剩余时间 examBaseInfor.ExamRuleList = exam.ExamRules.Split(new string[] { "\n" }, StringSplitOptions.None); examBaseInfor.ExamShowWay = exam.ShowType; examBaseInfor.AllowLeavePageTimes = exam.LeavePageTimes; examBaseInfor.UserLeavePageTimes = examuser.LeavePageTimes; examBaseInfor.ExamStartTime = exam.ExamBeginTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm"); examBaseInfor.ExamTitle = exam.ExaminationTitle; examBaseInfor.ResultFlag = exam.PublishResult; } return(examBaseInfor); }
/// <summary> /// 获取考试的基本信息的列表 /// </summary> /// <param name="examUserIDs">考试关联学员ID</param> /// <returns></returns> public List <ExamBaseInforShow> GetExamBaseInforShow(IEnumerable <int> examUserIDs) { var list = new List <ExamBaseInforShow>(); var examuserList = Etdb.GetAllList <tbExamSendStudent>(Query.And(new[] { Query.In("_id", new BsonArray(examUserIDs)) })); var exampaperList = Etdb.GetAllList <tbExampaperRedundancy>(Query.And(new[] { Query.In("_id", new BsonArray(examuserList.Select(p => p.ExamPaperID))) })); var examList = Etdb.GetAllList <tbExamination>(Query.And(new[] { Query.In("_id", new BsonArray(examuserList.Where(p => p.SourceType == 0).Select(p => p.RelationID))) })); foreach (var examUserID in examUserIDs) { var examBaseInfor = new ExamBaseInforShow(); var examuser = examuserList.Find(p => p._id == examUserID); if (examuser.SourceType == 1) { continue; } //Etdb.GetSingleById<tbExamSendStudent>(examUserID); //考生考试信息 var exam = examList.Find(p => p._id == examuser.RelationID); //Etdb.GetSingleById<tbExamination>(examuser.RelationID); examBaseInfor.ExamEndTime = exam.ExamEndTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm"); examBaseInfor.PublishedFlag = exam.PublishedFlag; examBaseInfor.ExamLength = exam.ExamLength; examBaseInfor.ExamRules = exam.ExamRules; int remainingtime = (int)(exam.ExamEndTime.ToLocalTime() - DateTime.Now).TotalSeconds; if (remainingtime > examuser.RemainingTime) { remainingtime = examuser.RemainingTime; } examBaseInfor.UserRemainingTime = remainingtime > 0 ? remainingtime : 0;//用户剩余时间 examBaseInfor.ExamRuleList = exam.ExamRules.Split(new string[] { "\n" }, StringSplitOptions.None); examBaseInfor.ExamShowWay = exam.ShowType; examBaseInfor.AllowLeavePageTimes = exam.LeavePageTimes; examBaseInfor.UserLeavePageTimes = examuser.LeavePageTimes; examBaseInfor.ExamStartTime = exam.ExamBeginTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm"); examBaseInfor.ExamTitle = exam.ExaminationTitle; //examBaseInfor.PassScore = exam.PercentFlag == 0 ? Convert.ToInt32(exam.PassScore) : Convert.ToInt32(exam.PassScore * examBaseInfor.ExamScore / 100); var paper = exampaperList.Find(p => p._id == exam.PaperID); //Etdb.GetSingleById<tbExampaperRedundancy>(exam.PaperID); examBaseInfor.ExamScore = exam.PercentFlag == 0 ? 100 : paper.ExampaperScore; examBaseInfor.PassScore = (int)(exam.PassScore * examBaseInfor.ExamScore / 100); examBaseInfor.PercentScore = exam.PercentFlag; examBaseInfor.ResultFlag = exam.AlreadySendScore; list.Add(examBaseInfor); } return(list); }
/// <summary> /// 获取考试的基本信息 /// </summary> /// <param name="examUserID">考试人员ID</param> /// <param name="type">0:独立的考试</param> /// <returns></returns> public ExamBaseInforShow GetExamBaseInforShow(int examUserID, int type = 0) { var examBaseInfor = new ExamBaseInforShow(); var examuser = Etdb.GetSingleByID <tbExamSendStudent>(examUserID); //考生考试信息 if (type == 0) { var exam = Etdb.GetSingleByID <tbExamination>(examuser.RelationID); examBaseInfor.ExamEndTime = exam.ExamEndTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm"); examBaseInfor.ExamLength = exam.ExamLength; var paper = Etdb.GetSingleByID <tbExampaper>(exam.PaperID); if (paper.ExamType == 0) { examBaseInfor.ExamScore = exam.PercentFlag == 0 ? 100 : paper.QuestionList.Sum(p => p.QScore); } else { examBaseInfor.ExamScore = exam.PercentFlag == 0 ? 100 : paper.ExampaperScore; } examBaseInfor.ExamShowWay = exam.ShowType; examBaseInfor.ExamStartTime = exam.ExamBeginTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm"); examBaseInfor.ExamTitle = exam.ExaminationTitle; examBaseInfor.PassScore = exam.PercentFlag == 0 ? Convert.ToInt32(exam.PassScore) : Convert.ToInt32(exam.PassScore * examBaseInfor.ExamScore / 100); examBaseInfor.PercentScore = exam.PercentFlag; examBaseInfor.ResultFlag = exam.PublishResult; } else { if (examuser != null) { var coursepaper = ICoCoursePaperBL.GetCo_CourseMainPaper(examuser.RelationID); examBaseInfor.ExamLength = coursepaper.Length; var course = ICourseBL.GetCo_Course(examuser.RelationID); var Sys_ParamConfig = ISysParamConfigBL.GetSys_ParamConfig(26); //examBaseInfor.ExamScore = coursepaper.TotalScore; examBaseInfor.ExamStartTime = course.EndTimeStr; examBaseInfor.ExamEndTime = course.EndTime.AddHours(Convert.ToDouble(Sys_ParamConfig.ConfigValue.Split(';')[0])).ToString("yyyy-MM-dd HH:mm"); //var exam = Etdb.GetSingleByID<tbExamination>(examuser.RelationID); var paper = Etdb.GetSingleByID <tbExampaper>(examuser.ExamPaperID); examBaseInfor.PassScore = Convert.ToInt32(coursepaper.LevelScore * 0.01 * paper.ExampaperScore);//考试通过分数线 if (paper.ExamType == 0) { examBaseInfor.ExamScore = paper.QuestionList.Sum(p => p.QScore); } else { examBaseInfor.ExamScore = paper.ExampaperScore; } } } return(examBaseInfor); }
/// <summary> /// 根据 考生考试关联ID 获取考生答题详情 /// </summary> /// <returns></returns> public JsonResult GetReStudentExamAnswerByExamUserId(int examUserId) { tbExamSendStudent examSendStudent = _examinationBL.GetExamSendStudent(examUserId); ExamBaseInforShow exam = _examTestBL.GetExamBaseInforShow(examUserId); tbExampaper examPaper = _exampaperBL.GetExampaper(examSendStudent.ExamPaperID); var itemArray = new object[examSendStudent.StudentAnswerList.Count]; int n = 0; string questionTypeHtml = ""; int q1Count = examSendStudent.StudentAnswerList.Count(q => q.QType == 1); int q2Count = examSendStudent.StudentAnswerList.Count(q => q.QType == 2); int q3Count = examSendStudent.StudentAnswerList.Count(q => q.QType == 3); int q4Count = examSendStudent.StudentAnswerList.Count(q => q.QType == 4); int q5Count = examSendStudent.StudentAnswerList.Count(q => q.QType == 5); int q6Count = examSendStudent.StudentAnswerList.Count(q => q.QType == 6); questionTypeHtml += q1Count > 0 ? "<span>问答题 ( " + q1Count + " )</span>" : ""; questionTypeHtml += q2Count > 0 ? "<span>单选题 ( " + q2Count + " )</span>" : ""; questionTypeHtml += q3Count > 0 ? "<span>多选题 ( " + q3Count + " )</span>" : ""; questionTypeHtml += q4Count > 0 ? "<span>判断题 ( " + q4Count + " )</span>" : ""; questionTypeHtml += q5Count > 0 ? "<span>填空题 ( " + q5Count + " )</span>" : ""; questionTypeHtml += q6Count > 0 ? "<span>多媒体题 ( " + q6Count + " )</span>" : ""; string answerCaseHtml = ""; answerCaseHtml += "<span>答错: " + examSendStudent.StudentAnswerList.Count(p => p.GetScore == 0 && p.Answer != "") + "</span>"; answerCaseHtml += "<span>未答: " + examSendStudent.StudentAnswerList.Count(p => p.Answer == "") + "</span>"; answerCaseHtml += "<span>正确: " + examSendStudent.StudentAnswerList.Count(p => p.GetScore > 0) + "</span>"; int totalScore = 0; foreach (ReStudentExamAnswer item in examSendStudent.StudentAnswerList) { //根据Qid 查Question表 tbQuestion question = _questionBL.GetSingleByID(item.Qid); string multi_mediaHtml = ""; if (question.QuestionType == 6) { string name = question.FileUpload[0].FileName; switch (question.FileUpload[0].FileType) { case 0: { multi_mediaHtml = " <table class='all80 cen'>" + "<tr>" + "<td class='all20' align='center' valign='middle'>" + " <a id='k-prev' style='position:relative;' onclick='turnToNext(this,\"left\");' ></a>" + "</td>" + "<td id='imageCollection' align='center' style='height: 300px;'>" + "<input type='hidden' value='1' />"; for (int i = 0; i < question.FileUpload.Count; i++) { multi_mediaHtml += "<img src='../../ClientBin/UploadFile/" + question.FileUpload[i].FileName + "' style='width:250px; height:250px; " + (i == 0 ? " display:block; " : " display:none; ") + "' />"; } multi_mediaHtml += " </td>" + "<td class='all20' align='center' valign='middle'>" + "<a id='k-next' style='position:relative;' onclick='turnToNext(this,\"right\");' ></a>" + "</td>" + "</tr>" + "</table>"; } break; case 1: { multi_mediaHtml += @"<embed class='mLeft_2' src='../../Scripts/mp3player/player.swf?url=../../ClientBin/UploadFile/" + name + "&autoplay=0;autostart=0' type='application/x-shockwave-flash' wmode='transparent' allowscriptaccess='always' height='25' width='400'></embed>"; } break; case 2: { var id = name.Substring(0, name.Length - 4); multi_mediaHtml += @"<input name='FlvName' value='" + name + @"' type='hidden' /><div class='mLeft_2'><div id='" + id + "'></div></div>"; } break; } } ReStudentExamAnswer reStuExamAnswer = examSendStudent.StudentAnswerList.Where(a => a.Qid == item.Qid).FirstOrDefault(); string qUserAnswerHtml = ""; string qRightAnswerHtml = ""; switch (item.QType) { case 1: qUserAnswerHtml = "<p><textarea class='Boxarea all60' disabled='disabled'>" + item.Answer + "</textarea></p>"; qRightAnswerHtml = question.QuestionAnswer[0].Answer; break; case 2: case 3: foreach (QuestionAnswer itemQueAnswer in question.QuestionAnswer.OrderBy(q => q.Order)) { qRightAnswerHtml += itemQueAnswer.AnswerFlag == 1 ? (qRightAnswerHtml == "" ? ((char)(itemQueAnswer.Order + 64)).ToString() : (". " + ((char)(itemQueAnswer.Order + 64)))) : ""; qUserAnswerHtml += " <p><input disabled='disabled' type='" + (item.QType == 2 ? "radio" : "checkbox") + "'" + (("," + item.Answer + ",").IndexOf("," + itemQueAnswer.Order + ",") >= 0 ? "checked='checked'" : "") + "name='answer_" + question._id + "' />" + ((char)(itemQueAnswer.Order + 64)) + ". " + itemQueAnswer.Answer + "</p>"; } break; case 4: qRightAnswerHtml = question.QuestionAnswer[0].Answer == "0" ? "A. 正确" : "B. 错误"; // 判断题 qUserAnswerHtml = "<p><input disabled='disabled' type='radio' name='answer_" + question._id + "'" + (item.Answer == "0" ? "checked='checked'" : "") + "/>A. 正确</p> <p><input disabled='disabled' type='radio' name='answer_" + question._id + "'" + (item.Answer == "1" ? "checked='checked'" : "") + " />B. 错误</p>"; break; case 5: qRightAnswerHtml = question.QuestionAnswer[0].Answer.Replace("!!%%!!", " "); // 填空题 qUserAnswerHtml = " <p>学员答案:" + (item.Answer.Replace("##**##", " ")) + "</p>"; break; case 6: int type = question.QuestionAnswer[0].AnswerType; if (type == 0) { qRightAnswerHtml = question.QuestionAnswer[0].Answer; // 问答题 qUserAnswerHtml = "<p><textarea class='Boxarea all60' disabled='disabled'>" + (item.Answer) + "</textarea></p>"; } else { //单选题 foreach (QuestionAnswer an in question.QuestionAnswer.OrderBy(p => p.Order)) { qRightAnswerHtml += an.AnswerFlag == 1 ? (qRightAnswerHtml == "" ? ((char)(an.Order + 64)).ToString() : (". " + ((char)(an.Order + 64)))) : ""; qUserAnswerHtml += " <p><input disabled='disabled' type='" + (type == 1 ? "radio" : "checkbox") + "'" + (("," + item.Answer + ",").IndexOf("," + an.Order + ",") >= 0 ? "checked=checked" : "") + " name='answer_" + question._id + "' />" + ((char)(an.Order + 64)) + ". " + (an.Answer) + "</p>"; } } break; default: break; } var temp = new { item.Qid, QOrder = item.Order, QuestionContent = "<h5>" + question.QuestionContent + "</h5><div class='db'>" + multi_mediaHtml + "</div>", UserAnswer = qUserAnswerHtml, QuestionAnswer = qRightAnswerHtml, UserGetScore = reStuExamAnswer.GetScore, QuestionScore = item.Score }; totalScore += reStuExamAnswer.GetScore; itemArray[n] = temp; n++; } return (Json( new { result = 1, dataList = itemArray.ToList(), questionTypeHtml, answerCaseHtml, examTitle = exam.ExamTitle, totalScore }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 获取考试的基本信息 /// </summary> /// <param name="examUserID">考试关联学员ID</param> /// <param name="leavePageTimes">允许离开页面的次数,当考试为课程的时,需要传</param> /// <returns></returns> public ExamBaseInforShow GetExamBaseInforShow(int examUserID, int leavePageTimes = 0) { var examBaseInfor = new ExamBaseInforShow(); var examuser = Etdb.GetSingleById <tbExamSendStudent>(examUserID); //考生考试信息 if (examuser.SourceType == 0) { var exam = Etdb.GetSingleById <tbExamination>(examuser.RelationID); examBaseInfor.ExamEndTime = exam.ExamEndTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm"); examBaseInfor.PublishedFlag = exam.PublishedFlag; examBaseInfor.ExamLength = exam.ExamLength; examBaseInfor.ExamRules = exam.ExamRules; int remainingtime = (int)(exam.ExamEndTime.ToLocalTime() - DateTime.Now).TotalSeconds; if (remainingtime > examuser.RemainingTime) { remainingtime = examuser.RemainingTime; } examBaseInfor.UserRemainingTime = remainingtime > 0 ? remainingtime : 0;//用户剩余时间 examBaseInfor.ExamRuleList = exam.ExamRules.Split(new string[] { "\n" }, StringSplitOptions.None); examBaseInfor.ExamShowWay = exam.ShowType; examBaseInfor.AllowLeavePageTimes = exam.LeavePageTimes; examBaseInfor.UserLeavePageTimes = examuser.LeavePageTimes; examBaseInfor.ExamStartTime = exam.ExamBeginTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm"); examBaseInfor.ExamTitle = exam.ExaminationTitle; //examBaseInfor.PassScore = exam.PercentFlag == 0 ? Convert.ToInt32(exam.PassScore) : Convert.ToInt32(exam.PassScore * examBaseInfor.ExamScore / 100); var paper = Etdb.GetSingleById <tbExampaperRedundancy>(exam.PaperID); examBaseInfor.ExamScore = exam.PercentFlag == 0 ? 100 : paper.ExampaperScore; examBaseInfor.PassScore = Convert.ToInt32(exam.PassScore * examBaseInfor.ExamScore * 0.01); examBaseInfor.PercentScore = exam.PercentFlag; examBaseInfor.ResultFlag = exam.AlreadySendScore; examBaseInfor.StartCheating = exam.StartCheating; examBaseInfor.PublishedFlag = exam.PublishedFlag; examBaseInfor.TestTimes = exam.TestTimes; } else if (examuser.SourceType == 1) { var len = _dataAccess.GetList <LenLearningRecord>(" Len_LearningRecord.RecordId = " + examuser.RelationID).FirstOrDefault(); var sqlwhere = "Res_CourseToExam.CourseId=" + len.CourseId + " and Res_CourseToExam.ExampaperId = " + examuser.ExamPaperID; var courseExam = _dataAccess.GetList <ResCourseToExam>(sqlwhere).FirstOrDefault(); var paper = Etdb.GetSingleById <tbExampaperRedundancy>(examuser.ExamPaperID); examBaseInfor.ExamScore = paper.QuestionList.Sum(p => p.QScore); examBaseInfor.ExamLength = courseExam.TimeLength; //examBaseInfor.ExamScore = coursepaper.TotalScore; examBaseInfor.ExamStartTime = "2000-01-01"; examBaseInfor.ExamEndTime = "2099-12-31"; examBaseInfor.UserRemainingTime = examuser.RemainingTime;//用户剩余时间 //var exam = Etdb.GetSingleByID<tbExamination>(examuser.RelationID); //examBaseInfor.PassScore = courseExam.PassScore;//考试通过分数线 examBaseInfor.ExamScore = paper.ExampaperScore; examBaseInfor.PassScore = Convert.ToInt32(courseExam.PassScore * examBaseInfor.ExamScore * 0.01); examBaseInfor.AllowLeavePageTimes = leavePageTimes; examBaseInfor.UserLeavePageTimes = examuser.LeavePageTimes; examBaseInfor.ExamTitle = paper.ExampaperTitle; examBaseInfor.StartCheating = 0; examBaseInfor.TestTimes = courseExam.AllowTimes; examBaseInfor.PublishedFlag = 1; } else if (examuser.SourceType == 2) { var promotionStageLenRecord = _dataAccess.Get <Models.Ab.AbPromotionStageLenRecord>(examuser.RelationID); var promotionStage = _dataAccess.Get <Models.Ab.PromotionStage>(promotionStageLenRecord.StageId); var paper = Etdb.GetSingleById <tbExampaperRedundancy>(promotionStage.ExamId); examBaseInfor.ExamScore = paper.QuestionList.Sum(p => p.QScore); examBaseInfor.ExamLength = 120; examBaseInfor.ExamStartTime = "2000-01-01"; examBaseInfor.ExamEndTime = "2099-12-31"; examBaseInfor.UserRemainingTime = examuser.RemainingTime;//用户剩余时间 examBaseInfor.ExamScore = paper.ExampaperScore; examBaseInfor.PassScore = Convert.ToInt32(promotionStage.PassScore * examBaseInfor.ExamScore * 0.01); examBaseInfor.AllowLeavePageTimes = leavePageTimes; examBaseInfor.UserLeavePageTimes = examuser.LeavePageTimes; examBaseInfor.ExamTitle = paper.ExampaperTitle; examBaseInfor.StartCheating = 0; examBaseInfor.TestTimes = 100; examBaseInfor.PublishedFlag = 1; } else if (examuser.SourceType == 3) { var trainDetail = _dataAccess.Get <Tr_TrainClassToExam>(examuser.RelationID); var exam = Etdb.GetSingleById <tbExamination>(trainDetail.ExamID); var paper = Etdb.GetSingleById <tbExampaperRedundancy>(exam.PaperID); examBaseInfor.ExamScore = paper.QuestionList.Sum(p => p.QScore); examBaseInfor.ExamLength = trainDetail.ExamLength; examBaseInfor.ExamStartTime = trainDetail.StartTimeStr; examBaseInfor.ExamEndTime = trainDetail.EndTimeStr; examBaseInfor.UserRemainingTime = examuser.RemainingTime;//用户剩余时间 examBaseInfor.ExamScore = paper.ExampaperScore; examBaseInfor.PassScore = Convert.ToInt32(60 * examBaseInfor.ExamScore * 0.01); examBaseInfor.AllowLeavePageTimes = leavePageTimes; examBaseInfor.UserLeavePageTimes = examuser.LeavePageTimes; examBaseInfor.ExamTitle = paper.ExampaperTitle; examBaseInfor.StartCheating = 0; examBaseInfor.TestTimes = 100; examBaseInfor.PublishedFlag = 1; } return(examBaseInfor); }