예제 #1
0
 public static void 修改相关信息更新所属分类(List<string> 分类列表, byte 相关类型, Guid memberId, Guid 相关ID, LoveKaoExamEntities db)
 {
     if (分类列表.Count > 0)
     {
         //把原来的删除,再插入新的
         List<所属分类表> listSort = db.所属分类表.Where(a=>a.相关信息ID==相关ID).ToList();
         foreach (var sort in listSort)
         {
             db.所属分类表.DeleteObject(sort);
         }
         db.SaveChanges();
         List<所属分类表> listNewSort = new List<所属分类表>();
         foreach (string sort in 分类列表)
         {
             所属分类表 sortTable = new 所属分类表();
             sortTable.ID = Guid.NewGuid();
             sortTable.操作人ID = memberId;
             sortTable.操作时间 = DateTime.Now;
             sortTable.分类名 = sort;
             sortTable.相关类型 = 相关类型;
             sortTable.相关信息ID = 相关ID;
             listNewSort.Add(sortTable);
         }
         foreach (var newSort in listNewSort)
         {
             db.所属分类表.DeleteObject(newSort);
         }
         db.SaveChanges();
     }
 }
예제 #2
0
 public static void 删除考官(Guid 考官ID)
 {
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     用户表 user = db.用户表.First(a => a.ID == 考官ID);
     db.用户表.DeleteObject(user);
     db.SaveChanges();
 }
예제 #3
0
        public static void 提交保存批改(string 批改Json)
        {
            考生做过的试卷 doneTest = 考生做过的试卷.把Json转化成考生做过的试卷(批改Json);
            List<试卷大题中试题> listTestProblem=new List<试卷大题中试题>();
            foreach(试卷中大题 testType in doneTest.考试设置.试卷内容.试卷中大题集合)
            {
                listTestProblem.AddRange(testType.试卷大题中试题集合);
            }

            LoveKaoExamEntities db = new LoveKaoExamEntities();
            考生做过的试卷表 memberDoneTest = db.考生做过的试卷表.FirstOrDefault(a=>a.ID==doneTest.ID);
            //更新考生得分
            List<考生考试回答表> listMemberAnswer = db.考生考试回答表.Where(a => a.考生做过的试卷ID == doneTest.ID)
                .ToList();
            foreach (考生考试回答表 memberAnswer in listMemberAnswer)
            {
                memberAnswer.该题的得分 = listTestProblem.Where(a => a.ID == memberAnswer.试卷大题中试题ID).First()
                    .该题考试回答.该题的得分;
            }
            //更新批改状态
            memberDoneTest.批改状态 = doneTest.批改状态类型;
            if (doneTest.批改状态类型>0)
            {
                memberDoneTest.批改时间 = DateTime.Now;
            }
            //计算客观题总得分
            //List<Guid> listContentId = listTestProblem.Select(a => a.试题内容ID).ToList();
            //List<Guid> listObjectiveContentId = db.试题内容表.Where(a => listContentId.Contains(a.ID)
            //    && (a.小题型Enum < 31 || a.小题型Enum == 8011)).Select(a => a.ID).ToList();
            //memberDoneTest.客观题得分 = listTestProblem.Where(a => listObjectiveContentId.Contains(a.试题内容ID))
            //    .Sum(a => a.该题考试回答.该题的得分.Value);
            List<Guid> listTestProblemID = listMemberAnswer.Select(a => a.试卷大题中试题ID).ToList();
            List<试卷大题中试题表> listTestProblemTable = db.试卷大题中试题表.Where(a => listTestProblemID.Contains(a.ID))
                .ToList();
            List<Guid> listProblemContentID = listTestProblemTable.Select(a => a.试题内容ID).ToList();
            //是客观题的试题内容ID
            List<Guid> listContentID = db.试题内容表.Where(a => listProblemContentID.Contains(a.ID)
                && (a.小题型Enum < 31 || a.小题型Enum == 8011)).Select(a => a.ID).ToList();
            //是客观题的试卷大题中试题ID
            List<Guid> listTestTypeProblemID = listTestProblemTable.Where(a => listContentID.Contains(a.试题内容ID))
                .Select(a=>a.ID).ToList();
            memberDoneTest.客观题得分 = listMemberAnswer.Where(a => listTestTypeProblemID.Contains(a.试卷大题中试题ID))
                .Sum(a => a.该题的得分.Value);

            //主观题得分
            //memberDoneTest.主观题得分 = listTestProblem.Sum(a => a.该题考试回答.该题的得分.Value) - memberDoneTest.客观题得分;
            memberDoneTest.主观题得分 = listMemberAnswer.Sum(a => a.该题的得分.Value) - memberDoneTest.客观题得分;
            db.SaveChanges();
        }
