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 #2
0
        public async Task <bool> DeleteUserDataAsync(string userId)
        {
            var settings = await _userSettingsRepository.GetById(userId);

            if (settings != null)
            {
                _userSettingsRepository.Delete(settings);
            }

            var accesses = _quizAccessesRepository.GetAllByUserId(userId);

            _quizAccessesRepository.DeleteRange(accesses);

            var solvedQuizzes = _solvedQuizRepository.GetAllByUserId(userId);

            _solvedQuizRepository.DeleteRange(solvedQuizzes);

            var learningQuizzes = _learningQuizzesRepository.GetAllByUserId(userId);

            _learningQuizzesRepository.DeleteRange(learningQuizzes);

            var quizzes = _quizzesRepository.GetAllByUserId(userId);

            _quizzesRepository.DeleteRange(quizzes);

            return(await Context.SaveChangesAsync() > 0);
        }