private async Task <CoursePageModel> CreateCoursePageModel(string courseId, int slideIndex, List <string> visibleUnits) { var course = courseManager.GetCourse(courseId); if (slideIndex == -1) { slideIndex = GetInitialIndexForStartup(courseId, course, visibleUnits); } var userId = User.Identity.GetUserId(); var isFirstCourseVisit = !db.Visits.Any(x => x.UserId == userId); var slide = course.Slides[slideIndex]; var slideId = slide.Id; var visiter = await VisitSlide(courseId, slideId); var score = Tuple.Create(visiter.Score, slide.MaxScore); var model = new CoursePageModel { UserId = userId, IsFirstCourseVisit = isFirstCourseVisit, CourseId = course.Id, CourseTitle = course.Title, Slide = slide, Rate = GetRate(course.Id, slideId), Score = score, BlockRenderContext = CreateRenderContext(course, slide, userId, visiter), IsGuest = false }; return(model); }
private async Task <CoursePageModel> CreateCoursePageModel( Course course, Slide slide, AbstractManualSlideChecking manualChecking, int?exerciseSubmissionId = null, List <string> groupsIds = null, bool autoplay = false, bool isManualCheckingReadonly = false) { var userId = User.Identity.GetUserId(); if (manualChecking != null) { userId = manualChecking.UserId; } var visiter = await VisitSlide(course.Id, slide.Id, userId); var maxSlideScore = GetMaxSlideScoreForUser(course, slide, userId); var score = Tuple.Create(visiter.Score, maxSlideScore); var model = new CoursePageModel { UserId = userId, CourseId = course.Id, CourseTitle = course.Title, Slide = slide, Score = score, BlockRenderContext = CreateRenderContext(course, slide, manualChecking, exerciseSubmissionId, groupsIds, autoplay: autoplay, isManualCheckingReadonly: isManualCheckingReadonly), ManualChecking = manualChecking, ContextManualCheckingUserGroups = manualChecking != null?groupsRepo.GetUserGroupsNamesAsString(course.Id, manualChecking.UserId, User) : "", IsGuest = false }; return(model); }
private async Task <CoursePageModel> CreateCoursePageModel( Course course, Slide slide, AbstractManualSlideChecking manualChecking, int?exerciseSubmissionId = null, List <string> groupsIds = null, bool autoplay = false, bool isManualCheckingReadonly = false) { var userId = User.Identity.GetUserId(); if (manualChecking != null) { userId = manualChecking.UserId; } var visiter = await VisitSlide(course.Id, slide.Id, userId).ConfigureAwait(false); var maxSlideScore = GetMaxSlideScoreForUser(course, slide, userId); var defaultProhibitFurtherReview = groupsRepo.GetDefaultProhibitFutherReviewForUser(course.Id, userId, User); var manualCheckingsLeft = manualChecking != null?ControllerUtils.GetManualCheckingsCountInQueue(slideCheckingsRepo, groupsRepo, User, course.Id, slide, groupsIds) : 0; var score = Tuple.Create(visiter.Score, maxSlideScore); var model = new CoursePageModel { UserId = userId, CourseId = course.Id, CourseTitle = course.Title, Slide = slide, Score = score, BlockRenderContext = CreateRenderContext( course, slide, manualChecking, exerciseSubmissionId, groupsIds, autoplay: autoplay, isManualCheckingReadonly: isManualCheckingReadonly, defaultProhibitFurtherReview: defaultProhibitFurtherReview, manualCheckingsLeft: manualCheckingsLeft), ManualChecking = manualChecking, ContextManualCheckingUserGroups = manualChecking != null?groupsRepo.GetUserGroupsNamesAsString(course.Id, manualChecking.UserId, User) : "", ContextManualCheckingUserArchivedGroups = manualChecking != null?groupsRepo.GetUserGroupsNamesAsString(course.Id, manualChecking.UserId, User, onlyArchived : true) : "", IsGuest = false, SlideEditUrl = GetGitEditLink(course, slide.Info.SlideFile) }; return(model); }
private async Task <CoursePageModel> CreateCoursePageModel( Course course, Slide slide, AbstractManualSlideChecking manualChecking, int?exerciseSubmissionId = null, List <string> groupsIds = null, bool autoplay = false, bool isManualCheckingReadonly = false) { var userId = User.Identity.GetUserId(); if (manualChecking != null) { userId = manualChecking.UserId; } var defaultProhibitFurtherReview = groupsRepo.GetDefaultProhibitFutherReviewForUser(course.Id, userId, User); var manualCheckingsLeftInQueue = manualChecking != null?ControllerUtils.GetManualCheckingsCountInQueue(slideCheckingsRepo, groupsRepo, User, course.Id, slide, groupsIds) : 0; var(notArchivedGroupNames, archivedGroupNames) = GetGroupNames(course, manualChecking); var model = new CoursePageModel { UserId = userId, CourseId = course.Id, CourseTitle = course.Title, Slide = slide, BlockRenderContext = CreateRenderContext( course, slide, manualChecking, exerciseSubmissionId, groupsIds, autoplay: autoplay, isManualCheckingReadonly: isManualCheckingReadonly, defaultProhibitFurtherReview: defaultProhibitFurtherReview, manualCheckingsLeftInQueue: manualCheckingsLeftInQueue), ManualChecking = manualChecking, ContextManualCheckingUserGroups = notArchivedGroupNames, ContextManualCheckingUserArchivedGroups = archivedGroupNames, IsGuest = false, }; return(model); }