예제 #4
0
 /// <summary>
 /// 返回0修改成功,1部门名已存在,不能修改
 /// </summary>
 public static int 修改部门(部门 部门)
 {
     异常处理.删除修改权限判断();
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     if (db.部门表.Any(a => a.名称 == 部门.名称) == true)
     {
         return 1;
     }
     部门表 department = db.部门表.FirstOrDefault(a=>a.ID==部门.ID);
     department.名称 = 部门.名称;
     department.上级部门ID = 部门.上级部门ID;
     department.添加时间 = DateTime.Now;
     db.SaveChanges();
     return 0;
 }
        public static void 修改正常试题(试题外部信息 problemOutside, 试题内容 problemContent, List<string> 分类列表, string 试题json字符串)
        {
            //using (TransactionScope scope = new TransactionScope())
            //{
                JObject bo = JObject.Parse(试题json字符串);
                var typeEnum = bo["outside"]["试题状态Enum"].ToString();
                if (typeEnum == "4")
                {
                    throw new Exception("正常试题不能改为草稿!");
                }
                LoveKaoExamEntities db = new LoveKaoExamEntities();
                试题外部信息表 outsideTable = db.试题外部信息表.FirstOrDefault(a => a.ID == problemOutside.ID);
                异常处理.删除修改权限判断(outsideTable.创建人ID);
                if (outsideTable.试题状态Enum == 1)
                {
                    throw new Exception("该试题已被删除!");
                }
                outsideTable.最新更新时间 = DateTime.Now;
                outsideTable.难易度 = problemOutside.难易度;

                if (problemContent != null)
                {
                    outsideTable.试题查询内容 = problemContent.生成查询内容();
                    outsideTable.试题显示列 = problemContent.生成试题显示列();
                    outsideTable.试题内容ID = problemContent.ID;
                }
                List<string> listBelongSort = 所属分类.所属分类处理(分类列表, outsideTable.创建人ID, db);
                所属分类.修改相关信息更新所属分类(listBelongSort, 0, outsideTable.创建人ID, outsideTable.ID, db);

                if (problemContent != null)
                {
                    string json字符串 = bo["content"].ToString();
                    problemContent.保存(db, json字符串);
                }
                if (problemContent == null)
                {
                    db.SaveChanges();
                }
               // scope.Complete();
               // }
        }
 /// <summary>
 /// 返回0上传成功,1账号未绑定,2绑定账号被禁用,3禁止绑定任何账号
 /// </summary>       
 public static int 上传试题(List<Guid> 试题外部信息ID集合,out List<试题外部信息> 已存在试题集合)
 {
     try
     {
         LoveKaoExamEntities db = new LoveKaoExamEntities();
         //获取绑定账号信息
         绑定账号表 bind = db.绑定账号表.Where(a => a.本地账号ID == 用户信息.CurrentUser.用户ID).FirstOrDefault();
         if (bind == null)
         {
             已存在试题集合 = new List<试题外部信息>();
             return 1;
         }
         List<试题外部信息> 试题外部信息集合 = 试题外部信息查询.Where(a => 试题外部信息ID集合.Contains(a.ID)).ToList();
         //给试题外部信息集合赋值当前试题内容属性
         List<Guid> listContentId = 试题外部信息集合.Select(a => a.试题内容ID).ToList();
         List<试题内容> listContent = 试题内容.试题内容查询.Where(a => listContentId.Contains(a.ID)).ToList();
         foreach (试题外部信息 outside in 试题外部信息集合)
         {
             outside.当前试题内容 = listContent.Where(a => a.ID == outside.试题内容ID).First();
         }
         Dictionary<string, byte[]> dicPicture = new Dictionary<string, byte[]>();
         List<string> listJson = new List<string>();
         foreach (试题外部信息 outside in 试题外部信息集合)
         {
             string Json = 试题内容.转化成完整Json字符串(outside.当前试题内容, outside);
             listJson.Add(Json);
             Dictionary<string, byte[]> oneDic = 获取试题图片(Json);
             foreach (var subOneDic in oneDic)
             {
                 dicPicture.Add(subOneDic.Key, subOneDic.Value);
             }
         }
         List<Guid> listExistOutsideId = new List<Guid>();
         LoveKaoServiceReference.LoveKaoServiceInterfaceClient client = new LoveKaoServiceReference.LoveKaoServiceInterfaceClient();
         int result = client.上传试题(out listExistOutsideId,listJson,dicPicture,bind.爱考网账号, bind.爱考网密码);
         client.Close();
         if (result == 1)
         {
             异常处理.抛出异常(-1);
         }
         else if (result == 2)
         {
             异常处理.抛出异常(1);
         }
         else if (result == 3)
         {
             异常处理.抛出异常(2);
         }
         if (result == 0)
         {
             //更新试题类型
             List<试题外部信息表> listOutside = db.试题外部信息表.Where(a => 试题外部信息ID集合.Contains(a.ID)).ToList();
             foreach (试题外部信息表 outside in listOutside)
             {
                 outside.试题类型 = 1;
             }
             db.SaveChanges();
             已存在试题集合 = 试题外部信息.试题外部信息查询.Where(a => listExistOutsideId.Contains(a.ID)).ToList();
         }
         else
         {
             已存在试题集合 = new List<试题外部信息>();
         }
         return result;
     }
     catch (Exception ex)
     {
         异常处理.Catch异常处理(ex.Message);
         throw;
     }
 }
예제 #7
0
 public static void 删除用户(Guid 用户ID)
 {
     异常处理.删除修改权限判断();
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     List<系统分类表> listSystem = db.系统分类表.Where(a=>a.操作人ID==用户ID).ToList();
     List<string> listSystemSort=listSystem.Select(a=>a.分类名称).ToList();
     List<系统分类上下级关系表> listRelation = db.系统分类上下级关系表.Where(a => listSystemSort.Contains(a.系统分类名称)
         || listSystemSort.Contains(a.分类关系名称)).ToList();
     foreach (var relation in listRelation)
     {
         db.系统分类上下级关系表.DeleteObject(relation);
     }
     foreach (var system in listSystem)
     {
         db.系统分类表.DeleteObject(system);
     }
     List<试卷外部信息表> listTest = db.试卷外部信息表.Where(a => a.创建人ID == 用户ID).ToList();
     foreach (var test in listTest)
     {
         db.试卷外部信息表.DeleteObject(test);
     }
     List<试题外部信息表> listProblem = db.试题外部信息表.Where(a => a.创建人ID == 用户ID).ToList();
     foreach (var problem in listProblem)
     {
         db.试题外部信息表.DeleteObject(problem);
     }
     用户表 user = db.用户表.First(a => a.ID == 用户ID);
     db.SaveChanges();
 }
예제 #8
0
 /// <summary>
 /// 返回0成功,1失败
 /// </summary>
 public static int 解除绑定账号()
 {
     try
     {
         LoveKaoExamEntities db = new LoveKaoExamEntities();
         绑定账号表 bind = db.绑定账号表.Where(a=>a.本地账号ID==用户信息.CurrentUser.用户ID).FirstOrDefault();
         if (bind == null)
         {
             return 1;
         }
         else
         {
             LoveKaoServiceReference.LoveKaoServiceInterfaceClient client = new LoveKaoServiceReference.LoveKaoServiceInterfaceClient();
             int result = client.解除绑定账号(bind.爱考网账号, bind.爱考网密码,用户信息.CurrentUser.用户名);
             client.Close();
             if (result == 0)
             {
                 //删除本地绑定账号
                 db.绑定账号表.DeleteObject(bind);
                 db.SaveChanges();
             }
             return result;
         }
     }
     catch (Exception ex)
     {
         异常处理.Catch异常处理(ex.Message);
         throw;
     }
 }
