public JsonResult GetSelfScore(int limit, int offset, string keyword, string sortOrder, string sortName)
        {
            HopuDBDataContext db       = new HopuDBDataContext();
            string            UserName = User.Identity.GetUserName();
            string            sql      = GetSelfSql(UserName, keyword, sortName, sortOrder);
            //数据请求
            var scoreList = db.ExecuteQuery <SelfTestScore>(sql).ToList();
            List <SelfTestScore> score = new List <SelfTestScore>();

            foreach (var i in scoreList)
            {
                SelfTestScore a = new SelfTestScore()
                {
                    Id           = i.Id,
                    StId         = i.StId,
                    RealUserName = i.RealUserName,
                    UserName     = i.UserName,
                    EndTime      = i.EndTime,
                    Score        = i.Score
                };
                score.Add(a);
            }
            var totalq = score.Count;
            var rowsq  = score.Skip(offset).Take(limit);

            return(Json(new
            {
                total = totalq,
                rows = rowsq
            }, JsonRequestBehavior.AllowGet));
        }
        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));
        }