Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
        /// <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 + "&amp;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));
        }
Exemple #5
0
        /// <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);
        }