예제 #9
0
        /// <summary>
        /// 返回已存在的编号集合
        /// </summary>
        /// <param name="fs">Excel文件流</param>
        /// <param name="type">0学生,1员工</param>
        /// <returns></returns>
        public static List<string> 导入excel(Stream stream, int type)
        {
            try
            {
                HSSFWorkbook workBook = new HSSFWorkbook(stream);
                HSSFSheet sheet = (HSSFSheet)workBook.GetSheetAt(0);
                //判断是否符合格式
                Cell cell0 = sheet.GetRow(0).GetCell(0);
                if (cell0 == null)
                {
                    抛出格式不符异常();
                }
                string cell0Value = 得到流中列值(cell0.CellType, sheet, 0, 0);
                if (cell0Value != "学号" && cell0Value != "编号")
                {
                    抛出格式不符异常();
                }
                Cell cell1 = sheet.GetRow(0).GetCell(1);
                if (cell1 == null)
                {
                    抛出格式不符异常();
                }
                string cell1Value = 得到流中列值(cell1.CellType, sheet, 0, 1);
                if (cell1Value != "姓名")
                {
                    抛出格式不符异常();
                }
                Cell cell2 = sheet.GetRow(0).GetCell(2);
                if (cell2 == null)
                {
                    抛出格式不符异常();
                }
                string cell2Value = 得到流中列值(cell2.CellType, sheet, 0, 2);
                if (cell2Value != "性别")
                {
                    抛出格式不符异常();
                }
                Cell cell3 = sheet.GetRow(0).GetCell(3);
                if (cell3 == null)
                {
                    抛出格式不符异常();
                }
                string cell3Value = 得到流中列值(cell1.CellType, sheet, 0, 3);
                if (cell3Value != "班级"&&cell3Value!="部门")
                {
                    抛出格式不符异常();
                }
                LoveKaoExamEntities db = new LoveKaoExamEntities();
                //取出班级,学号
                List<string> listClassName = new List<string>();
                List<string> listNum = new List<string>();
                for (int k = sheet.FirstRowNum + 1; k < sheet.LastRowNum + 1; k++)
                {
                    string className = string.Empty;
                    string classType = string.Empty;
                    if (type == 0)
                    {
                        classType = "班级";
                    }
                    else
                    {
                        classType = "部门";
                    }
                    Cell cellClass = sheet.GetRow(k).GetCell(3);
                    if (cellClass == null)
                    {
                        throw new Exception("第" + k + "行" + classType + "未填写,请先填写,然后再导入!");
                    }
                    CellType classCellType = cellClass.CellType;
                    className = 得到流中列值(classCellType, sheet, k, 3);
                    if (className.Length > 16)
                    {
                        throw new Exception("第" + k + "行" + classType + "名称长度大于16,请填写16以内的名称!");
                    }
                    string num = string.Empty;
                    string numType = string.Empty;
                    if (type == 0)
                    {
                        numType = "学号";
                    }
                    else
                    {
                        numType = "编号";
                    }
                    Cell cellNum=sheet.GetRow(k).GetCell(0);
                    if (cellNum == null)
                    {
                        throw new Exception("第" + k + "行" + numType + "未填写,请先填写,然后再导入!");
                    }
                    CellType numCellType = cellNum.CellType;
                    num = 得到流中列值(numCellType, sheet, k, 0);
                    if (num.Length < 4 || num.Length > 16)
                    {
                        throw new Exception("第" + k + "行" + numType + "长度不符,必须是4到16位!");
                    }
                    else if (Regex.IsMatch(num, @"[^a-zA-Z0-9]"))
                    {
                        throw new Exception("第" + k + "行" + numType + "格式不符," + numType + "必须只含数字或字母!");
                    }
                    listClassName.Add(className);
                    listNum.Add(num);
                }
                //有不存在的班级,则先添加
                listClassName = listClassName.Distinct().ToList();
                List<string> listExistClassName = db.部门表.Where(a => listClassName.Contains(a.名称))
                    .Select(a => a.名称).ToList();
                List<string> listNotExistClassName = listClassName.Except(listExistClassName).ToList();
                foreach (string className in listNotExistClassName)
                {
                    部门表 department = new 部门表();
                    department.ID = Guid.NewGuid();
                    department.名称 = className;
                    department.添加人ID = 用户信息.CurrentUser.用户ID;
                    department.添加时间 = DateTime.Now;
                    db.部门表.AddObject(department);
                }
                db.SaveChanges();
                //已存在的学生则不再导入
                List<string> listExistNum = db.用户表.Where(a => listNum.Contains(a.编号)).Select(a => a.编号).ToList();
                List<string> listNotExistNum = listNum.Except(listExistNum).ToList();
                List<部门表> listClass = db.部门表.Where(a => listClassName.Contains(a.名称)).ToList();
                for (int i = sheet.FirstRowNum+1; i < sheet.LastRowNum+1; i++)
                {
                    CellType numCellType = sheet.GetRow(i).GetCell(0).CellType;
                    string stuNum = 得到流中列值(numCellType, sheet, i, 0);

                    if (listNotExistNum.Contains(stuNum))
                    {
                        Cell cellName=sheet.GetRow(i).GetCell(1);
                        if (cellName == null)
                        {
                            throw new Exception("第" + i + "行姓名未填写,请先填写,然后再导入!");
                        }
                        CellType nameCellType = cellName.CellType;
                        string name = 得到流中列值(nameCellType, sheet, i, 1);
                        if (name.Length < 2 || name.Length > 8)
                        {
                            throw new Exception("第" + i + "行姓名长度不符,必须是2到8位!");
                        }
                        else if (Regex.IsMatch(name, @"[^a-zA-Z\u4e00-\u9fa5]"))
                        {
                            throw new Exception("第" + i + "行姓名格式不符,姓名必须只含中文或字母!");
                        }
                        用户表 user = new 用户表();
                        user.ID = Guid.NewGuid();
                        user.编号 = stuNum;
                        user.姓名 = name;
                        user.密码 = stuNum;
                        Cell cellSex=sheet.GetRow(i).GetCell(2);
                        if (cellSex == null)
                        {
                            throw new Exception("第" + i + "行性别未填写,请先填写,然后再导入!");
                        }
                        CellType sexCellType = cellSex.CellType;
                        string sex = 得到流中列值(sexCellType, sheet, i, 2);
                        if (sex == "男")
                        {
                            user.性别 = 1;
                        }
                        else
                        {
                            user.性别 = 2;
                        }
                        CellType classCellType = sheet.GetRow(i).GetCell(3).CellType;
                        string className = 得到流中列值(classCellType, sheet, i, 3);
                        user.部门ID = listClass.Where(a => a.名称 == className).First().ID;
                        user.角色 = 0;
                        user.邮箱 = "";
                        user.添加时间 = DateTime.Now;
                        db.用户表.AddObject(user);
                    }
                }
                db.SaveChanges();
                return listExistNum;
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("Table"))
                {
                    throw new Exception("格式错误,请按模板格式来导入!");
                }
                else
                {
                    throw ex;
                }
            }
        }
예제 #10
0
 public static void 修改公布考试结果(Guid 考试设置ID, bool 是否公布考试结果)
 {
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     考试设置表 examSet = db.考试设置表.FirstOrDefault(a=>a.ID==考试设置ID);
     if (examSet.设置人ID != 用户信息.CurrentUser.用户ID)
     {
         throw new Exception("您无权修改!");
     }
     examSet.是否公布考试结果 = 是否公布考试结果;
     db.SaveChanges();
 }
예제 #11
0
 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();
     }
 }
