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);
        }