public async Task <ActionResult <GetAchievementsByUserIdResponseModel> > GetByUserId(
            [FromRoute] Guid userId
            )
        {
            var queryRequest = new GetAchievementsByUserIdQueryRequestModel {
                UserId = userId
            };
            var queryResponse = await this.getAchievementsByUserIdQuery.ExecuteAsync(queryRequest);

            return(GetAchievementsByUserIdResponseModel.FromBusinessModel(queryResponse));
        }
        public async Task <IEnumerable <Achievement> > ExecuteAsync(GetAchievementsByUserIdQueryRequestModel queryRequest)
        {
            var user = await this.usersRepository.GetAsync(queryRequest.UserId);

            if (user is null)
            {
                throw new HttpException(HttpStatusCode.NotFound, $"User (ID: {queryRequest.UserId}) cannot be found.");
            }

            var achievementRecords = await this.achievementsRepository.GetByUserIdAsync(queryRequest.UserId);

            var achievements = new List <Achievement>();

            foreach (var achievementRecord in achievementRecords)
            {
                achievements.Add(Achievement.FromTableRecord(achievementRecord));
            }

            return(achievements);
        }