private async Task <AcceptedSolutionsPageModel> CreateAcceptedSolutionsModel(Course course, ExerciseSlide slide, bool isLti) { var userId = User.Identity.GetUserId(); var isPassed = visitsRepo.IsPassed(course.Id, slide.Id, userId); if (!isPassed) { await visitsRepo.SkipSlide(course.Id, slide.Id, userId); } var submissions = solutionsRepo.GetBestTrendingAndNewAcceptedSolutions(course.Id, slide.Id); foreach (var submission in submissions) { submission.LikedAlready = submission.UsersWhoLike.Any(u => u == userId); submission.RemoveSolutionUrl = Url.Action("RemoveSubmission", "Course", new { course.Id, slideId = slide.Id, submissionId = submission.Id }); } var model = new AcceptedSolutionsPageModel { CourseId = course.Id, CourseTitle = course.Title, Slide = slide, AcceptedSolutions = submissions, User = User, LikeSolutionUrl = Url.Action("LikeSolution"), IsLti = isLti, IsPassed = isPassed }; return(model); }
public async Task <ViewResult> AcceptedSolutions(string courseId, int slideIndex = 0, bool isLti = false) { var userId = User.Identity.GetUserId(); var course = courseManager.GetCourse(courseId); var slide = (ExerciseSlide)course.Slides[slideIndex]; var isPassed = visitsRepo.IsPassed(slide.Id, userId); if (!isPassed) { await visitsRepo.SkipSlide(courseId, slide.Id, userId); } var solutions = solutionsRepo.GetAllAcceptedSolutions(courseId, slide.Id); foreach (var solution in solutions) { solution.LikedAlready = solution.UsersWhoLike.Any(u => u == userId); solution.RemoveSolutionUrl = Url.Action("RemoveSolution", "Course", new { courseId = courseId, slideIndex = slide.Index, solutionId = solution.Id }); } var model = new AcceptedSolutionsPageModel { CourseId = courseId, CourseTitle = course.Title, Slide = slide, AcceptedSolutions = solutions, User = User, LikeSolutionUrl = Url.Action("LikeSolution"), IsLti = isLti, IsPassed = isPassed }; return(View(model)); }