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