예제 #12
0
        /// <summary>
        /// 返回试卷中所有试题外部信息ID,插入试卷引用的试题表有用,全部保存成功才插入
        /// </summary>     
        public List<Guid> 保存下载试卷(LoveKaoExamEntities db, List<string> listBelongSort)
        {
            //全部试题的外部信息ID
            List<Guid> listProblemOutsideId = new List<Guid>();
            //新题的外部信息ID集合
            List<Guid> listNewProblemOutsideId = new List<Guid>();
            //把试卷中所有的试题内容ID,试题外部信息ID取出来
            List<Guid> listProblemContentId = new List<Guid>();
            foreach (试卷中大题 testType in this.试卷中大题集合)
            {
                foreach (试卷大题中试题 testProblem in testType.试卷大题中试题集合)
                {
                    listProblemContentId.Add(testProblem.试题内容ID);
                    JObject bo = JObject.Parse(testProblem.试题内容Json);
                    string problemOutsideIdStr = bo["content"]["试题外部信息ID"].ToString();
                    problemOutsideIdStr = problemOutsideIdStr.Replace("\"", "");
                    Guid problemOutsideId = new Guid(problemOutsideIdStr);
                    listProblemOutsideId.Add(problemOutsideId);
                    string subJsonStr = string.Empty;
                    //若是复合题,则把子小题的Json加入到复合题的Json
                    if (testProblem.子小题集合 != null)
                    {
                        foreach (试卷大题中试题 subTestProblem in testProblem.子小题集合)
                        {
                            JObject subBo = JObject.Parse(subTestProblem.试题内容Json);
                            string subJson = subBo["content"].ToString();
                            subJsonStr += subJson+",";
                        }
                        if (subJsonStr.Length > 0)
                        {
                            subJsonStr = subJsonStr.Remove(subJsonStr.Length - 1);
                        }
                    }
                    subJsonStr = "\"子小题集合\":[" + subJsonStr + "]";
                    testProblem.试题内容Json = testProblem.试题内容Json
                        .Replace("" + testProblem.试题内容ID + "\",", "" + testProblem.试题内容ID + "\","+subJsonStr+",");
                }
            }
            //查询已存在的试题,已存在的则不必插入了
            List<试题内容表> listExistProblemContent = db.试题内容表.Where(a => listProblemContentId.Contains(a.爱考网ID)
                && a.操作人ID == 用户信息.CurrentUser.用户ID).ToList();
            List<Guid> listExistProblemContentLoveKaoId = listExistProblemContent.Select(a => a.爱考网ID).ToList();
            List<Guid> listNotExistProblemContentId = listProblemContentId.Except(listExistProblemContentLoveKaoId).ToList();
             //查询已存在的试题外部信息ID,若试题外部信息存在,而试题内容不存在,则只需添加试题内容即可
            List<Guid> listExistProblemOutsideId = db.试题外部信息表.Where(a => listProblemOutsideId.Contains(a.爱考网ID)
                &&a.创建人ID==用户信息.CurrentUser.用户ID).Select(a => a.爱考网ID).ToList();
            试卷内容表 testContent = new 试卷内容表();
            testContent.ID = this.ID;
            testContent.名称 = this.名称;
            testContent.试卷外部信息ID = this.试卷外部信息ID;
            testContent.说明 = "";
            testContent.提交备注 = "";
            testContent.提交人ID = 用户信息.CurrentUser.用户ID;
            testContent.提交时间 = DateTime.Now;
            //随机一个秒数,使创建时间不在同一秒
            Random random = new Random();
            DateTime time = DateTime.Now;
            //记录随机的秒数,以避免重复
            List<int> listSeconds = new List<int>();
            for (int i = 0; i < this.试卷中大题集合.Count; i++)
            {
                试卷中大题表 type = new 试卷中大题表();
                type.ID = Guid.NewGuid();
                type.多选题评分策略 = 0;
                type.名称 = this.试卷中大题集合[i].名称;
                type.顺序 = Convert.ToByte(i);
                type.说明 = "";
                for (int j = 0; j < this.试卷中大题集合[i].试卷大题中试题集合.Count; j++)
                {
                    int seconds = random.Next(0, 300);
                    if (listSeconds.Contains(seconds))
                    {
                        seconds = random.Next(0, 300);
                    }
                    listSeconds.Add(seconds);
                    试题外部信息 outside = new 试题外部信息();
                    outside.创建时间=time.AddSeconds(seconds);
                    outside.最新更新时间=time.AddSeconds(seconds);

                    试卷大题中试题表 problem = new 试卷大题中试题表();
                    problem.ID = Guid.NewGuid();
                    problem.每小题分值 = this.试卷中大题集合[i].试卷大题中试题集合[j].每小题分值;

                    string 试题Json = this.试卷中大题集合[i].试卷大题中试题集合[j].试题内容Json;
                    Guid contentId = this.试卷中大题集合[i].试卷大题中试题集合[j].试题内容ID;
                    JObject bo = JObject.Parse(试题Json);
                    string problemOutsideIdStr = bo["content"]["试题外部信息ID"].ToString();
                    problemOutsideIdStr = problemOutsideIdStr.Replace("\"", "");
                    Guid problemOutsideId = new Guid(problemOutsideIdStr);
                    //若是不存在的新题,插入新题
                    if (listNotExistProblemContentId.Contains(contentId))
                    {
                        Dictionary<Guid,Guid> dic=new Dictionary<Guid,Guid>();
                        listNewProblemOutsideId.Add(problemOutsideId);
                        试题Json = 试题外部信息.替换试题图片路径(试题Json,用户信息.CurrentUser.用户名);
                        if (listExistProblemOutsideId.Contains(problemOutsideId))
                        {
                            outside.爱考网ID = problemOutsideId;
                            dic=试题外部信息.保存下载试卷中试题(outside, 试题Json, listBelongSort, true, db);
                            contentId = dic.Where(a => a.Key == contentId).First().Value;
                        }
                        else
                        {
                            dic =试题外部信息.保存下载试卷中试题(outside, 试题Json, listBelongSort, false, db);
                            contentId = dic.Where(a => a.Key == contentId).First().Value;
                        }
                        if (this.试卷中大题集合[i].试卷大题中试题集合[j].子小题集合 != null)
                        {
                            for (int m = 0; m < this.试卷中大题集合[i].试卷大题中试题集合[j].子小题集合.Count; m++)
                            {
                                Guid subContentId = dic.Where(a => a.Key == this.试卷中大题集合[i].试卷大题中试题集合[j]
                                    .子小题集合[m].试题内容ID).First().Value;
                                试卷大题中试题表 subProblem = new 试卷大题中试题表();
                                subProblem.ID = Guid.NewGuid();
                                subProblem.每小题分值 = this.试卷中大题集合[i].试卷大题中试题集合[j].子小题集合[m].每小题分值;
                                subProblem.试题内容ID = subContentId;
                                subProblem.顺序 = Convert.ToByte(m);
                                type.试卷大题中试题表.Add(subProblem);
                            }
                        }

                        listNotExistProblemContentId.Remove(contentId);
                    }
                    else
                    {
                        contentId = listExistProblemContent.First(a => a.爱考网ID == contentId).ID;
                    }
                    problem.试题内容ID = contentId;
                    problem.顺序 = Convert.ToByte(j);
                    type.试卷大题中试题表.Add(problem);

                }
                testContent.试卷中大题表.Add(type);
            }
            db.试卷内容表.AddObject(testContent);
            db.SaveChanges();
            return listProblemOutsideId;
        }
예제 #13
0
        public void 保存(LoveKaoExamEntities db, Guid 试卷内容ID)
        {
            试卷内容表 testContent = new 试卷内容表();
            testContent.ID = 试卷内容ID;
            testContent.名称 = this.名称;
            testContent.试卷外部信息ID = this.试卷外部信息ID;
            testContent.说明 = this.说明;
            testContent.提交备注 = this.提交备注;
            testContent.提交人ID = this.提交人ID;
            testContent.提交时间 = DateTime.Now;

            for (int i = 0; i < this.试卷中大题集合.Count; i++)
            {
                试卷中大题表 type = new 试卷中大题表();
                type.ID = Guid.NewGuid();
                type.多选题评分策略 = this.试卷中大题集合[i].多选题评分策略;
                type.名称 = this.试卷中大题集合[i].名称;
                type.顺序 = Convert.ToByte(i);
                type.说明 = this.试卷中大题集合[i].说明;

                for (int j = 0; j < this.试卷中大题集合[i].试卷大题中试题集合.Count; j++)
                {
                    if (this.试卷中大题集合[i].试卷大题中试题集合[j].子小题集合 != null)
                    {
                        foreach (试卷大题中试题 testProblem in this.试卷中大题集合[i].试卷大题中试题集合[j].子小题集合)
                        {
                            试卷大题中试题表 dbTestProblem = new 试卷大题中试题表();
                            dbTestProblem.ID = Guid.NewGuid();
                            dbTestProblem.每小题分值 = testProblem.每小题分值;
                            dbTestProblem.试题内容ID = testProblem.试题内容ID;
                            type.试卷大题中试题表.Add(dbTestProblem);
                        }
                    }

                    试卷大题中试题表 problem = new 试卷大题中试题表();
                    problem.ID = Guid.NewGuid();
                    problem.每小题分值 = this.试卷中大题集合[i].试卷大题中试题集合[j].每小题分值;
                    problem.试题内容ID = this.试卷中大题集合[i].试卷大题中试题集合[j].试题内容ID;
                    problem.顺序 = Convert.ToByte(j);
                    type.试卷大题中试题表.Add(problem);

                }
                testContent.试卷中大题表.Add(type);
            }
            db.试卷内容表.AddObject(testContent);
            db.SaveChanges();
        }
