Exemple #1
0
        public async Task <Quiz> GetByIdAsync(Guid quizId, string userId)
        {
            var isPublic = await _quizzesRepository.IsPublicAsync(quizId);

            if (!isPublic)
            {
                var access = await _quizzesRepository.HaveReadAccessToQuizAsync(userId, quizId);

                if (!access)
                {
                    return(null);
                }
            }

            var quiz = await _quizzesRepository.GetById(quizId);

            var userAccess = await _quizAccessesRepository.GetQuizAccessForUserAsync(userId, quizId);

            if (userAccess != null)
            {
                quiz.IncludeAccess(userAccess.Access);
            }

            var quizWithOwnerNickName = await _auth0UsersService.QuizItemWithOwnerNickName(quiz);

            return(quizWithOwnerNickName);
        }
        public async Task <IEnumerable <LearningQuiz> > GetAllLearningQuizzes(bool?isFinished, string userId)
        {
            var learningQuizzesQuery = _learningQuizzesRepository
                                       .GetAllByUserId(userId);

            if (isFinished != null)
            {
                learningQuizzesQuery = learningQuizzesQuery
                                       .Where(l => l.IsFinished == isFinished.Value);
            }
            var learningQuizzes = await learningQuizzesQuery
                                  .Include(q => q.Quiz)
                                  .ToListAsync();

            for (var i = learningQuizzes.Count - 1; i >= 0; i--)
            {
                if (learningQuizzes[i].QuizId == null)
                {
                    continue;
                }

                var access = await _quizAccessesRepository.GetQuizAccessForUserAsync(userId, learningQuizzes[i].QuizId.Value);

                if (access == null || access.Access == QuizAccessEnum.None)
                {
                    learningQuizzes.RemoveAt(i);
                }
                else
                {
                    learningQuizzes[i].Quiz.IncludeAccess(access.Access);
                }
            }

            return(await _auth0UsersService.IncludeOwnerNickNamesInLearningQuiz(learningQuizzes));
        }
Exemple #3
0
        public async Task <object> GetQuizStatistics(Guid quizId, string userId)
        {
            var access = await _quizAccessesRepository.GetQuizAccessForUserAsync(userId, quizId);

            if (access == null || access.Access != QuizAccessEnum.Owner && access.Access != QuizAccessEnum.Creator)
            {
                return(null);
            }
            return(await GetQuizStatistics(quizId));
        }