public JsonResult SubmitPublishExam(int Id) { int result = 0; string content = ""; tbExamination exam = _examinationBL.GetExamination(Id); if (exam != null) { int flag = JudgeCanPublishExam(Id, string.Join(",", exam.ApprovalUser)); if (flag == 0) { if (exam.ExamEndTime.ToLocalTime() > DateTime.Now) { exam.PublishedFlag = 1; result = _examinationBL.ModifyExamination(exam) ? 1 : 0; content = "发布成功!"; } else { content = "对不起,该考试时间已经结束,不能发布!"; } } else { result = 3; content = flag == 1 ? "发布失败!<br/> 原因:该考试的所授权的考生无效!" : "发布失败!<br/> 原因:该考试所添加的批阅人无效!"; } } return(Json(new { result, content }, JsonRequestBehavior.DenyGet)); }
/// <summary> /// 获取考试中试卷与学员答题情况的基本信息 /// </summary> /// <param name="examUserID">考试关联学员ID</param> /// <returns></returns> public ExampaperShow GetExampaperBaseInforShow(int examUserID) { var exampaper = new ExampaperShow(); var examuser = Etdb.GetSingleById <tbExamSendStudent>(examUserID); //考生考试信息 var exam = Etdb.GetSingleById <tbExampaperRedundancy>(examuser.ExamPaperID); //试卷信息 var examination = new tbExamination(); if (examuser.SourceType == 0) { examination = Etdb.GetSingleById <tbExamination>(examuser.RelationID); } exampaper.TotalScore = exam.ExampaperScore; exampaper.ExampaperType = exam.ExamType; exampaper.QuestionTypeStrShow = exam.QuestionTypeOrder.GetQuestionTypeStr(); //获取试题 GetExampaper(exampaper, exam, examuser, examination); //初始化学员答案 exampaper.QuestionList.ForEach(p => exampaper.StudentAnswer.Add(new StudentAnswer { Answer = p.UserAnswer, Qid = p.QuestionID, QType = p.QType, UserScore = p.UserAnswerScore })); return(exampaper); }
/// <summary> /// 新增或修改考试 /// </summary> /// <param name="Id"></param> /// <returns></returns> public ActionResult EditExamination(int?Id) { var exam = new tbExamination(); if (Id.HasValue) { exam = _examinationBL.GetExamination(Id.Value); if (exam != null) { exam.ExamBeginTime = exam.ExamBeginTime.ToLocalTime(); exam.ExamEndTime = exam.ExamEndTime.ToLocalTime(); exam.LastUpdateTime = exam.LastUpdateTime.ToLocalTime(); } } string ApprovalUserIds = exam.ApprovalUser == null ? "" : exam.ApprovalUser.Aggregate("", (current, id) => current + (id + ",")); if (!string.IsNullOrEmpty(ApprovalUserIds)) { ApprovalUserIds = ApprovalUserIds.Remove(ApprovalUserIds.Length - 1); } if (exam != null) { tbExampaper paper = _exampaperBL.GetExampaper(exam.PaperID); if (paper != null) { ViewBag.PaperName = paper.ExampaperTitle; } } ViewBag.ApprovalUserIds = ApprovalUserIds; return(View(exam)); }
/// <summary> /// 考试详细 /// </summary> /// <param name="Id"></param> /// <returns></returns> public ActionResult ExaminationDetail(int Id) { tbExamination exam = _examinationBL.GetExamination(Id); if (exam != null) { exam.ExamBeginTime = exam.ExamBeginTime.ToLocalTime(); exam.ExamEndTime = exam.ExamEndTime.ToLocalTime(); exam.LastUpdateTime = exam.LastUpdateTime.ToLocalTime(); string ApprovalUserIds = exam.ApprovalUser == null ? "" : exam.ApprovalUser.Aggregate("", (current, id) => current + (id + ",")); if (!string.IsNullOrEmpty(ApprovalUserIds)) { ApprovalUserIds = ApprovalUserIds.Remove(ApprovalUserIds.Length - 1); } tbExampaper paper = _exampaperBL.GetExampaper(exam.PaperID); if (paper != null) { ViewBag.PaperName = paper.ExampaperTitle; } ViewData["personids"] = string.Join(",", _examinationBL.GettbExamSendAllStudent(Id) .Select(p => p.UserID) .Distinct()); ViewBag.ApprovalUserIds = ApprovalUserIds; } else { exam = new tbExamination(); ViewBag.Msg = "对不起,该考试不存在或已被删除!"; } return(View(exam)); }
public JsonResult PublishExamResult(int Id) { int result = 0; string content = ""; tbExamination exam = _examinationBL.GetExamination(Id); if (exam != null) { if (exam.PublishedFlag == 1) { exam.PublishResult = 1; result = _examinationBL.ModifyExamination(exam) ? 1 : 0; content = "发布成绩成功!!"; } else { content = "对不起,该考试尚未对学员发布,不能发布成绩!"; } } else { content = "该考试已在其他地方被删除!"; } return(Json(new { result, content }, JsonRequestBehavior.DenyGet)); }
/// <summary> /// 所有的考试 /// </summary> /// <param name="classId"></param> /// <returns></returns> public List <Tr_TrainClassToExam> GetClassExamShow(int classId) { var examList = _dataAccess.GetList <Tr_TrainClassToExam>(" Tr_TrainClassToExam.IsDelete=0 and ClassId=" + classId); if (examList.Any()) { var dbExamList = _examinationDb.GetAllExamination(examList.Select(p => p.ExamID)); var dbPaperList = _exampaperDb.GetExampaperRedundancyList(); foreach (var exam in examList) { if (exam.ExamID > 0) { tbExamination model = dbExamList.FirstOrDefault(p => p._id == exam.ExamID); tbExampaperRedundancy paper = dbPaperList.FirstOrDefault(p => p.ExampaperId == model.PaperID); exam.PaperID = paper != null ? paper._id : 0; exam.Papername = paper != null ? paper.ExampaperTitle : "--"; exam.TestTimes = model.TestTimes; exam.RadomOrderFlag = model.RadomOrderFlag; exam.PassScore = model.PassScore; } } } return(examList); }
public JsonResult GetExaminationById(int Id) { ClassExamShow exammodel = new ClassExamShow(); tbExamination exam = _examinationBL.GetExamination(Id); if (exam != null) { exam.ExamBeginTime = exam.ExamBeginTime.ToLocalTime(); exam.ExamEndTime = exam.ExamEndTime.ToLocalTime(); exam.LastUpdateTime = exam.LastUpdateTime.ToLocalTime(); } string ApprovalUserIds = exam.ApprovalUser == null ? "" : exam.ApprovalUser.GetString(defaultValue: ""); tbExampaperRedundancy paper = _exampaperBL.GetExampaperRedundancy(exam.PaperID); exammodel.ExamID = exam != null ? exam._id : 0; exammodel.PaperID = paper != null ? paper.ExampaperId : 0; exammodel.PaperName = paper != null ? paper.ExampaperTitle : ""; exammodel.ExaminationTitle = exam.ExaminationTitle; exammodel.ExamBeginTime = exam.ExamBeginTime.ToString("yyyy-MM-dd"); exammodel.ExamEndTime = exam.ExamEndTime.ToString("yyyy-MM-dd"); exammodel.ExamLength = exam.ExamLength; exammodel.TestTimes = exam.TestTimes; exammodel.RadomOrderFlag = exam.RadomOrderFlag; exammodel.PassScore = exam.PassScore; exammodel.ApprovalUserIds = ApprovalUserIds; return(Json(new { result = exammodel }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 获取考试的基本信息 /// </summary> /// <param name="examUserID">考试人员ID</param> /// <param name="type">0:独立的考试</param> /// <returns></returns> public ExampaperShow GetExampaperBaseInforShow(int examUserID, int type = 0) { var exampaper = new ExampaperShow(); //new 试卷对象 var examuser = Etdb.GetSingleByID <tbExamSendStudent>(examUserID); //单个考生考试信息 //var exam = new tbExampaper(); tbExampaper exam = null; //var examination = new tbExamination(); //考试分类对象 tbExamination examination = null; exam = Etdb.GetSingleByID <tbExampaper>(examuser.ExamPaperID); //试卷对象 if (type == 0) { examination = Etdb.GetSingleByID <tbExamination>(examuser.RelationID); } exampaper.ExampaperType = exam.ExamType; exampaper.QuestionTypeStrShow = exam.QuestionTypeOrder.GetQuestionTypeStr(); //获取试题 if (examination != null) { GetExampaper(exampaper, exam, examuser, examination); } else { GetExampaper(exampaper, exam, examuser); } //初始化学员答案 exampaper.QuestionList.ForEach(p => exampaper.StudentAnswer.Add(new StudentAnswer { Answer = p.UserAnswer, Qid = p.QuestionID, QType = p.QType })); return(exampaper); }
/// <summary> /// 添加培训班考试 /// </summary> /// <returns></returns> public ActionResult AddClassExam(int classId) { var classmodel = _classManager.GetTrTrainClassById(classId); List <Tr_TrainClassToExam> examList = _classManager.GetTrainClassToExams(classId); if (!examList.Any()) { examList = new List <Tr_TrainClassToExam>(); } else { foreach (var exam in examList) { if (exam.ExamID > 0) { tbExamination model = _examinationBL.GetExamination(exam.ExamID); tbExampaper paper = _exampaperBL.GetExampaper(model.PaperID); exam.PaperID = model.PaperID; exam.Papername = paper != null ? paper.ExampaperTitle : ""; exam.TestTimes = model.TestTimes; exam.RadomOrderFlag = model.RadomOrderFlag; exam.PassScore = model.PassScore; exam.ApprovalUserIds = model.ApprovalUser == null ? "" : model.ApprovalUser.GetString(defaultValue: ""); } } } ViewBag.classId = classId; ViewBag.weightType = classmodel.WeightType; return(View(examList)); }
public JsonResult DeleteExam(int Id) { int result = 0; string content = ""; tbExamination exam = _examinationBL.GetExamination(Id); if (exam != null) { if (exam.PublishedFlag == 0) { exam.Status = 1; result = _examinationBL.ModifyExamination(exam) ? 1 : 0; content = "删除成功!"; } else { content = "对不起,该考试已经发布,不能删除!"; } } else { content = "该考试已在其他地方被删除!"; } return(Json(new { result, content }, JsonRequestBehavior.DenyGet)); }
/// <summary> /// 判断是否可以进入考试 /// </summary> /// <param name="euID">考试人员ID</param> /// <param name="type">0:列表进入;1:真正进入</param> /// <returns>为0时,如果可以进入,则直接返回考试信息</returns> public JsonResult IsCanExamTest(int euId, int type = 0) { int leavePageTimes = 0; tbExamSendStudent eu = _examTestManager.GetExamUser(euId); if (eu.RemainingTime == 0) { return(Json(new { result = 0, msg = "您的考试时间已用完,不可进入!" }, JsonRequestBehavior.AllowGet)); } int examTestTimes = 0; //当SourceType不等于0的时候 表示是课程下的考试 if (eu.SourceType == 0) { tbExamination exam = _examinationManager.GetExamination(eu.RelationID); examTestTimes = exam.TestTimes; if (exam.LeavePageTimes < eu.LeavePageTimes) { return(Json(new { result = 0, msg = "您离开页面的总次数已用完,不可进入!" }, JsonRequestBehavior.AllowGet)); } if (eu.TestTimes >= exam.TestTimes) { return(Json(new { result = 0, msg = "进入次数已达到上限,不可进入!" }, JsonRequestBehavior.AllowGet)); } if (exam.ExamEndTime.ToLocalTime() <= DateTime.Now) { return(Json(new { result = 0, msg = "本场考试已经结束,不可进入!" }, JsonRequestBehavior.AllowGet)); } } else if (eu.SourceType == 1) { } //if (type == 1) //{ eu.TestTimes += 1; _examTestManager.SaveExamUser(eu); return(Json(new { result = 1, msg = "开始考试!" }, JsonRequestBehavior.AllowGet)); //} //var exambase = _examTestManager.GetExamBaseInforShow(euId, leavePageTimes); //return Json(new //{ // result = 1, // msg = "参与考试!", // data = new // { // exambase.ExamRuleList, // exambase.ExamEndTime, // exambase.ExamStartTime, // exambase.ExamLength, // exambase.ExamTitle, // exambase.UserRemainingTime // }, // testTimes = eu.TestTimes > 1000 ? 0 : examTestTimes - eu.TestTimes, // examTestTimes = examTestTimes //}, JsonRequestBehavior.AllowGet); }
/// <summary> /// 获取考试中试卷与学员答题情况的基本信息 /// </summary> /// <param name="examUserIDs">考试关联学员ID</param> /// <returns></returns> public List <ExampaperShow> GetExampaperBaseInforShow(IEnumerable <int> examUserIDs) { var list = new List <ExampaperShow>(); 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 exampaper = new ExampaperShow(); var examuser = examuserList.Find(p => p._id == examUserID); var exam = exampaperList.Find(p => p._id == examuser.ExamPaperID); var examination = new tbExamination(); if (examuser.SourceType == 0) { examination = examList.Find(p => p._id == examuser.RelationID); } exampaper.ExampaperType = exam.ExamType; exampaper.ExampaperID = exam._id; exampaper.QuestionTypeStrShow = exam.QuestionTypeOrder.GetQuestionTypeStr(); //获取试题 GetExampaper(exampaper, exam, examuser, examination); //初始化学员答案 exampaper.QuestionList.ForEach(p => exampaper.StudentAnswer.Add(new StudentAnswer { Answer = p.UserAnswer, Qid = p.QuestionID, QType = p.QType, UserScore = p.UserAnswerScore })); list.Add(exampaper); } return(list); }
/// <summary> /// 判断是否可以进入考试 /// </summary> /// <param name="euID">考试人员ID</param> /// <param name="flag">0:列表进入;1:真正进入</param> /// <returns></returns> public JsonResult JudgeCanExamTest(int euID, int flag) { tbExamSendStudent eu = ExamTestBL.GetExamUser(euID); //当SourceType不等于0的时候 表示是课程下的考试 //if (eu.SourceType == 0) //{ if (eu.SourceType == 0) { tbExamination exam = ExaminationBL.GetExamination(eu.RelationID); if (eu.TestTimes >= exam.TestTimes) { return(Json(new { result = 0, message = "进入次数已达到上限!" }, JsonRequestBehavior.AllowGet)); } if (exam.ExamEndTime.ToLocalTime() <= DateTime.Now) { return(Json(new { result = 0, message = "本场考试已经结束,不可进入!" }, JsonRequestBehavior.AllowGet)); } eu.TestTimes += 1; if (flag == 1) { ExamTestBL.SaveExamUser(eu); } } //} else { var coursepaper = ICoCoursePaperBL.GetCo_CourseMainPaper(eu.RelationID); if (eu.TestTimes >= coursepaper.TestTimes) { return(Json(new { result = 0, message = "进入次数已达到上限!" }, JsonRequestBehavior.AllowGet)); } eu.TestTimes += 1; if (flag == 1) { ExamTestBL.SaveExamUser(eu); } //ICoCoursePaperBL.UpdateTestTimes(eu.RelationID); } return(Json(new { result = 1 }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 培训班课程 /// </summary> /// <returns></returns> public ActionResult AddClassCourse(int classId) { var classmodel = _classManager.GetTrTrainClassById(classId); List <Tr_TrainClassToCourse> courseList = _classManager.GetTrainClassToCourses(classId); if (courseList.Count > 0) { foreach (var course in courseList) { course.resourceLsit = _classManager.GetTrainClassToCourseResources(course.ID); course.contentLsit = _classManager.GetTrainClassToCourseContents(course.ID); course.checkLsit = _classManager.GetTrainClassToCourseChecks(course.ID); if (!course.resourceLsit.Any()) { course.resourceLsit = new List <Tr_TrainClassToCourseResource>(); } if (!course.contentLsit.Any()) { course.contentLsit = new List <Tr_TrainClassToCouseContent>(); } if (!course.checkLsit.Any()) { course.checkLsit = new List <Tr_TrainClassToCouseCheck>(); } } } else { courseList = new List <Tr_TrainClassToCourse>(); } ViewBag.classId = classId; ViewBag.weightType = classmodel.WeightType; ViewBag.CourseModel = courseList; //return View(courseList); /* * * return View(examList); */ List <Tr_TrainClassToExam> examList = _classManager.GetTrainClassToExams(classId); if (!examList.Any()) { examList = new List <Tr_TrainClassToExam>(); } else { foreach (var exam in examList) { if (exam.ExamID > 0) { tbExamination model = _examinationBL.GetExamination(exam.ExamID); tbExampaper paper = _exampaperBL.GetExampaper(model.PaperID); exam.PaperID = model.PaperID; exam.Papername = paper != null ? paper.ExampaperTitle : ""; exam.TestTimes = model.TestTimes; exam.RadomOrderFlag = model.RadomOrderFlag; exam.PassScore = model.PassScore; exam.ApprovalUserIds = model.ApprovalUser == null ? "" : model.ApprovalUser.GetString(defaultValue: ""); } } } ViewBag.ExamModel = examList; List <Tr_TrainClassToPractical> practList = _classManager.GetTrainClassToPracticals(classId); if (!practList.Any()) { practList = new List <Tr_TrainClassToPractical>(); } //return View(practList); ViewBag.PractModel = practList; return(View()); }
public JsonResult SaveClassExam(string data, int classId) { try { var dataList = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Tr_TrainClassToExam> >(data); if (dataList.Any()) { _classManager.BatchDeleteTrainClassToExam(classId); foreach (var exam in dataList) { var timespan = (int)(exam.EndTime - exam.StartTime).TotalMinutes; if (timespan < exam.ExamLength) { return(Json(new { result = 3, content = LanguageResources.Exam.Examination.String3 }, JsonRequestBehavior.DenyGet)); } if (exam.ExamType == 1) { exam.ExamID = 0; } if (exam.ExamType == 0) { tbExamination exammodel = new tbExamination(); exammodel.PaperID = exam.PaperID; exammodel.ScoreOpenFlag = 0; exammodel.ApprovalUser = exam.ApprovalUser; exammodel.ExamBeginTime = exam.StartTime; exammodel.ExamEndTime = exam.EndTime; exammodel.ExaminationTitle = exam.ExamTitle; exammodel.ExamLength = exam.ExamLength; exammodel.PassScore = exam.PassScore; exammodel.PercentFlag = 0; exammodel.PublishedFlag = 0; exammodel.RadomOrderFlag = exam.RadomOrderFlag; exammodel.ShowType = 0; exammodel.TestTimes = exam.TestTimes; exammodel.ExamRules = ""; exammodel.StartCheating = 1; exammodel.LeavePageTimes = int.MaxValue; exammodel.AutoMarking = 1; exammodel.LastUpdateTime = DateTime.Now; exammodel.CreateTime = DateTime.Now; exammodel.UserID = CurrentUser.UserId; exammodel.TenantId = CurrentTenant.TenantId; exammodel.UserCount = 0; if (string.IsNullOrEmpty(exam.ApprovalUserIds)) { exammodel.ApprovalUser = new List <int>(); } else { exammodel.ApprovalUser = exam.ApprovalUserIds.Split(',') .Distinct() .Where(p => !string.IsNullOrEmpty(p)) .Select(int.Parse) .ToList(); } if (exam.ExamID == 0) { _examinationBL.AddExamination(exammodel); } else { exammodel._id = exam.ExamID; _examinationBL.ModifyExamination(exammodel); } exam.ExamID = exammodel._id; } _classManager.AddTrainClassToExam(exam); } } return(Json(new { result = 1, content = "保存成功" }, JsonRequestBehavior.AllowGet)); } catch { return(Json(new { result = 0, content = "保存失败" }, JsonRequestBehavior.AllowGet)); } }
/// <summary> /// 课程、考试、实践考评一起保存 /// </summary> /// <returns></returns> public JsonResult SaveCourseExamPract(int classId, string courseData, string examData, string practData) { try { using (TransactionScope tran = new TransactionScope()) { #region == 保存课程信息 == var dataList = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Tr_TrainClassToCourse> >(courseData); var addList = new List <int>(); if (dataList.Any()) { _classManager.BatchDeleteCourse(classId); foreach (var course in dataList) { course.Code = "wxdewco" + DateTime.Now.ToString("yyyyMMddHHmmss"); if (course.CourseType == 1) { course.CourseId = 0; course.PlanType = 1; } course.CreateUserID = CurrentUser.UserId; course.CreateTime = DateTime.Now; course.OrderTime = DateTime.Now; _classManager.AddTrainClassToCourse(course); var contents = new List <Tr_TrainClassToCouseContent>(); var checks = new List <Tr_TrainClassToCouseCheck>(); var resource = new List <Tr_TrainClassToCourseResource>(); if (course.IsSend == 1) { addList.Add(course.ID); } foreach (var content in course.contentLsit) { content.CourseId = course.ID; contents.Add(content); } foreach (var check in course.checkLsit) { check.CourseId = course.ID; checks.Add(check); } foreach (var res in course.resourceLsit) { res.ClassCourseId = course.ID; resource.Add(res); } _classManager.BatchDeleteCourseResource(course.ID); _classManager.AddTrainClassToCourseResourceS(resource); _classManager.AddTrainClassToCourseContentS(contents); _classManager.AddTrainClassToCourseCheckS(checks); } } #endregion #region == 保存考试信息 == var examDataList = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Tr_TrainClassToExam> >(examData); if (examDataList.Any()) { _classManager.BatchDeleteTrainClassToExam(classId); foreach (var exam in examDataList) { var timespan = (int)(exam.EndTime - exam.StartTime).TotalMinutes; if (timespan < exam.ExamLength) { return(Json(new { result = 3, content = LanguageResources.Exam.Examination.String3 }, JsonRequestBehavior.DenyGet)); } if (exam.ExamType == 1) { exam.ExamID = 0; } if (exam.ExamType == 0) { tbExamination exammodel = new tbExamination(); exammodel.PaperID = exam.PaperID; exammodel.ScoreOpenFlag = 0; exammodel.ApprovalUser = exam.ApprovalUser; exammodel.ExamBeginTime = exam.StartTime; exammodel.ExamEndTime = exam.EndTime; exammodel.ExaminationTitle = exam.ExamTitle; exammodel.ExamLength = exam.ExamLength; exammodel.PassScore = exam.PassScore; exammodel.PercentFlag = 0; exammodel.PublishedFlag = 0; exammodel.RadomOrderFlag = exam.RadomOrderFlag; exammodel.ShowType = 0; exammodel.TestTimes = exam.TestTimes; exammodel.ExamRules = ""; exammodel.StartCheating = 1; exammodel.LeavePageTimes = int.MaxValue; exammodel.AutoMarking = 1; exammodel.LastUpdateTime = DateTime.Now; exammodel.CreateTime = DateTime.Now; exammodel.UserID = CurrentUser.UserId; exammodel.TenantId = CurrentTenant.TenantId; exammodel.UserCount = 0; if (string.IsNullOrEmpty(exam.ApprovalUserIds)) { exammodel.ApprovalUser = new List <int>(); } else { exammodel.ApprovalUser = exam.ApprovalUserIds.Split(',') .Distinct() .Where(p => !string.IsNullOrEmpty(p)) .Select(int.Parse) .ToList(); } if (exam.ExamID == 0) { _examinationBL.AddExamination(exammodel); } else { exammodel._id = exam.ExamID; _examinationBL.ModifyExamination(exammodel); } exam.ExamID = exammodel._id; } _classManager.AddTrainClassToExam(exam); } } #endregion #region == 保存实践考评信息 == var practDataList = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Tr_TrainClassToPractical> >(practData); if (practDataList.Any()) { _classManager.BatchDeleteTrainClassToPractical(classId); _classManager.AddTrainClassToPracticalS(practDataList); } #endregion tran.Complete(); } return(Json(new { result = 1, content = "保存成功" }, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { return(Json(new { result = 0, content = "保存失败," + ex.Message }, JsonRequestBehavior.AllowGet)); } }
public ActionResult ClassView(int classId) { Tr_TrainClass model = _classManager.GetTrTrainClassById(classId); //课程 List <Tr_TrainClassToCourse> courseList = _classManager.GetTrainClassToCourses(classId); if (courseList.Count > 0) { foreach (var course in courseList) { course.resourceLsit = _classManager.GetTrainClassToCourseResources(course.ID); course.contentLsit = _classManager.GetTrainClassToCourseContents(course.ID); course.checkLsit = _classManager.GetTrainClassToCourseChecks(course.ID); if (!course.resourceLsit.Any()) { course.resourceLsit = new List <Tr_TrainClassToCourseResource>(); } if (!course.contentLsit.Any()) { course.contentLsit = new List <Tr_TrainClassToCouseContent>(); } if (!course.checkLsit.Any()) { course.checkLsit = new List <Tr_TrainClassToCouseCheck>(); } } } else { courseList = new List <Tr_TrainClassToCourse>(); } //考试 List <Tr_TrainClassToExam> examList = _classManager.GetTrainClassToExams(classId); if (!examList.Any()) { examList = new List <Tr_TrainClassToExam>(); } else { foreach (var exam in examList) { if (exam.ExamID > 0) { tbExamination emodel = _examinationBL.GetExamination(exam.ExamID); tbExampaper paper = _exampaperBL.GetExampaper(emodel.PaperID); exam.PaperID = emodel.PaperID; exam.Papername = paper != null ? paper.ExampaperTitle : ""; exam.TestTimes = emodel.TestTimes; exam.RadomOrderFlag = emodel.RadomOrderFlag; exam.PassScore = emodel.PassScore; exam.ApprovalUserIds = emodel.ApprovalUser == null ? "" : emodel.ApprovalUser.GetString(defaultValue: ""); } } } //考评 List <Tr_TrainClassToPractical> practList = _classManager.GetTrainClassToPracticals(classId); if (!practList.Any()) { practList = new List <Tr_TrainClassToPractical>(); } var maxbatch = _planManager.GetMaxBatch(classId, 1); var approvelist = _planManager.GeTrPlanApproveList(classId, 1, maxbatch).OrderBy(p => p.Step); var newApprovelist = new List <Tr_PlanApproveList>(); var flag = false; foreach (var approve in approvelist) { if (!flag) { if (approve.ApproveStatus == 0) { flag = true; newApprovelist.Add(approve); } else { newApprovelist.Add(approve); } } } ViewBag.approvelist = newApprovelist; List <Tr_TrainClassToUser> userlist = _classManager.GetClassToUsers(classId); ViewBag.UserIds = userlist.Select(p => p.UserId).GetString(); ViewBag.Courses = courseList; ViewBag.Exams = examList; ViewBag.Practicals = practList; return(View(model)); }
/// <summary> /// 获取一个考试的详情【考前须知、试卷信息】 /// </summary> /// <param name="euId"></param> /// <returns></returns> public JsonResult GetExamDetailByEuId(int euId, int dw = 0) { try { int leavePageTimes = 0; tbExamSendStudent eu = _examTestManager.GetExamUser(euId); if (eu.RemainingTime == 0 && dw == 0) { return(Json(new { result = 0, msg = "您的考试时间已用完,不可进入!" }, JsonRequestBehavior.AllowGet)); } int examTestTimes = 0; tbExamination exam = _examinationManager.GetExamination(eu.RelationID); examTestTimes = exam.TestTimes; if (exam.LeavePageTimes < eu.LeavePageTimes && dw == 0) { return(Json(new { result = 0, msg = "您离开页面的总次数已用完,不可进入!" }, JsonRequestBehavior.AllowGet)); } if (eu.TestTimes >= exam.TestTimes && dw == 0) { return(Json(new { result = 0, msg = "进入次数已达到上限,不可进入!" }, JsonRequestBehavior.AllowGet)); } if (exam.ExamEndTime.ToLocalTime() <= DateTime.Now && dw == 0) { return(Json(new { result = 0, msg = "本场考试已经结束,不可进入!" }, JsonRequestBehavior.AllowGet)); } var exambase = _examTestManager.GetExamBaseInforShow(euId, leavePageTimes); var exampaper = _examTestManager.GetExampaperBaseInforShow(euId); List <KeyValuePair <string, string> > filePath = new List <KeyValuePair <string, string> >(); foreach (var item in exampaper.QuestionList) { if (item.QType == 6) { foreach (var p in item.FileUpload) { p.fileName = "http://" + Request.Url.Authority + p._fileName; filePath.Add(new KeyValuePair <string, string>(p._fileName, p._fileName)); } } } string txtContent = Newtonsoft.Json.JsonConvert.SerializeObject(new { exambase = new { exambase.ExamRuleList, exambase.ExamEndTime, exambase.ExamStartTime, exambase.ExamLength, exambase.ExamTitle, exambase.UserRemainingTime }, exampaper = new { QuestionList = exampaper.QuestionList.Select(p => new { FileUpload = p.FileUpload.Select(f => new { fileName = f._fileName, fileType = f._fileType }), p.QAnswerType, p.QType, QuestionAnswer = p.QuestionAnswer.Select(q => new { q.AnswerContent, q.AnswerType, q.Order, q.oldOrder }), p.QuestionContent, p.QuestionID, p.QuestionOrder, p.FillBlankCount, p.UserAnswer, p.Score }) }, testTimes = examTestTimes - eu.TestTimes }); string jsonfilename = Guid.NewGuid().ToString(); string jsonfilefilepath = Server.MapPath(Url.Addr("~/UploadFiles/ExamQuestionResource/") + jsonfilename + ".json"); System.IO.File.WriteAllText(jsonfilefilepath, txtContent); filePath.Add(new KeyValuePair <string, string>(jsonfilefilepath, "data.json")); string zipFilePath = ""; long filesize = 0; if (filePath.Count > 0) { string filename = Guid.NewGuid().ToString(); if (!Directory.Exists(Server.MapPath("~/UploadFiles/tmp/"))) { Directory.CreateDirectory(Server.MapPath("~/UploadFiles/tmp/")); } FileZipHelper.PackFiles(Server.MapPath("~/UploadFiles/tmp/" + filename + ".zip"), filePath); zipFilePath = "http://" + Request.Url.Authority + Url.Addr("~/UploadFiles/tmp/") + filename + ".zip"; filesize = new System.IO.FileInfo(Server.MapPath("~/UploadFiles/tmp/" + filename + ".zip")).Length; } return(Json(new { result = 1, msg = "获取成功!", zipFilePath = zipFilePath, FileSize = filesize }, JsonRequestBehavior.AllowGet)); } catch { return(Json(new { result = 0, msg = "获取失败!" }, JsonRequestBehavior.AllowGet)); } }
/// <summary> /// 获取试卷的试题 /// </summary> /// <param name="exampaper">试卷信息</param> /// <param name="exam">试卷信息</param> /// <param name="examuser">学员答案</param> /// <param name="examination">考试信息</param> /// <returns></returns> public void GetExampaper(ExampaperShow exampaper, tbExampaper exam, tbExamSendStudent examuser, tbExamination examination) { if (exampaper.ExampaperType == 0) { #region 正常 IMongoQuery query = Query.In("_id", new BsonArray(exam.QuestionList.Select(p => p.Qid))); List <tbQuestion> quList = Etdb.GetAllList <tbQuestion>(query); //获取试题 exam.QuestionList.ForEach(p => { tbQuestion qu = quList.FirstOrDefault(q => q._id == p.Qid); if (qu != null) { ReStudentExamAnswer an = examuser == null ? null : examuser.StudentAnswerList.FirstOrDefault( pa => pa.Qid == p.Qid); var newqu = new MQuestion { QAnswerType = qu.QuestionAnswer[0].AnswerType, QType = qu.QuestionType, QuestionContent = qu.QuestionContent, QuestionID = qu._id, QuestionLevel = ((QuestionLevel)qu.QuestionLevel).ToString(), QuestionOrder = p.QOrder, Score = p.QScore, UserAnswer = an == null ? "" : (an.Answer), FillBlankCount = qu.QuestionContent.Split(new[] { "()" }, StringSplitOptions.None).Count() - 1 }; qu.QuestionAnswer.OrderBy(o => o.Order) .ToList() .ForEach(pa => newqu.QuestionAnswer.Add(new MQuestionAnswer { AnswerContent = pa.Answer, AnswerFlag = pa.AnswerFlag, AnswerType = pa.AnswerType, Order = pa.Order, QuID = newqu.QuestionID, QType = newqu.QType })); qu.FileUpload.ForEach(pa => newqu.FileUpload.Add(new QuestionFile { _fileName = pa.FileName, _fileType = pa.FileType, _realName = pa.RealName })); exampaper.QuestionList.Add(newqu); } }); #endregion } else { #region 随机 List <tbQuestion> questionList = Etdb.GetAllList <tbQuestion>(Query.EQ("Status", 0)); exam.QuestionRule.ForEach(p => { var newqulist = new List <tbQuestion>(); foreach (string s in p.QLevelStr.Split(';')) { newqulist.AddRange( questionList.Where( qu => p.QSort == qu.QuestionSortID && p.Qtype == qu.QuestionType && s.Split(':')[0].StringToInt32() == qu.QuestionLevel) .ToList() .RandomGetSome(s.Split(':')[1].StringToInt32())); } newqulist.ForEach(qu => { var newqu = new MQuestion { QAnswerType = qu.QuestionAnswer[0].AnswerType, QType = qu.QuestionType, QuestionContent = qu.QuestionContent, QuestionID = qu._id, QuestionLevel = ((QuestionLevel)qu.QuestionLevel).ToString(), QuestionOrder = 0, Score = p.QScore, UserAnswer = "", FillBlankCount = qu.QuestionContent.Split(new[] { "()" }, StringSplitOptions.None).Count() - 1 }; qu.QuestionAnswer.OrderBy(o => o.Order) .ToList() .ForEach(pa => newqu.QuestionAnswer.Add(new MQuestionAnswer { AnswerContent = pa.Answer, AnswerFlag = pa.AnswerFlag, AnswerType = pa.AnswerType, Order = pa.Order, QuID = newqu.QuestionID, QType = newqu.QType })); qu.FileUpload.ForEach(pa => newqu.FileUpload.Add(new QuestionFile { _fileName = pa.FileName, _fileType = pa.FileType, _realName = pa.RealName })); exampaper.QuestionList.Add(newqu); }); }); #endregion } if (exampaper.ExampaperType == 1 || (examination._id > 0 && examination.RadomOrderFlag == 1)) //if (exampaper.ExampaperType == 1 ) { //排序 int order = 1; foreach (string s in exam.QuestionTypeOrder.Split(',')) { exampaper.QuestionList.Where(p => p.QType == s.StringToInt32()) .ToList() .RandomListOrder() .ForEach(p => { p.QuestionOrder = order; order++; }); } } exampaper.QuestionList = exampaper.QuestionList.OrderBy(p => p.QuestionOrder).ToList(); }
public RExamination GetExaminationRecordsDistribution(int id, out List <string> distribution, int ScoreSize = 9, int ScoreCount = 5) { AllQuestion = _examReportDB.GetAllList <tbQuestion>(true); AllQuestionSort = _examReportDB.GetAllList <tbQuestionSort>(true); AllExampaper = _examReportDB.GetAllList <tbExampaper>(true); AllExamSendStudent = _examinationDB.GettbExamSendStudent(); distribution = new List <string>(); tbExamination exam = _examinationDB.GetPublishExam().FirstOrDefault(p => p._id == id); if (exam == null) { return(null); } var tbExampaper = AllExampaper.FirstOrDefault(p => p._id == exam.PaperID); var result = new RExamination { _id = exam._id, ApprovalUser = exam.ApprovalUser, CreateTime = exam.CreateTime, ExamBeginTime = exam.ExamBeginTime, ExamEndTime = exam.ExamEndTime, ExaminationTitle = exam.ExaminationTitle, tbExamSendStudents = GetCommonRExamSendStudents(exam._id), ExamLength = exam.ExamLength, ExamRules = exam.ExamRules, LastUpdateTime = exam.LastUpdateTime, PaperID = exam.PaperID, UserID = exam.UserID, PassScore = exam.PassScore, PercentFlag = exam.PercentFlag, PublishedFlag = exam.PublishedFlag, RadomOrderFlag = exam.RadomOrderFlag, SendMessageFlag = exam.SendMessageFlag, ShowType = exam.ShowType, Status = exam.Status, TestTimes = exam.TestTimes }; if (tbExampaper.ExamType == 0) { result.ExamPaperTotalScore = tbExampaper.QuestionList.Sum(p => p.QScore); } if (tbExampaper.ExamType == 1) { result.ExamPaperTotalScore = tbExampaper.QuestionRule.Sum( p => p.QLevelStr.Split(';').Sum(q => int.Parse(q.Split(':')[1])) * p.QScore); } //得到分数梯度 var Distribution = new List <List <int> >(); int i = 100; int n = 0; while (i >= 0 && n < ScoreCount) { string a = i + "-"; var temp = new List <int> { i }; i -= ScoreSize; if (n == 0) { i--; } if (i >= 0 && n != ScoreCount - 1) { temp.Add(i); a += i; } else { temp.Add(0); a += 0; } Distribution.Add(temp); distribution.Add(a); n++; i--; } var RecordsDistribution = new Dictionary <string, int>(); for (int m = 0; m < Distribution.Count; m++) { RecordsDistribution[Distribution[m].Max() + "-" + Distribution[m].Min()] = result.tbExamSendStudents.Count( p => 100 * p.GetTotalScore / result.ExamPaperTotalScore <= Distribution[m].Max() && 100 * p.GetTotalScore / result.ExamPaperTotalScore >= Distribution[m].Min()); } result.RecordsDistribution = RecordsDistribution; return(result); }
public JsonResult SubmitEditExamination(tbExamination exam, string personIds, string ApprovalUser) { string content = ""; int result = 0; int examId = exam._id > 0 ? exam._id : 0; if (exam.ExamBeginTime > DateTime.Now) { int flag = JudgeCanPublishExam(examId, ApprovalUser, personIds); if (flag == 0) { if (string.IsNullOrEmpty(ApprovalUser)) { exam.ApprovalUser = new List <int>(); } else { exam.ApprovalUser = ApprovalUser.Split(',') .Distinct() .Where(p => !string.IsNullOrEmpty(p)) .Select(int.Parse) .ToList(); } if (exam._id > 0) { tbExamination tempExam = _examinationBL.GetExamination(exam._id); examId = exam._id; if (tempExam != null) { tempExam.ApprovalUser = exam.ApprovalUser; tempExam.ExamBeginTime = exam.ExamBeginTime; tempExam.ExamEndTime = exam.ExamEndTime; tempExam.ExaminationTitle = exam.ExaminationTitle; tempExam.ExamLength = exam.ExamLength; tempExam.PaperID = exam.PaperID; tempExam.PassScore = exam.PassScore; tempExam.PercentFlag = exam.PercentFlag; tempExam.PublishedFlag = exam.PublishedFlag; tempExam.RadomOrderFlag = exam.RadomOrderFlag; tempExam.ShowType = exam.ShowType; tempExam.TestTimes = exam.TestTimes; // tempExam.UserID = exam.UserID;不更新创建人 result = _examinationBL.ModifyExamination(tempExam) ? 1 : 0; content = "修改成功!"; } } else { exam.CreateTime = DateTime.Now; exam.UserID = Session["userID"].StringToInt32(); result = _examinationBL.AddExamination(exam) > 0 ? 1 : 0; content = "新增成功!"; examId = exam._id; } if (exam.PublishedFlag == 1) { content = "发布成功!"; } ChangtbExamSendStudent(personIds, exam._id); //授权参与考试的人员 } else { result = 3; content = flag == 1 ? "该考试的所授权的考生无效!" : "该考试所添加的批阅人无效!"; } } else { result = 3; content = "考试开始时间不能小于服务器系统时间!"; } return(Json(new { result, content, examId }, JsonRequestBehavior.DenyGet)); }
/// <summary> /// 新增考试 /// </summary> /// <param name="exam"></param> /// <returns></returns> public int AddExamination(tbExamination exam) { return(_examinationDb.Insert(exam)); }
/// <summary> /// 修改考试 /// </summary> /// <param name="exam"></param> /// <returns></returns> public bool ModifyExamination(tbExamination exam) { return(_examinationDb.Modify(exam)); }
/// <summary> /// 获取试卷的试题 /// </summary> /// <param name="exampaper">试卷信息</param> /// <param name="exam">试卷信息</param> /// <param name="examuser">学员答案</param> /// <param name="examination">考试信息</param> private void GetExampaper(ExampaperShow exampaper, tbExampaperRedundancy exam, tbExamSendStudent examuser, tbExamination examination) { var radomOrder = string.IsNullOrWhiteSpace(examination.RadomOrderFlag) ? new string[0] : examination.RadomOrderFlag.Split(','); //IMongoQuery query = Query.In("_id", new BsonArray(exam.QuestionList.Select(p => p.Qid))); IMongoQuery query = Query.In("_id", new BsonArray(examuser.StudentAnswerList.Select(p => p.Qid))); if (!examuser.StudentAnswerList.Any()) { //如果没有试题,则加入试题 if (exam.ExamType == 0) { exam.QuestionList.ForEach(p => { examuser.StudentAnswerList.Add(new ReStudentExamAnswer { Qid = p.Qid, Questionid = p.Questionid, Order = p.QOrder, QType = p.QType, Score = p.QScore, DoneFlag = 0, Answer = "", Evlution = "", GetScore = 0, WrongQuestionFlag = 0 }); }); } else { examuser = new RetechWing.BusinessCommon.Examination.GenerateExampaper().RandomGenerate(examuser, exam.QuestionRule); var questionIds = examuser.StudentAnswerList.Select(p => p.Questionid); var questions = Etdb.GetAllList <tbQuestion>(Query.In("_id", new BsonArray(questionIds))); int i = 1; foreach (var item in examuser.StudentAnswerList) { var tmp = questions.FirstOrDefault(p => p._id == item.Questionid); var questionRed = new tbQuestionRedundancy { QuestionId = tmp._id, QuestionSortID = tmp.QuestionSortID, QuestionOpen = tmp.QuestionOpen, UserID = tmp.UserID, CreateTime = tmp.CreateTime, FileUpload = tmp.FileUpload, LastUpdateTime = tmp.LastUpdateTime, QuestionAnalysis = tmp.QuestionAnalysis, QuestionAnswer = tmp.QuestionAnswer, QuestionAnswerKeys = tmp.QuestionAnswerKeys, QuestionAvailable = tmp.QuestionAvailable, QuestionContent = tmp.QuestionContent, QuestionKey = tmp.QuestionKey, QuestionLevel = tmp.QuestionLevel, QuestionType = tmp.QuestionType, Status = tmp.Status, TenantId = tmp.TenantId }; item.Qid = Etdb.Insert <tbQuestionRedundancy>(questionRed); item.Order = i; i++; } } Etdb.Modify <tbExamSendStudent>(examuser); query = Query.In("_id", new BsonArray(examuser.StudentAnswerList.Select(p => p.Qid))); } ////从缓存中读取所有问题 //List<tbQuestionRedundancy> quList; //获取试题 //var cachekey = "examquestions:tenant:" + exam.TenantId; //quList = _cacheService.Get<List<tbQuestionRedundancy>>(cachekey); //if (quList == null || quList.Count == 0) //{ // quList = Etdb.GetAllList<tbQuestionRedundancy>(query); // _cacheService.Set(cachekey, quList, CachingExpirationType.Stable); //} var quList = Etdb.GetAllList <tbQuestionRedundancy>(query); //题目随机 if (radomOrder.Contains("1")) { var radomList = new List <int>(); var next = 0; var length = examuser.StudentAnswerList.Count; for (int i = 0; i < length; i++) { do { next = new Random().Next(); if (!radomList.Contains(next)) { examuser.StudentAnswerList[i].Order = next; radomList.Add(next); break; } } while (true); } } var m = 0; examuser.StudentAnswerList.OrderBy(p => p.Order).ToList().ForEach(p => { p.Order = ++m; tbQuestionRedundancy qu = quList.FirstOrDefault(q => q._id == p.Qid); if (qu != null) { ReStudentExamAnswer an = examuser == null ? null : examuser.StudentAnswerList.FirstOrDefault( pa => pa.Qid == p.Qid); var newqu = new MQuestion { QAnswerType = qu.QuestionType == 6 ? qu.QuestionAnswer[0].AnswerType : 0, QType = qu.QuestionType, //QuestionContent = qu.QuestionContent, QuestionContent = qu.QuestionContent.NoHtml().HtmlDecode(), QuestionID = qu._id, QuestionLevel = EnumsLanguage.GetString(((QuestionLevel)qu.QuestionLevel).ToString()), QuestionOrder = p.Order, Score = p.Score, UserAnswer = an == null ? "" : (an.Answer), UserAnswerScore = an == null ? 0 : an.GetScore, FillBlankCount = qu.QuestionContent.Split(new[] { "()" }, StringSplitOptions.None).Length - 1, WrongQuestionFlag = an == null ? 0 : an.WrongQuestionFlag, QuestionAnalysis = qu.QuestionAnalysis }; //记录选项随机前的原有序号 var tmpquestionlist = new List <MQuestionAnswer>(); //选择随机 if (radomOrder.Contains("2")) { var radomList = new List <int>(); var next = 0; var length = qu.QuestionAnswer.Count; for (int i = 0; i < length; i++) { do { next = new Random().Next(); if (!radomList.Contains(next)) { tmpquestionlist.Add(new MQuestionAnswer { Order = next, oldOrder = qu.QuestionAnswer[i].Order }); qu.QuestionAnswer[i].Order = next; radomList.Add(next); break; } } while (true); } } var n = 0; qu.QuestionAnswer.OrderBy(o => o.Order).ToList().ForEach(pa => { var tmp = tmpquestionlist.FirstOrDefault(t => t.Order == pa.Order); pa.Order = ++n; newqu.QuestionAnswer.Add(new MQuestionAnswer { AnswerContent = pa.Answer, AnswerFlag = pa.AnswerFlag, AnswerType = pa.AnswerType, Order = pa.Order, QuID = newqu.QuestionID, QType = newqu.QType, oldOrder = tmp == null ? pa.Order : tmp.oldOrder }); }); qu.FileUpload.ForEach(pa => newqu.FileUpload.Add(new QuestionFile { _fileName = pa.FileName, _fileType = pa.FileType, _realName = pa.RealName })); exampaper.QuestionList.Add(newqu); } }); exampaper.QuestionList = exampaper.QuestionList.OrderBy(p => p.QuestionOrder).ToList(); }