예제 #14
0
        public override void 保存(LoveKaoExamEntities db, string Json字符串)
        {
            试题内容表 content = new 试题内容表();
            content.ID = this.ID;
            content.操作人ID = this.操作人ID;
            content.操作时间 = DateTime.Now;
            content.解题思路 = this.解题思路;
            content.试题外部信息ID = this.试题外部信息ID;
            content.题干HTML = this.题干HTML;
            content.题干文本 = this.题干文本;
            content.小题型Enum = this.小题型Enum;
            content.难易度 = this.难易度;
            JObject bo = JObject.Parse(Json字符串);
            for (int i = 0; i < this.子小题集合.Count; i++)
            {
                switch (this.子小题集合[i].小题型Enum)
                {
                    //单选题
                    case 11:
                        {
                            string singleJson = bo["子小题集合"][i].ToString();
                            JavaScriptSerializer jss = new JavaScriptSerializer();
                            单选题 single = jss.Deserialize<单选题>(singleJson);
                            单选题.给单选题选项赋值新ID(single);
                            single.操作人ID = this.操作人ID;
                            single.试题外部信息ID = this.试题外部信息ID;
                            single.父试题内容ID = content.ID;
                            single.爱考网ID = this.子小题集合[i].爱考网ID;
                            single.ID = this.子小题集合[i].ID;
                            试题内容表 singleContent = single.类映射表赋值();
                            singleContent.父试题内容ID = content.ID;
                            singleContent.本题在复合题中顺序 = Convert.ToByte(i);
                            content.试题内容表1.Add(singleContent);
                            break;
                        }
                    //多选题
                    case 12:
                        {
                            string multiJson = bo["子小题集合"][i].ToString();
                            JavaScriptSerializer jss = new JavaScriptSerializer();
                            多选题 multi = jss.Deserialize<多选题>(multiJson);
                            多选题.给多选题选项赋值新ID(multi);
                            multi.操作人ID = this.操作人ID;
                            multi.试题外部信息ID = this.试题外部信息ID;
                            multi.父试题内容ID = content.ID;
                            multi.爱考网ID = this.子小题集合[i].爱考网ID;
                            multi.ID = this.子小题集合[i].ID;
                            试题内容表 multiContent = multi.类映射表赋值();
                            multiContent.父试题内容ID = content.ID;
                            multiContent.本题在复合题中顺序 = Convert.ToByte(i);
                            content.试题内容表1.Add(multiContent);
                            break;
                        }
                    //填空题
                    case 13:
                        {
                            string fillJson = bo["子小题集合"][i].ToString();
                            JavaScriptSerializer jss = new JavaScriptSerializer();
                            填空题 fill = jss.Deserialize<填空题>(fillJson);
                            fill.操作人ID = this.操作人ID;
                            fill.试题外部信息ID = this.试题外部信息ID;
                            fill.父试题内容ID = content.ID;
                            fill.爱考网ID = this.子小题集合[i].爱考网ID;
                            fill.ID = this.子小题集合[i].ID;
                            试题内容表 fillContent = fill.类映射表赋值();
                            fillContent.父试题内容ID = content.ID;
                            fillContent.本题在复合题中顺序 = Convert.ToByte(i);
                            content.试题内容表1.Add(fillContent);
                            break;
                        }
                    case 14:
                        {
                            string dictionJson = bo["子小题集合"][i].ToString();
                            JavaScriptSerializer jss = new JavaScriptSerializer();
                            选词填空 diction = jss.Deserialize<选词填空>(dictionJson);
                            选词填空.给选词填空选项赋值新ID(diction);
                            diction.操作人ID = this.操作人ID;
                            diction.试题外部信息ID = this.试题外部信息ID;
                            diction.父试题内容ID = content.ID;
                            diction.爱考网ID = this.子小题集合[i].爱考网ID;
                            diction.ID = this.子小题集合[i].ID;
                            试题内容表 dictionContent = diction.类映射表赋值();
                            dictionContent.父试题内容ID = content.ID;
                            dictionContent.本题在复合题中顺序 = Convert.ToByte(i);
                            content.试题内容表1.Add(dictionContent);
                            break;
                        }
                    case 15:
                        {
                            string clozeJson = bo["子小题集合"][i].ToString();
                            JavaScriptSerializer jss = new JavaScriptSerializer();
                            完形填空 cloze = jss.Deserialize<完形填空>(clozeJson);
                            完形填空.给完形填空选项赋值新ID(cloze);
                            cloze.操作人ID = this.操作人ID;
                            cloze.试题外部信息ID = this.试题外部信息ID;
                            cloze.父试题内容ID = content.ID;
                            cloze.爱考网ID = this.子小题集合[i].爱考网ID;
                            cloze.ID = this.子小题集合[i].ID;
                            试题内容表 clozeContent = cloze.类映射表赋值();
                            clozeContent.父试题内容ID = content.ID;
                            clozeContent.本题在复合题中顺序 = Convert.ToByte(i);
                            content.试题内容表1.Add(clozeContent);
                            break;
                        }
                    //判断题
                    case 20:
                        {
                            string singleJson = bo["子小题集合"][i].ToString();
                            JavaScriptSerializer jss = new JavaScriptSerializer();
                            判断题 judge = jss.Deserialize<判断题>(singleJson);
                            judge.操作人ID = this.操作人ID;
                            judge.试题外部信息ID = this.试题外部信息ID;
                            judge.父试题内容ID = content.ID;
                            judge.爱考网ID = this.子小题集合[i].爱考网ID;
                            judge.ID = this.子小题集合[i].ID;
                            试题内容表 judgeContent = judge.类映射表赋值();
                            judgeContent.父试题内容ID = content.ID;
                            judgeContent.本题在复合题中顺序 = Convert.ToByte(i);
                            content.试题内容表1.Add(judgeContent);
                            break;
                        }
                    case 30:
                        {
                            string linkJson = bo["子小题集合"][i].ToString();
                            JavaScriptSerializer jss = new JavaScriptSerializer();
                            连线题 link = jss.Deserialize<连线题>(linkJson);
                            连线题.给连线题选项赋值新ID(link);
                            link.操作人ID = this.操作人ID;
                            link.试题外部信息ID = this.试题外部信息ID;
                            link.父试题内容ID = content.ID;
                            link.爱考网ID = this.子小题集合[i].爱考网ID;
                            link.ID = this.子小题集合[i].ID;
                            试题内容表 linkContent = link.类映射表赋值();
                            linkContent.父试题内容ID = content.ID;
                            linkContent.本题在复合题中顺序 = Convert.ToByte(i);
                            content.试题内容表1.Add(linkContent);
                            break;
                        }
                    //问答题
                    case 60:
                    case 61:
                    case 62:
                    case 63:
                    case 64:
                    case 65:
                    case 66:
                    case 67:
                    case 68:
                    case 69:
                        {
                            string questionAnswerJson = bo["子小题集合"][i].ToString();
                            JavaScriptSerializer jss = new JavaScriptSerializer();
                            问答题 questionAnswer = jss.Deserialize<问答题>(questionAnswerJson);
                            questionAnswer.操作人ID = this.操作人ID;
                            questionAnswer.试题外部信息ID = this.试题外部信息ID;
                            questionAnswer.父试题内容ID = content.ID;
                            questionAnswer.爱考网ID = this.子小题集合[i].爱考网ID;
                            questionAnswer.ID = this.子小题集合[i].ID;
                            试题内容表 questionAnswerContent = questionAnswer.类映射表赋值();
                            questionAnswerContent.父试题内容ID = content.ID;
                            questionAnswerContent.本题在复合题中顺序 = Convert.ToByte(i);
                            content.试题内容表1.Add(questionAnswerContent);
                            break;
                        }

                }
            }
            content.Json字符串 = this.转化成Json带答案();
            content.爱考网ID = this.爱考网ID;
            db.试题内容表.AddObject(content);
            db.SaveChanges();
        }
        public override void 保存(LoveKaoExamEntities db, string Json字符串)
        {
            试题内容表 content = new 试题内容表();
            content.ID = this.ID;
            content.操作人ID = this.操作人ID;
            content.操作时间 = DateTime.Now;
            content.解题思路 = this.解题思路;
            content.试题外部信息ID = this.试题外部信息ID;
            content.题干HTML = this.题干HTML;
            content.题干文本 = this.题干文本;
            content.小题型Enum = this.小题型Enum;
            content.爱考网ID = this.爱考网ID;
            content.难易度 = this.难易度;

            for (int i = 0; i < this.子小题集合.Count; i++)
            {
                this.子小题集合[i].本题在复合题中顺序 = Convert.ToByte(i);
                this.子小题集合[i].ID = Guid.NewGuid();
            }
            var subContentGroup = this.子小题集合.GroupBy(a => a.选项组ID).ToList();
            for (int j = 0; j < subContentGroup.Count; j++)
            {
                自由题选项组表 dbGroup = new 自由题选项组表();
                dbGroup.ID = subContentGroup[j].Key;
                选项组 newGroup = new 选项组();
                foreach (选项组 group in this.选项组集合)
                {
                    if (subContentGroup[j].Key == group.ID)
                    {
                        newGroup = group;
                    }
                }
                for (int k = 0; k < newGroup.选项集合.Count; k++)
                {
                    自由题选项表 choice = new 自由题选项表();
                    choice.ID = newGroup.选项集合[k].ID;
                    choice.顺序 = Convert.ToByte(k);
                    choice.选项内容HTML = newGroup.选项集合[k].选项内容HTML;
                    choice.选项内容文本 = newGroup.选项集合[k].选项内容文本;
                    dbGroup.自由题选项表.Add(choice);
                }

                subContentGroup[j].ElementAt(0).父试题内容ID = content.ID;
                试题内容表 dbSubContent = new 试题内容表();
                dbSubContent.ID = subContentGroup[j].ElementAt(0).ID;
                dbSubContent.操作人ID = this.操作人ID;
                dbSubContent.操作时间 = DateTime.Now;
                dbSubContent.解题思路 = subContentGroup[j].ElementAt(0).解题思路;
                dbSubContent.试题外部信息ID = this.试题外部信息ID;
                dbSubContent.题干HTML = subContentGroup[j].ElementAt(0).题干HTML;
                dbSubContent.题干文本 = subContentGroup[j].ElementAt(0).题干文本;
                dbSubContent.小题型Enum = subContentGroup[j].ElementAt(0).小题型Enum;
                dbSubContent.本题在复合题中顺序 = subContentGroup[j].ElementAt(0).本题在复合题中顺序;
                dbSubContent.父试题内容ID = content.ID;
                dbSubContent.Json字符串 = subContentGroup[j].ElementAt(0).转化成Json带答案();
                dbSubContent.爱考网ID = subContentGroup[j].ElementAt(0).爱考网ID;

                自由题选项空格答案表 answer = new 自由题选项空格答案表();
                answer.ID = Guid.NewGuid();
                answer.自由题选项ID = subContentGroup[j].ElementAt(0).答案ID;

                自由题空格表 space = new 自由题空格表();
                space.ID = Guid.NewGuid();
                space.空格类型 = 0;
                space.顺序 = 0;
                space.自由题选项组表 = dbGroup;
                space.自由题选项空格答案表.Add(answer);
                dbSubContent.自由题空格表.Add(space);
                content.试题内容表1.Add(dbSubContent);

                for (int m = 1; m < subContentGroup[j].Count(); m++)
                {
                    subContentGroup[j].ElementAt(m).父试题内容ID = content.ID;
                    试题内容表 dbSubContent1 = new 试题内容表();
                    dbSubContent1.ID = subContentGroup[j].ElementAt(m).ID;
                    dbSubContent1.操作人ID = this.操作人ID;
                    dbSubContent1.操作时间 = DateTime.Now;
                    dbSubContent1.解题思路 = subContentGroup[j].ElementAt(m).解题思路;
                    dbSubContent1.试题外部信息ID = this.试题外部信息ID;
                    dbSubContent1.题干HTML = subContentGroup[j].ElementAt(m).题干HTML;
                    dbSubContent1.题干文本 = subContentGroup[j].ElementAt(m).题干文本;
                    dbSubContent1.小题型Enum = subContentGroup[j].ElementAt(m).小题型Enum;
                    dbSubContent1.本题在复合题中顺序 = subContentGroup[j].ElementAt(m).本题在复合题中顺序;
                    dbSubContent1.父试题内容ID = content.ID;
                    dbSubContent1.Json字符串 = subContentGroup[j].ElementAt(m).转化成Json带答案();
                    dbSubContent1.爱考网ID = subContentGroup[j].ElementAt(m).爱考网ID;

                    自由题选项空格答案表 answer1 = new 自由题选项空格答案表();
                    answer1.ID = Guid.NewGuid();
                    answer1.自由题选项ID = subContentGroup[j].ElementAt(m).答案ID;

                    自由题空格表 space1 = new 自由题空格表();
                    space1.ID = Guid.NewGuid();
                    space1.空格类型 = 0;
                    space1.顺序 = 0;
                    space1.自由题选项组ID = newGroup.ID;
                    space1.自由题选项空格答案表.Add(answer1);
                    dbSubContent1.自由题空格表.Add(space1);
                    content.试题内容表1.Add(dbSubContent1);
                }
            }
            content.Json字符串 = this.转化成Json带答案();
            db.试题内容表.AddObject(content);
            db.SaveChanges();
        }
