public ActionResult MyExam() { //获取我的考试信息 List <tbExamSendStudent> myTotalExamList = _examTestManager.GetMyExamList(CurrentUser.UserId); //相关的考试 List <tbExamination> examlist = _examinationManager.GetAllExamination(myTotalExamList.Select(p => p.RelationID)) .FindAll( p => p.PublishResult == 1 && p.ExamBeginTime.ToLocalTime() <= DateTime.Now && p.ExamEndTime.ToLocalTime() >= DateTime.Now); examlist = examlist.OrderByDescending(p => p.ExamBeginTime).Take(5).ToList(); var myExamListShow = new List <ExamTestShow>(); foreach (tbExamination exam in examlist) { tbExamSendStudent examuser = myTotalExamList.Find(p => p.RelationID == exam._id); myExamListShow.Add(new ExamTestShow { ExamUserID = examuser._id, StartTime = exam.ExamBeginTime.ToLocalTime(), EndTime = exam.ExamEndTime.ToLocalTime(), ExamLength = exam.ExamLength, ExamTitle = exam.ExaminationTitle }); } return(View(myExamListShow)); }
public JsonResult GetExamList(int type, string name, int pageIndex, int pageSize) { int total; //所有在学、已学的课程 var userreadcourselist = _learningRecord.GetMyLearningRecord(out total, CurrentTenant.TenantId, CurrentUser.UserId, new int[0], "", null, null, 2); //所有在学、已学的课程中的考试 var courseexamlist = _courseManager.GetUserCourseExamList(CurrentUser.UserId, 1, int.MaxValue); //所有在学、已学的课程中的考试信息 var examlist = _exampaperManager.GetAllExampaperRedundancy(courseexamlist.Select(p => p.ExampaperId)).FindAll(p => p.ExampaperTitle.Contains(name)); //我参与所有在学、已学的课程中的考试 var myTotalExamList = _examTestManager.GetMyExamList(CurrentUser.UserId, 1); var recordids = userreadcourselist.Select(p => p.RecordId).ToArray(); var examtmpids = examlist.Select(p => p._id).ToArray(); if (type == 0) { courseexamlist = courseexamlist.Where(p => (!myTotalExamList.Any(mt => recordids.Contains(mt.RelationID) && mt.ExamPaperID == p.ExampaperId)) && examtmpids.Contains(p.ExampaperId)).ToList(); courseexamlist = courseexamlist.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); } else if (type == 1) { courseexamlist = courseexamlist.Where(p => myTotalExamList.Any(mt => recordids.Contains(mt.RelationID) && mt.ExamPaperID == p.ExampaperId) && examtmpids.Contains(p.ExampaperId)).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); } var dataList = new List <object>(); foreach (var item in courseexamlist) { var tmp1 = userreadcourselist.FirstOrDefault(p => p.CourseId == item.CourseId); var tmp2 = examlist.FirstOrDefault(p => p._id == item.ExampaperId); if (tmp1 == null || tmp2 == null) { continue; } var tmp3 = myTotalExamList.FirstOrDefault(p => p.RelationID == tmp1.RecordId && p.ExamPaperID == item.ExampaperId); dataList.Add(new { tmp1.RecordId, item.CourseName, item.CourseId, FrontImageUrl = item.FrontImage == "default.png" || string.IsNullOrWhiteSpace(item.FrontImage) ? Url.Addr("~/UploadFiles/CourseFrontImages/default.png") : Url.Addr(item.FrontImage), item.ExampaperId, tmp2.ExampaperTitle, EuId = tmp3 == null ? 0 : tmp3._id, RemainingTime = tmp3 == null ? 0 : tmp3.RemainingTime, item.TimeLength, item.AllowTimes }); } return(Json(new { dataList }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 根据搜索值来查询考试 /// </summary> /// <param name="type">-1:全部;0:未参与;1:已参与</param> /// <param name="name"></param> /// <param name="top"></param> /// <returns></returns> public JsonResult GetSearchExamList(int type, string name, int pageIndex, int pageSize) { //获取我的考试信息 List <tbExamSendStudent> myTotalExamList = _examTestManager.GetMyExamList(CurrentUser.UserId); //相关的考试 var examlist = _examinationManager.GetAllExamination(myTotalExamList.Select(p => p.RelationID)).FindAll(p => p.PublishResult == 1 && (string.IsNullOrWhiteSpace(name) ? true : p.ExaminationTitle.ToUpper().Contains(name.ToUpper()))); var myexam = new List <object>(); if (type == -1) { //全部 var myTemp1 = myTotalExamList.Where(p => p.DoExamStatus < 2).Select(p => p.RelationID).ToArray(); var myTemp2 = myTotalExamList.Where(p => p.DoExamStatus >= 2).Select(p => p.RelationID).ToArray(); examlist = examlist.Where(p => (p.ExamEndTime.ToLocalTime() > DateTime.Now && myTemp1.Contains(p._id)) || (myTemp2.Contains(p._id))).OrderBy(p => p.ExamEndTime.ToLocalTime()).ToList(); var paperlist = _exampaperManager.GetAllExampaperRedundancy(examlist.Select(p => p.PaperID)); foreach (var item in examlist) { var tmp = myTotalExamList.Find(p => p.RelationID == item._id); var paperTmp = paperlist.Find(p => p._id == item.PaperID); myexam.Add(new { EuId = tmp._id, ExamTitle = item.ExaminationTitle, ExamBeginTime = item.ExamBeginTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss"), ExamEndTime = item.ExamEndTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss"), IsGoIn = (item.LeavePageTimes <= tmp.LeavePageTimes || item.TestTimes <= tmp.TestTimes || tmp.RemainingTime == 0) ? 0 : 1, Pass = item.AlreadySendScore == 1 ? tmp.IsPass : 0, TestTimes = item.TestTimes, GoInTestTimes = tmp.TestTimes, item.ExamLength, PassScore = (int)item.PassScore, TotalScore = paperTmp == null ? 0 : paperTmp.ExampaperScore }); } } else if (type == 0) { //未提交 var myTemp = myTotalExamList.Where(p => p.DoExamStatus < 2).Select(p => p.RelationID).ToArray(); examlist = examlist.Where(p => p.ExamEndTime.ToLocalTime() > DateTime.Now && myTemp.Contains(p._id)).OrderBy(p => p.ExamEndTime.ToLocalTime()).ToList(); var paperlist = _exampaperManager.GetAllExampaperRedundancy(examlist.Select(p => p.PaperID)); foreach (var item in examlist) { var tmp = myTotalExamList.Find(p => p.RelationID == item._id); var paperTmp = paperlist.Find(p => p._id == item.PaperID); myexam.Add(new { EuId = tmp._id, ExamTitle = item.ExaminationTitle, ExamBeginTime = item.ExamBeginTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss"), ExamEndTime = item.ExamEndTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss"), IsGoIn = item.ExamEndTime.ToLocalTime() > DateTime.Now ? ((item.LeavePageTimes <= tmp.LeavePageTimes || item.TestTimes <= tmp.TestTimes || tmp.RemainingTime == 0) ? 0 : 1) : 0, Pass = 0, TestTimes = item.TestTimes, GoInTestTimes = tmp.TestTimes, item.ExamLength, PassScore = (int)item.PassScore, TotalScore = paperTmp == null ? 0 : paperTmp.ExampaperScore, SurplusTime = (item.ExamEndTime.ToLocalTime() - DateTime.Now).TimespanDiff(), IsStart = item.ExamBeginTime.ToLocalTime() <= DateTime.Now ? 1 : 0 }); } } else if (type == 1) { //已提交 var myTemp = myTotalExamList.Where(p => p.DoExamStatus >= 2).Select(p => p.RelationID).ToArray(); var tmplist = examlist.Where(p => myTemp.Contains(p._id) && p.ExamEndTime.ToLocalTime() > DateTime.Now).OrderBy(p => p.ExamEndTime.ToLocalTime()).ToList(); tmplist.AddRange(examlist.Where(p => myTemp.Contains(p._id) && p.ExamEndTime.ToLocalTime() <= DateTime.Now).ToList()); examlist = tmplist; var paperlist = _exampaperManager.GetAllExampaperRedundancy(examlist.Select(p => p.PaperID)); foreach (var item in examlist) { var tmp = myTotalExamList.Find(p => p.RelationID == item._id); var paperTmp = paperlist.Find(p => p._id == item.PaperID); myexam.Add(new { EuId = tmp._id, ExamTitle = item.ExaminationTitle, ExamBeginTime = item.ExamBeginTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss"), ExamEndTime = item.ExamEndTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss"), IsGoIn = item.ExamEndTime.ToLocalTime() > DateTime.Now ? ((item.LeavePageTimes <= tmp.LeavePageTimes || item.TestTimes <= tmp.TestTimes || tmp.RemainingTime == 0) ? 0 : 1) : 0, Pass = item.AlreadySendScore == 1 ? tmp.IsPass : 0, TestTimes = item.TestTimes, GoInTestTimes = tmp.TestTimes, item.ExamLength, PassScore = (int)item.PassScore, TotalScore = paperTmp == null ? 0 : paperTmp.ExampaperScore, IsEnd = item.ExamEndTime.ToLocalTime() <= DateTime.Now ? 1 : 0, UserScore = item.AlreadySendScore == 1 ? tmp.Score.ToString() : "" }); } } myexam = myexam.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); return(Json(new { dataList = myexam }, JsonRequestBehavior.AllowGet)); }