public JsonResult SelfTest(string[] Answer, long stId) { HopuDBDataContext db = new HopuDBDataContext(); //判断时间是否在考试时间段内 bool commitAnswer = false; string userName = User.Identity.GetUserName(); if (!stId.ToString().Substring(0, 10).Equals(userName)) { return(Json(stId + "不存在!")); } var timeInfo = db.SelfTest.Where(a => a.StId == stId).Select(a => a); foreach (var item in timeInfo) { //如果结束时间大于当前时间,可以提交 if (Convert.ToDateTime(item.StartTime).AddMinutes(item.TimeLenth) > DateTime.Now.AddSeconds(-5))//给五秒的冗余时间 否则js倒计时0时提交会失败 { commitAnswer = true; break; } else { return(Json(false)); } } if (commitAnswer) { //据stId获取答案 var topicListResult = db.SelfTestInfo.Where(a => a.StId == stId).ToList().Select(c => new SelfTestNewTopicIdViewModel { TopicID = ToHmacsha1(c.TopicID.ToString(), userName), Answer = c.Answer, }); //答案集合 List <SelfTestNewTopicIdViewModel> AnswerList = topicListResult.OrderBy(s => s.TopicID).ToList(); //开始校验答案 List <SelfTestQAViewModel> result = new List <SelfTestQAViewModel>(); //先算出每题多少分 double itemScore = 100F / AnswerList.Count; double sumScore = 0; //校验答案 for (int i = 0; i < AnswerList.Count; i++) { if (AnswerList[i].Answer.Equals(Answer[i])) { SelfTestQAViewModel resultinfo = new SelfTestQAViewModel { UserAnswer = Answer[i], RealAnswer = AnswerList[i].Answer, IsTrue = true }; result.Add(resultinfo); sumScore += itemScore; } else { SelfTestQAViewModel resultinfo = new SelfTestQAViewModel { UserAnswer = Answer[i], RealAnswer = AnswerList[i].Answer, IsTrue = false }; result.Add(resultinfo); } } var selfTestScoreInfo = db.SelfTestScore.FirstOrDefault(a => a.StId == stId && a.UserName == User.Identity.GetUserName()); //如果是第一次提交答案 if (selfTestScoreInfo == null) { //将考试结果存入数据库 var selfTestScore = new SelfTestScore { StId = stId, RealUserName = GetRealUserName.GetRealName(User.Identity.GetUserId()), UserName = userName, EndTime = DateTime.Now, Score = Convert.ToInt32(Math.Round(sumScore, 0, MidpointRounding.AwayFromZero)) }; db.SelfTestScore.InsertOnSubmit(selfTestScore); db.SubmitChanges(); } else { return(Json(false)); } return(Json(result)); } return(Json(false)); }
public JsonResult UifiedTest(string[] Answer, int UtId) { string UserName = User.Identity.GetUserName(); bool commitAnswer = false; //判断时间是否在考试时间段内 var timeInfo = _uniteTest.GetUniteTestInfo(UtId); foreach (var item in timeInfo) { //如果结束时间大于当前时间,可以提交 if (Convert.ToDateTime(item.StartTime).AddMinutes(item.TimeLenth) > DateTime.Now.AddSeconds(-5))//给五秒的冗余时间 否则js倒计时0时提交会失败 { commitAnswer = true; break; } else { return Json(false); } } if (commitAnswer) { //此处和取题目必须一样 List<UnifiedTestNewTopicIdViewModel> answerList = _uniteTestInfo.GetUnifiedTestTopics(UtId, UserName).OrderBy(s => s.TopicID).ToList(); //开始校验答案 List<UnifiedTestQAViewModel> results = new List<UnifiedTestQAViewModel>();//成绩信息 //先算出每题多少分 double itemScore = 100F / answerList.Count; double sumScore = 0; //校验答案 for (int i = 0; i < answerList.Count; i++) { if (answerList[i].Answer.Equals(Answer[i])) { UnifiedTestQAViewModel resultinfo = new UnifiedTestQAViewModel { UserAnswer = Answer[i], RealAnswer = answerList[i].Answer, IsTrue = true }; results.Add(resultinfo); sumScore += itemScore; } else { UnifiedTestQAViewModel resultinfo = new UnifiedTestQAViewModel { UserAnswer = Answer[i], RealAnswer = answerList[i].Answer, IsTrue = false }; results.Add(resultinfo); } } //如果是第一次提交答案 var UniteTestScoreInfo = _uniteTestScore.GetUniteTestScore(UtId, UserName); if (!UniteTestScoreInfo.Any()) { //将考试结果存入数据库 UniteTestScore uniteTestScoreInfo = new UniteTestScore { UtId = UtId, RealUserName = GetRealUserName.GetRealName(User.Identity.GetUserId()), UserName = User.Identity.GetUserName(), EndTime = DateTime.Now, Score = Convert.ToInt32(Math.Round(sumScore, 0, MidpointRounding.AwayFromZero)) }; //如果存入成功 if (_uniteTestScore.InsertScore(uniteTestScoreInfo)) { return Json(results); } } else { return Json(false); } } return Json(false); }