public void SaveCourseAchievements(User user, UserCourseAchievement achievement, int courseModuleKey) { var existingAchievements = GetUserCourseAchievements(user).AsQueryable(); CompareAndPrepareCourseAchievement(achievement, courseModuleKey, user, existingAchievements); _courseCourseAchievementRepository.CommitChanges(); }
private void CompareAndPrepareCourseAchievement( UserCourseAchievement courseAchievementCandidate, int courseModuleKey, User user, IQueryable <UserCourseAchievement> existingAchievements) { var courseKey = courseAchievementCandidate.CourseKey; var courseAchievement = existingAchievements.FirstOrDefault(x => x.CourseKey == courseKey); if (courseAchievement == null) { courseAchievement = new UserCourseAchievement { CourseKey = courseKey, UserKey = user.Key }; _courseCourseAchievementRepository.InsertOnCommit(courseAchievement); } if (courseAchievement.CourseModuleAchievements == null) { courseAchievement.CourseModuleAchievements = new List <UserCourseModuleAchievement>(); } UserCourseModuleAchievement moduleAchievement = courseAchievement.CourseModuleAchievements.OrEmptyListIfNull().FirstOrDefault(a => a.CourseModuleKey == courseModuleKey); if (moduleAchievement == null) { moduleAchievement = new UserCourseModuleAchievement { UserCourseAchievement = courseAchievement, CourseModuleKey = courseModuleKey }; courseAchievement.CourseModuleAchievements.Add(moduleAchievement); } moduleAchievement.CompletedDate = DateTime.UtcNow; var course = _courseRepository.GetAll().Include(c => c.CourseModules).FirstOrDefault(x => x.Key == courseKey); // should not be null if (course != null) { if (courseAchievement.CourseModuleAchievements.Count >= course.CourseModules.Count) { courseAchievement.Completed = true; courseAchievement.CompletedDate = DateTime.UtcNow; } } }
public CourseAchievementViewModel(UserCourseAchievement courseAchievement) { Key = courseAchievement.Key; UserKey = courseAchievement.UserKey; User = courseAchievement.User; CourseKey = courseAchievement.CourseKey; Completed = courseAchievement.Completed; CompletedDate = courseAchievement.CompletedDate; CourseModuleAchievements = new List <CourseModuleAchievementViewModel>(); foreach (var moduleAchievement in courseAchievement.CourseModuleAchievements.OrEmptyListIfNull()) { CourseModuleAchievements.Add(new CourseModuleAchievementViewModel(moduleAchievement)); } }
public virtual ActionResult CourseName(CourseViewModel viewModel, string courseName, string courseModuleName) { courseName = courseName.Replace("-", ""); courseModuleName = courseModuleName.Replace("-", ""); if (ModelState.IsValid) { var user = userService.FindByUsername(currentUser.Identity.Name); TempData["Message"] = "You passed this course!"; var courseAchievement = new UserCourseAchievement { CourseKey = viewModel.CourseKey, UserKey = user.Key }; //courseAchievement.CourseModuleAchievements courseAchievementsService.SaveCourseAchievements(user, courseAchievement, viewModel.CourseModuleKey); return(Redirect(ControllerContext.HttpContext.Request.UrlReferrer.ToString() + "?quiz=true")); } return(View("~/Views/Courses/{0}/{1}.cshtml".format_with(courseName, courseModuleName), viewModel)); }