コード例 #1
0
ファイル: VisitsRepo.cs プロジェクト: DerArvend/Ulearn
        public async Task UpdateScoreForVisit(string courseId, Guid slideId, string userId)
        {
            var newScore = slideCheckingsRepo.GetManualScoreForSlide(courseId, slideId, userId) +
                           slideCheckingsRepo.GetAutomaticScoreForSlide(courseId, slideId, userId);
            var isPassed = slideCheckingsRepo.IsSlidePassed(courseId, slideId, userId);

            await UpdateAttempts(slideId, userId, visit =>
            {
                visit.Score    = newScore;
                visit.IsPassed = isPassed;
            });
        }
コード例 #2
0
        public async Task UpdateScoreForVisit(string courseId, Slide slide, string userId)
        {
            var maxSlideScore = slide.MaxScore;
            var newScore      = slide is ExerciseSlide ex
                                ? (await slideCheckingsRepo.GetExerciseSlideScoreAndPercent(courseId, ex, userId)).Score
                                : await slideCheckingsRepo.GetUserScoreForQuizSlide(courseId, slide.Id, userId);

            newScore = Math.Min(newScore, maxSlideScore);
            var isPassed = await slideCheckingsRepo.IsSlidePassed(courseId, slide.Id, userId);

            if (await IsSkipped(courseId, slide.Id, userId))
            {
                newScore = 0;
            }
            log.Info($"Обновляю количество баллов пользователя {userId} за слайд {slide.Id} в курсе \"{courseId}\". " +
                     $"Новое количество баллов: {newScore}, слайд пройден: {isPassed}");
            await UpdateAttempts(courseId, slide.Id, userId, visit =>
            {
                visit.Score    = newScore;
                visit.IsPassed = isPassed;
            });
        }