/// <summary> /// 获取学员集合 /// </summary> /// <returns></returns> private List <Student> GetStudents() { ThrowExceptionIfValidateFailure(); var tempStudents = new List <Student>(); //获取学员学习计划集合 var studentPlans = UserStudyPlanAccessor.GetStudentStudyPlans(ID); //学员ID集合 var studentIds = studentPlans.Select(p => p.UserId).ToArray(); //根据学员ID集合获取学员信息 var students = UsersAccessor.GetUserList(studentIds); foreach (var user in students) { var plan = studentPlans.FirstOrDefault(p => p.UserId == user.UserId); tempStudents.Add(new Student { UserId = user.UserId, Email = user.Email, Mobile = user.Mobile, Title = user.Title, Name = user.Name, Username = user.Username, StudyStatus = plan.Status, Progress = plan.Progress, LastStudyTime = plan.UpdateTime }); } return(tempStudents); }
/// <summary> /// 统计我的学习计划 /// </summary> /// <returns></returns> public StudyPlanStatistics StatisticsForStudyPlan() { var plans = UserStudyPlanAccessor.GetPlansFor(ID); var result = new StudyPlanStatistics(); if (plans != null) { result.TotalNoStart = plans.Where(p => p.Status == (int)UserStudyPlanStatus.NOTSTARTED).Count(); result.TotalStudying = plans.Where(p => p.Status == (int)UserStudyPlanStatus.STUDYING).Count(); result.TotalDone = plans.Where(p => p.Status == (int)UserStudyPlanStatus.COMPLETE).Count(); } return(result); }
/// <summary> /// 执行搜索 /// </summary> public PagerModel <Data.Entity.UserStudyPlan> Search() { ThrowExceptionIfValidateFailure(); //定义用户学习计划查询器 PagerModel <Data.Entity.UserStudyPlan> pager = new PagerModel <Data.Entity.UserStudyPlan>() { Index = PageIndex, Size = PageSize }; //分页获取用户学习计划列表 UserStudyPlanAccessor.Get(pager, studentId: StudentId, status: StudyStatus); return(pager); }
public override void Execute() { Validate(); var state = State as UserStudingPlansStatisticsEventState; //学习中的计划状态,指:未开始,学习中的状态 var status = EnumUtility.GetEnumValues(typeof(UserStudyPlanStatus)).ToList(); //排除已学习完成的 status.Remove((int)UserStudyPlanStatus.COMPLETE); status.TrimExcess(); //学员 学习计划数量 int count = UserStudyPlanAccessor.GetPlansCount(state.UserId, status); //更新仓储数据 UserStudyAccessor.UpdateStudyPlans(state.UserId, count); }
/// <summary> /// 获取指定学员的学习进度信息 /// </summary> /// <returns></returns> private Student GetStudent(long studentId) { Student student = null; if (Students != null) { student = Students.FirstOrDefault(p => p.UserId == studentId); } else { //该学员的学习计划 var userPlan = UserStudyPlanAccessor.Get(ID, studentId); //学习信息 var user = UsersAccessor.Get(studentId); ThrowExceptionIfValidateFailure(() => { if (userPlan == null) { AddBrokenRule(StudyPlanEditFailureRule.STUDENT_NOT_EXISTS); } }); return(new Student { UserId = studentId, Email = user.Email, Mobile = user.Mobile, Username = user.Username, Name = user.Name, Title = user.Title, StudyStatus = userPlan.Status, Progress = userPlan.Progress, LastStudyTime = userPlan.UpdateTime }); } return(student); }
public override void Execute() { Validate(); //需要计算学习进度的学员及计划 var studentsPlans = GetStuentPlans(); //获取计划中的所有课程ID var allCourses = GetCourseIdsFor(studentsPlans?.Values); //所有课程对应的章节集合 var courseChapters = CourseAccessor.GetCourseChaptersFor(allCourses); List <UserStudyPlanProgressModel> studentProgressList = new List <UserStudyPlanProgressModel>(); if (studentsPlans == null) { return; } foreach (var item in studentsPlans) { //用户该课程相关的学习计划进度计算结果 Dictionary <long, float> planProgressResult = CalculatePlanProgress(item.Key, item.Value, courseChapters); foreach (var result in planProgressResult) { studentProgressList.Add(new UserStudyPlanProgressModel { StudentId = item.Key, PlanId = result.Key, Progress = result.Value, Status = (int)GetStatusFor(result.Value) }); } } //更新学习计划进度 UserStudyPlanAccessor.UpdateProgress(studentProgressList); }
/// <summary> /// 获取学员及计划 /// </summary> /// <returns></returns> private Dictionary <long, List <PlanCoursesModel> > GetStuentPlans() { Dictionary <long, List <PlanCoursesModel> > dic = new Dictionary <long, List <PlanCoursesModel> >(); if (state.StudentId.HasValue || state.StudentId > 0) { //当前学员持有该课程的计划 var studentPlans = StudyPlanCourseAccessor.GetStudyPlansCoursesFor(state.StudentId.Value, state.CourseId); dic.Add(state.StudentId.Value, studentPlans); } else { //所有持有该课程的计划 var plans = StudyPlanCourseAccessor.GetStudyPlansCoursesFor(state.CourseId); var planIds = plans.Select(p => p.PlanId).ToArray(); //啊其他取持有这些计划的学员 var studentPlanIdsDic = UserStudyPlanAccessor.GetStudentIdsFor(planIds); if (studentPlanIdsDic == null) { return(null); } foreach (var item in studentPlanIdsDic) { var studentId = item.Key; var itemPlanIds = item.Value; var itemPlans = plans.Where(p => itemPlanIds.Contains(p.PlanId)).ToList(); dic.Add(studentId, itemPlans); } } return(dic); }