public static void 添加试卷设置(试卷设置 试卷设置) { LoveKaoExamEntities db = new LoveKaoExamEntities(); if (试卷设置.设置类型 == 1) { //未设置成练习才能设置成考试 Guid outsideId = db.试卷内容表.FirstOrDefault(a=>a.ID==试卷设置.试卷内容ID).试卷外部信息ID; List<Guid> listContentId = db.试卷内容表.Where(a=>a.试卷外部信息ID==outsideId).Select(a=>a.ID).ToList(); if (db.练习设置表.Any(a => listContentId.Contains(a.试卷内容ID) && a.是否删除 == false) == true) { throw new Exception("该试卷已设置成练习,若要设置成考试,请先删除练习设置!"); } //只有出卷人才能设置 试卷内容 testContent = 试卷内容.试卷内容查询.Where(a => a.ID == 试卷设置.试卷内容ID).First(); if (testContent.提交人ID != 试卷设置.设置人ID) { throw new Exception("您无权设置该试卷!"); } //开始时间不能大于结束时间 if (试卷设置.考试开始时间 >= 试卷设置.考试结束时间) { throw new Exception("考试开始时间不能大于考试结束时间!"); } 考试设置表 examSet = new 考试设置表(); examSet.ID = Guid.NewGuid(); examSet.及格条件 = 试卷设置.及格条件; examSet.考试结束时间 = 试卷设置.考试结束时间; examSet.考试开始时间 = 试卷设置.考试开始时间; examSet.考试时长 = 试卷设置.考试时长; examSet.试卷内容ID = 试卷设置.试卷内容ID; examSet.是否公布考试结果 = 试卷设置.是否公布考试结果; examSet.设置人ID = 试卷设置.设置人ID; examSet.设置时间 = DateTime.Now; examSet.是否删除 = false; List<考生范围表> listArea = new List<考生范围表>(); foreach (Guid examineeId in 试卷设置.考生ID集合) { 考生范围表 area = new 考生范围表(); area.ID = Guid.NewGuid(); area.考生ID = examineeId; area.相关ID = examSet.ID; listArea.Add(area); } db.考试设置表.AddObject(examSet); foreach (var area in listArea) { db.考生范围表.AddObject(area); } db.SaveChanges(); } else { //若试卷已设置成考试,则要在考试结束后或删除考试设置才能设置成练习 Guid outsideId = db.试卷内容表.FirstOrDefault(a=>a.ID==试卷设置.试卷内容ID).试卷外部信息ID; List<Guid> listContentId = db.试卷内容表.Where(a=>a.试卷外部信息ID==outsideId).Select(a => a.ID).ToList(); 考试设置表 examSet = db.考试设置表.Where(a=>listContentId.Contains(a.试卷内容ID)&& a.是否删除 == false) .OrderByDescending(a => a.考试结束时间).FirstOrDefault(); if (examSet != null) { if (examSet.考试结束时间 > DateTime.Now) { throw new Exception("该试卷已设置成考试,若要设置成练习,需在考试结束时间以后或删除考试设置!"); } } //只有出卷人才能设置 试卷内容 testContent = 试卷内容.试卷内容查询.Where(a => a.ID == 试卷设置.试卷内容ID).First(); if (testContent.提交人ID != 试卷设置.设置人ID) { throw new Exception("您无权设置该试卷!"); } //若该试卷以前有设置成练习的记录,且被删除了,则更新设置,并恢复删除,若没有,则添加新的设置 练习设置表 dbExerciseSet = db.练习设置表.FirstOrDefault(a=>a.试卷内容ID==试卷设置.试卷内容ID); if (dbExerciseSet == null) { 练习设置表 exerciseSet = new 练习设置表(); exerciseSet.及格条件 = 试卷设置.及格条件; exerciseSet.考试时长 = 试卷设置.考试时长; exerciseSet.设置人ID = 试卷设置.设置人ID; exerciseSet.设置时间 = DateTime.Now; exerciseSet.试卷内容ID = 试卷设置.试卷内容ID; exerciseSet.是否删除 = false; db.练习设置表.AddObject(exerciseSet); List<考生范围表> listArea = new List<考生范围表>(); foreach (Guid examineeId in 试卷设置.考生ID集合) { 考生范围表 area = new 考生范围表(); area.ID = Guid.NewGuid(); area.考生ID = examineeId; area.相关ID = exerciseSet.试卷内容ID; listArea.Add(area); } foreach (var area in listArea) { db.考生范围表.AddObject(area); } } else { dbExerciseSet.及格条件 = 试卷设置.及格条件; dbExerciseSet.考试时长 = 试卷设置.考试时长; dbExerciseSet.设置时间 = DateTime.Now; dbExerciseSet.是否删除 = false; 考生范围.更新考生范围(试卷设置.试卷内容ID, 试卷设置.考生ID集合, db); } db.SaveChanges(); } }
public JsonResult SetupUCEditor(试卷设置 model) { /* 用户操作类型 */ int 用户操作类型 = LKExamURLQueryKey.GetInt32("uHandleType"); /* 考生ID数组 */ string[] 考生ID数组 = LKExamURLQueryKey.GetString("考生ID集合[]").Split(",".ToArray()); #region 考生ID集合 List<Guid> 考生ID集合 = new List<Guid>(); foreach (var item in 考生ID数组) { Guid 考生ID = LKExamURLQueryKey.SToGuid(item); if (考生ID != Guid.Empty) { 考生ID集合.Add(考生ID); } } #endregion #region try/catch(){} try { model.设置人ID = UserInfo.CurrentUser.用户ID; model.考生ID集合 = 考生ID集合; if (用户操作类型 == 1) { 试卷设置.修改试卷设置(model); } else { 试卷设置.添加试卷设置(model); } /* 返回执行成功的Json字符串 */ return LKPageJsonResult.Success(); } catch (Exception ex) { /* 返回异常后Json格式字符串 */ return LKPageJsonResult.Exception(ex); } #endregion }
public static void 修改试卷设置(试卷设置 试卷设置) { LoveKaoExamEntities db = new LoveKaoExamEntities(); if (试卷设置.设置类型 == 1) { 考试设置表 examSet = db.考试设置表.FirstOrDefault(a=>a.ID==试卷设置.ID); //只有设置人自己才能修改 异常处理.删除修改权限判断(examSet.设置人ID); //考试时间开始以后,就不能修改了 if (DateTime.Now >= examSet.考试开始时间 && DateTime.Now <= examSet.考试结束时间) { throw new Exception("考试时间内不能修改,只有考试开始时间前能修改!"); } if (DateTime.Now > examSet.考试结束时间) { throw new Exception("考试时间已过,不能修改,只有考试开始时间前能修改!"); } examSet.及格条件 = 试卷设置.及格条件; examSet.考试结束时间 = 试卷设置.考试结束时间; examSet.考试开始时间 = 试卷设置.考试开始时间; examSet.考试时长 = 试卷设置.考试时长; //更新考生范围 考生范围.更新考生范围(试卷设置.ID, 试卷设置.考生ID集合, db); db.SaveChanges(); } else { 练习设置表 exerciseSet = db.练习设置表.FirstOrDefault(a=>a.试卷内容ID==试卷设置.试卷内容ID); //只有设置人自己才能修改 异常处理.删除修改权限判断(exerciseSet.设置人ID); exerciseSet.及格条件 = 试卷设置.及格条件; exerciseSet.考试时长 = 试卷设置.考试时长; exerciseSet.设置时间 = DateTime.Now; 考生范围.更新考生范围(试卷设置.试卷内容ID, 试卷设置.考生ID集合, db); db.SaveChanges(); } }
/// <summary> /// 试卷设置 考生范围 /// </summary> /// <param name="id">当前页数</param> /// <returns></returns> public ActionResult Setup(int? id) { /* 禁止页面被缓存 */ BasePage.PageNoCache(); /* 考生范围PagedList */ PagedList<考生> 考生范围PagedList = 考生信息列表(id); /* 考生范围信息视图 */ LKExamMvcPagerData<考生>.数据信息(考生范围PagedList, MvcPager引用目标.考官_组织考试或练习设置考生范围, ViewData); /* 用户操作类型 */ int 用户操作类型 = LKExamURLQueryKey.GetInt32("uHandleType"); /* 设置类型 */ int 试卷设置类型 = LKExamURLQueryKey.GetInt32("testSetType"); 试卷设置 view试卷设置 = new 试卷设置(); view试卷设置.考生ID集合 = new List<Guid>(); view试卷设置.设置类型 = 试卷设置类型; /* 如果是Ajax异步请求则返回控件视图 */ if (Request.IsAjaxRequest()) { ViewData["试卷设置"] = view试卷设置; return PartialView("~/Views/Examiner/Organization/UCSetup.ascx", 考生范围PagedList); } else { /* * 试卷设置ID * 如果是组织试卷 试卷设置ID 为model.试卷内容ID * 如果是修改考试 试卷设置ID 为model.ID * 如果是修改练习 试卷设置ID 为model.试卷内容ID */ Guid 试卷设置ID = LKExamURLQueryKey.GetGuid("testSetID"); /* 修改试卷设置 */ if (用户操作类型 == 1) { view试卷设置 = 试卷设置.得到某试卷设置根据ID(试卷设置ID, 试卷设置类型); } /* 组织试卷是设置 */ else { view试卷设置.试卷内容ID = 试卷设置ID;/* 考试,练习 */ view试卷设置.及格条件 = 60; view试卷设置.考试时长 = 90; view试卷设置.考试开始时间 = DateTime.Now; view试卷设置.考试结束时间 = DateTime.Now.AddMinutes(view试卷设置.考试时长); view试卷设置.是否公布考试结果 = true; } ViewData["试卷设置"] = view试卷设置; } /* 返回考生范围视图 */ return View("~/Views/Examiner/Organization/Setup.aspx", 考生范围PagedList); }