예제 #16
0
 private static void 添加绑定账号(string 用户名, string 密码, string 邮箱)
 {
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     Guid hostUserId=用户信息.CurrentUser.用户ID;
     if (db.绑定账号表.Any(a => a.本地账号ID == hostUserId && a.爱考网账号 == 用户名) == false)
     {
         绑定账号表 bind = new 绑定账号表();
         bind.本地账号ID = hostUserId;
         bind.爱考网账号 = 用户名;
         bind.爱考网密码 = 加密字符串(密码);
         bind.爱考网邮箱 = 邮箱;
         bind.绑定时间 = DateTime.Now;
         db.绑定账号表.AddObject(bind);
         db.SaveChanges();
     }
 }
예제 #17
0
 private static void 更新绑定账号(string 用户名, string 密码, string 邮箱)
 {
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     //删除原来的
     绑定账号表 oldBind = db.绑定账号表.Where(a => a.本地账号ID == 用户信息.CurrentUser.用户ID).FirstOrDefault();
     if (oldBind != null)
     {
         db.绑定账号表.DeleteObject(oldBind);
     }
     //添加新的
     绑定账号表 bind = new 绑定账号表();
     bind.本地账号ID = 用户信息.CurrentUser.用户ID;
     bind.爱考网账号 = 用户名;
     bind.爱考网密码 = 加密字符串(密码);
     bind.爱考网邮箱 = 邮箱;
     bind.绑定时间 = DateTime.Now;
     db.绑定账号表.AddObject(bind);
     db.SaveChanges();
 }
 public static void 删除试题(Guid 试题外部信息ID)
 {
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     试题外部信息表 problem = db.试题外部信息表.FirstOrDefault(a => a.ID == 试题外部信息ID);
     异常处理.删除修改权限判断(problem.创建人ID);
     problem.试题状态Enum = 1;
     db.SaveChanges();
 }
