public override void Execute() { Validate(); var state = State as ExamUserSubmitEventState; ExamsAccessor.AddAnswerSubmitTimes(state.ExamId); }
public override void Execute() { Validate(); var state = State as ExamUsedEventState; ExamsAccessor.AddUsedTimes(state.ExamId); }
/// <summary> /// 将<see cref="ExamUsers"/>类型转换为<see cref="UserExamSearchResultItem"/>类型数据 /// </summary> /// <param name="sourceData"><see cref="ExamUsers"/>源数据</param> /// <returns></returns> public IEnumerable <UserExamSearchResultItem> ConvertToSearchResult(IEnumerable <ExamUsers> sourceData) { if (sourceData == null) { yield break; } //得到用户集合 long[] userIds = sourceData.Select(p => p.UserId).ToArray(); var users = UsersAccessor.GetSimpleUsers(userIds); //得到考卷模板集合 long[] examIds = sourceData.Select(p => p.ExamId).ToArray(); var exams = ExamsAccessor.GetSimpleExams(examIds); //循环处理 foreach (var item in sourceData) { var user = users.FirstOrDefault(p => p.UserId == item.UserId); var exam = exams.FirstOrDefault(p => p.ExamId == item.ExamId); var result = new UserExamSearchResultItem { UserExamId = item.Id, UserId = item.UserId, ExamId = item.ExamId, ActualTime = item.Times, MarkingStatus = item.MarkingStatus, MarkingTime = item.MarkingTime, CreateTime = item.CreateTime, PostTime = item.PostTime, Score = item.Total }; if (user != null) { result.UserMobile = user.Mobile; result.UserName = user.Name; result.UserTitle = user.Title; } if (exam != null) { result.ExamTitle = exam.Title; result.ExamType = exam.ExamType; result.MaxTime = exam.Time; result.Total = exam.Total; result.Pass = exam.Pass; } yield return(result); } }
/// <summary> /// 设置状态为禁用 /// </summary> /// <returns></returns> public bool SetDisable() { ThrowExceptionIfValidateFailure(() => { if (!CanSetDisable()) { AddBrokenRule(ExamsManageFailureRule.STATUS_CANNOT_SET_DISABLED); } }); return(ExamsAccessor.SetStatus(ID, (int)ExamsStatus.DISABLED)); }
/// <summary> /// 执行搜索 /// </summary> /// <returns></returns> public PagerModel <Data.Entity.Exams> Search() { ThrowExceptionIfValidateFailure(); PagerModel <Data.Entity.Exams> pager = new PagerModel <Data.Entity.Exams>() { Index = PageIndex, Size = PageSize }; ExamsAccessor.GetList(pager, Keyword, courseId: CourseId, type: Type, status: Status); return(pager); }
/// <summary> /// 从<see cref="ExamsModifyState"/>对象更新考卷 /// </summary> /// <param name="state"></param> /// <returns></returns> public bool ModifyTo(ExamsModifyState state) { ThrowExceptionIfValidateFailure(() => { if (state == null) { AddBrokenRule(ExamsManageFailureRule.MODIFYSTATE_OBJECT_IS_NULL); } else { //考卷标题为Empty if (string.IsNullOrWhiteSpace(state.Title)) { AddBrokenRule(ExamsManageFailureRule.TITLE_CANNOT_EMPTY); } //该考卷未指定题库 var questionCount = state.Questions.SplitToLongArray().Count(); if (questionCount < 1) { AddBrokenRule(ExamsManageFailureRule.QUESTIONS_CANNOT_EMPTY); } //及格分不能大于等于总分是不允许的 if (state.Pass >= state.Total) { AddBrokenRule(ExamsManageFailureRule.PASS_MUST_LESS_THAN_TO_TOTAL); } //总分及各题分是否一致 var totalSum = state.RedioTotal + state.MultipleTotal + state.JudgeTotal + state.FillingTotal + state.AskTotal; if (totalSum != state.Total) { AddBrokenRule(ExamsManageFailureRule.TOTAL_NOT_EQUALS_SUM); } //如果有设置考卷的使用有效时间,则开始时间必须小于结束时间 if (state.StartTime.HasValue && state.EndTime.HasValue && state.StartTime.Value >= state.EndTime.Value) { AddBrokenRule(ExamsManageFailureRule.STARTTIME_MUST_BE_BEFORE_THE_ENDTIME); } } }); //映射数据实体对象后存储 var editExams = CreateNewExamsFor(state); return(ExamsAccessor.Update(editExams)); }
/// <summary> /// 保存考卷 /// </summary> /// <returns></returns> public bool Save() { ThrowExceptionIfValidateFailure(); var exam = new Data.Entity.Exams { ExamId = ID, UserId = Request.UserId, ExamType = Request.ExamType, Title = Request.Title, Questions = Request.Questions, CourseIds = Request.CourseIds, Remarks = Request.Remarks, Time = Request.Time, Pass = Request.Pass, Total = Request.Total, Status = (int)Status, Radio = Request.Radio, RedioTotal = Request.RedioTotal, Multiple = Request.Multiple, MultipleTotal = Request.Multiple, Judge = Request.Judge, JudgeTotal = Request.JudgeTotal, Filling = Request.Filling, FillingTotal = Request.FillingTotal, Ask = Request.Ask, AskTotal = Request.AskTotal, CreateTime = DateTime.Now, StartTime = Request.StartTime, EndTime = Request.EndTime, Answers = 0, UseCount = 0 }; return(ExamsAccessor.Insert(exam)); }