Beispiel #1
0
        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));
        }