예제 #19
0
 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();
     }
 }
예제 #20
0
 public static void 删除练习设置(Guid 试卷内容ID)
 {
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     练习设置表 exerciseSet = db.练习设置表.FirstOrDefault(a=>a.试卷内容ID==试卷内容ID);
     //只有设置人才能删除
     异常处理.删除修改权限判断(exerciseSet.设置人ID);
     db.练习设置表.DeleteObject(exerciseSet);
     //删除考生范围
     List<考生范围表> listArea = db.考生范围表.Where(a => a.相关ID == 试卷内容ID).ToList();
     foreach (var area in listArea)
     {
         db.考生范围表.DeleteObject(area);
     }
     //删除考生做过的练习记录
     List<考生做过的试卷表> listMemberDoneTest = db.考生做过的试卷表.Where(a => a.类型 == 0 && a.相关ID == 试卷内容ID).ToList();
     foreach (var memberDoneTest in listMemberDoneTest)
     {
         db.考生做过的试卷表.DeleteObject(memberDoneTest);
     }
     db.SaveChanges();
 }
 public static void 删除考生未完成的试卷记录(Guid 考生做过的试卷ID)
 {
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     考生做过的试卷表 memberDoneTest = db.考生做过的试卷表.First(a => a.ID == 考生做过的试卷ID);
     db.考生做过的试卷表.DeleteObject(memberDoneTest);
     db.SaveChanges();
 }
예제 #22
0
 /// <summary>
 /// 返回0成功,1部门名已存在
 /// </summary>
 public static int 添加部门(部门 部门)
 {
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     if (db.部门表.Any(a => a.名称 == 部门.名称) == true)
     {
         return 1;
     }
     部门表 department = new 部门表();
     department.ID = 部门.ID;
     department.名称 = 部门.名称;
     department.上级部门ID = 部门.上级部门ID;
     department.添加人ID = 部门.创建人ID;
     department.添加时间 = DateTime.Now;
     db.部门表.AddObject(department);
     db.SaveChanges();
     return 0;
 }
예제 #23
0
 public static void 删除考试设置(Guid 考试设置ID)
 {
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     考试设置表 examSet = db.考试设置表.FirstOrDefault(a=>a.ID==考试设置ID);
     //只有设置人才能删除
     异常处理.删除修改权限判断(examSet.设置人ID);
     //考试时间内不能删除
     if (DateTime.Now >= examSet.考试开始时间 && DateTime.Now <= examSet.考试结束时间)
     {
         throw new Exception("考试时间内不能删除!");
     }
     db.考试设置表.DeleteObject(examSet);
     //删除考生范围
     List<考生范围表> listArea = db.考生范围表.Where(a => a.相关ID == 考试设置ID).ToList();
     foreach (var area in listArea)
     {
         db.考生范围表.DeleteObject(area);
     }
     //删除考生做过的练习记录
     List<考生做过的试卷表> listMemberDoneTest = db.考生做过的试卷表.Where(a => a.类型 == 1 && a.相关ID == 考试设置ID).ToList();
     foreach (var memberDoneTest in listMemberDoneTest)
     {
         db.考生做过的试卷表.DeleteObject(memberDoneTest);
     }
     db.SaveChanges();
 }
예제 #24
0
 public override void 保存(LoveKaoExamEntities db, string Json字符串)
 {
     试题内容表 problemContent = this.类映射表赋值();
     db.试题内容表.AddObject(problemContent);
     db.SaveChanges();
 }
 public static void 修改草稿试卷(List<string> 分类列表, 试卷内容 试卷内容, Guid 试卷外部信息ID, byte 试卷状态Enum)
 {
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     试卷外部信息表 outsideTable = db.试卷外部信息表.FirstOrDefault(a => a.ID == 试卷外部信息ID);
     List<string> listBelongSort = 所属分类.所属分类处理(分类列表, outsideTable.创建人ID, db);
     if (outsideTable.试卷状态Enum == 1)
     {
         throw new Exception("该试卷已被删除!");
     }
     outsideTable.试卷状态Enum = 试卷状态Enum;
     outsideTable.最新更新时间 = DateTime.Now;
     所属分类.修改相关信息更新所属分类(listBelongSort, 1, outsideTable.创建人ID, outsideTable.ID, db);
     if (试卷内容 != null)
     {
         试卷内容表 dbContent = db.试卷内容表.FirstOrDefault(a => a.ID == 试卷内容.ID);
         db.试卷内容表.DeleteObject(dbContent);
         //db.SaveChanges();
         试卷内容.保存(db, 试卷内容.ID);
         db.SaveChanges();
     }
 }
