public async Task <ActionResult> RestartQuiz(string courseId, Guid slideId, bool isLti) { var slide = courseManager.GetCourse(courseId).GetSlideById(slideId); if (slide is QuizSlide) { var userId = User.Identity.GetUserId(); var usedAttemptsCount = userQuizzesRepo.GetUsedAttemptsCount(courseId, userId, slideId); var maxTriesCount = GetMaxAttemptsCount(courseId, slide as QuizSlide); var isQuizScoredMaximum = userQuizzesRepo.IsQuizScoredMaximum(courseId, slideId, userId); if (usedAttemptsCount < maxTriesCount && !isQuizScoredMaximum) { await visitsRepo.UpdateScoreForVisit(courseId, slideId, slide.MaxScore, userId).ConfigureAwait(false); if (isLti) { LtiUtils.SubmitScore(courseId, slide, userId); } } } var model = new { courseId, slideId = slide.Id, isLti, attempt = true }; if (isLti) { return(RedirectToAction("LtiSlide", "Course", model)); } return(RedirectToAction("SlideById", "Course", model)); }