예제 #26
0
 /// <summary>
 /// 返回0成功,1编号重复,2邮箱重复
 /// </summary>      
 public static int 添加用户(用户 用户)
 {
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     //判断编号是否存在
     if (db.用户表.Any(a => a.编号 == 用户.编号) == true)
     {
         return 1;
     }
     if (String.IsNullOrEmpty(用户.邮箱) == false)
     {
         //判断邮箱是否存在
         if (db.用户表.Any(a => a.邮箱 == 用户.邮箱) == true)
         {
             return 2;
         }
     }
     用户表 user = new 用户表();
     user.ID = Guid.NewGuid();
     user.编号 = 用户.编号;
     if (用户.角色 == 0)
     {
         user.部门ID = 用户.部门ID;
     }
     user.角色 = 用户.角色;
     user.密码 = "123456";
     user.姓名 = 用户.姓名;
     user.性别 = 用户.性别;
     user.邮箱 = 用户.邮箱;
     user.添加时间 = DateTime.Now;
     db.用户表.AddObject(user);
     db.SaveChanges();
     return 0;
 }
        /// <summary>
        /// 返回0上传成功,1账号未绑定,2绑定账号被禁用,3该试卷已经上传过
        /// </summary>     
        public static int 上传试卷(Guid 试卷外部信息ID, out List<试题外部信息> 已存在试题集合)
        {
            try
            {
                LoveKaoExamEntities db = new LoveKaoExamEntities();
                //获取绑定账号信息
                绑定账号表 bind = db.绑定账号表.Where(a => a.本地账号ID == 用户信息.CurrentUser.用户ID).FirstOrDefault();
                if (bind == null)
                {
                    异常处理.抛出异常(-1);
                    已存在试题集合 = new List<试题外部信息>();
                    return 1;
                }
                试卷外部信息 试卷外部信息 = 试卷外部信息查询.Where(a => a.ID == 试卷外部信息ID).First();
                试卷内容.给试卷内容中试题内容Json赋值(试卷外部信息.当前试卷内容, false);
                LoveKaoServiceReference.试卷外部信息 outsideWCF = 把试卷外部信息转化成试卷外部信息WCF(试卷外部信息);
                LoveKaoServiceReference.试卷内容 contentWCF = 把试卷内容转化成试卷内容WCF(试卷外部信息.当前试卷内容);
                outsideWCF.当前试卷内容 = contentWCF;
                List<Guid> listNewUploadProblemOutsideId = new List<Guid>();
                LoveKaoServiceReference.LoveKaoServiceInterfaceClient client = new LoveKaoServiceReference.LoveKaoServiceInterfaceClient();
                int result = client.上传试卷(out listNewUploadProblemOutsideId, outsideWCF, bind.爱考网账号, bind.爱考网密码);
                client.Close();
                if (result == 1)
                {
                    异常处理.抛出异常(-1);
                }
                else if (result == 2)
                {
                    异常处理.抛出异常(1);
                }
                else if (result == 3)
                {
                    throw new Exception("你已上传过该试卷!");
                }
                else if (result == 4)
                {
                    异常处理.抛出异常(2);
                }
                //上传成功,更新试卷类型和试卷中新上传试题类型
                if (result == 0)
                {
                    List<Guid> listAllContentId = new List<Guid>();
                    foreach (试卷中大题 type in 试卷外部信息.当前试卷内容.试卷中大题集合)
                    {
                        listAllContentId.AddRange(type.试卷大题中试题集合.Select(a => a.试题内容ID).ToList());
                    }
                    List<Guid> listAllOutsideId = db.试题内容表.Where(a => listAllContentId.Contains(a.ID))
                        .Select(a => a.试题外部信息ID).Distinct().ToList();
                    List<Guid> listExistOutsideId = listAllOutsideId.Except(listNewUploadProblemOutsideId).ToList();
                    已存在试题集合 = 试题外部信息.试题外部信息查询.Where(a => listExistOutsideId.Contains(a.ID)).ToList();
                    试卷外部信息表 outside = db.试卷外部信息表.FirstOrDefault(a=>a.ID==试卷外部信息ID);
                    outside.试卷类型 = 1;
                    List<试题外部信息表> listOutside = db.试题外部信息表.Where(a => a.创建人ID == 用户信息.CurrentUser.用户ID
                        && listNewUploadProblemOutsideId.Contains(a.ID)).ToList();
                    foreach (试题外部信息表 outsideTable in listOutside)
                    {
                        outsideTable.试题类型 = 1;
                    }
                    db.SaveChanges();
                    return result;
                }
                else
                {
                    已存在试题集合 = new List<试题外部信息>();
                    return result;
                }

            }
            catch (Exception ex)
            {
                异常处理.Catch异常处理(ex.Message);
                throw;
            }
        }
예제 #28
0
 public static void 删除部门(Guid 部门ID)
 {
     异常处理.删除修改权限判断();
     LoveKaoExamEntities db = new LoveKaoExamEntities();
     部门表 department = db.部门表.First(a => a.ID == 部门ID);
     db.部门表.DeleteObject(department);
     db.SaveChanges();
 }
        public static void 删除试卷(Guid 试卷外部信息ID)
        {
            LoveKaoExamEntities db = new LoveKaoExamEntities();
            试卷外部信息表 outside = db.试卷外部信息表.FirstOrDefault(a => a.ID == 试卷外部信息ID);
            异常处理.删除修改权限判断(outside.创建人ID);
            outside.试卷状态Enum = 1;
            //若设置了考试或练习,则删除
            List<Guid> listContentId = db.试卷内容表.Where(a=>a.试卷外部信息ID==试卷外部信息ID).Select(a => a.ID).ToList();
            List<Guid> listExamSetId = db.考试设置表.Where(a => listContentId.Contains(a.试卷内容ID)).Select(a => a.ID).ToList();

            foreach (Guid examSetId in listExamSetId)
            {
                考试设置.删除考试设置(examSetId);
            }
            List<Guid> listExerciseSetId = db.练习设置表.Where(a => listContentId.Contains(a.试卷内容ID)).Select(a => a.试卷内容ID).ToList();
            foreach (Guid exerciseSetId in listExerciseSetId)
            {
                练习设置.删除练习设置(exerciseSetId);
            }
            db.SaveChanges();
        }
        private static void 修改草稿试题(试题外部信息 problemOutside,试题内容 problemContent, List<string> 分类列表, string 试题json字符串)
        {
            //using (TransactionScope scope = new TransactionScope())
            //{
                LoveKaoExamEntities db = new LoveKaoExamEntities();
                试题外部信息表 outsideTable = db.试题外部信息表.FirstOrDefault(a => a.ID == problemOutside.ID);
                List<string> listBelongSort = 所属分类.所属分类处理(分类列表, outsideTable.创建人ID, db);
                if (outsideTable.试题状态Enum == 1)
                {
                    throw new Exception("该试题已被删除!");
                }
                //原试题内容ID
                Guid oldContentId = outsideTable.试题内容ID;
                outsideTable.试题状态Enum = problemOutside.试题状态Enum;
                outsideTable.最新更新时间 = DateTime.Now;

                if (problemContent != null)
                {
                    outsideTable.试题查询内容 = problemContent.生成查询内容();
                    outsideTable.试题显示列 = problemContent.生成试题显示列();
                    outsideTable.试题内容ID = problemContent.ID;
                }

                所属分类.修改相关信息更新所属分类(listBelongSort, 0, outsideTable.创建人ID, outsideTable.ID, db);

                if (problemContent != null)
                {
                    outsideTable.试题内容ID = problemContent.ID;
                    试题内容表 dbContent = db.试题内容表.FirstOrDefault(a => a.ID == oldContentId);
                    List<自由题空格表> listSpace = db.自由题空格表.Where(a=>a.试题内容ID==oldContentId).ToList();
                    if (listSpace.Count != 0)
                    {
                        List<Guid> listGroupId = listSpace.Where(a => a.自由题选项组ID != null).GroupBy(a => a.自由题选项组ID).Select(a => a.Key.Value).ToList();
                        if (listGroupId.Count != 0)
                        {
                            List<自由题选项组表> listGroup = db.自由题选项组表.Where(a => listGroupId.Contains(a.ID)).ToList();
                            foreach (var group in listGroup)
                            {
                                db.自由题选项组表.DeleteObject(group);
                            }
                        }
                    }
                    db.试题内容表.DeleteObject(dbContent);
                    JObject bo = JObject.Parse(试题json字符串);
                    string json字符串 = bo["content"].ToString();
                    problemContent.保存(db, json字符串);
                }
                if (problemContent == null)
                {
                    db.SaveChanges();
                }
                //scope.Complete();
            //}
        }