public async Task <IActionResult> FetchChallengesAsync(
            EnumGame game            = EnumGame.None,
            EnumChallengeState state = EnumChallengeState.None,
            bool includeMatches      = false
            )
        {
            var fetchDoxatagsRequest = new FetchDoxatagsRequest();

            var fetchDoxatagsResponse = await _identityServiceClient.FetchDoxatagsAsync(fetchDoxatagsRequest);

            var fetchChallengePayoutsRequest = new FetchChallengePayoutsRequest();

            var fetchChallengePayoutsResponse = await _cashierServiceClient.FetchChallengePayoutsAsync(fetchChallengePayoutsRequest);

            var fetchChallengeHistoryRequest = new FetchChallengeHistoryRequest
            {
                Game           = game,
                State          = state,
                IncludeMatches = includeMatches
            };

            var fetchChallengesResponse = await _challengesServiceClient.FetchChallengeHistoryAsync(fetchChallengeHistoryRequest);

            return(this.Ok(ChallengeMapper.Map(fetchChallengesResponse.Challenges, fetchChallengePayoutsResponse.Payouts, fetchDoxatagsResponse.Doxatags)));
        }
        public override async Task <FetchChallengeHistoryResponse> FetchChallengeHistory(FetchChallengeHistoryRequest request, ServerCallContext context)
        {
            var httpContext = context.GetHttpContext();

            var userId = httpContext.GetUserId();

            var challenges = await _challengeQuery.FetchUserChallengeHistoryAsync(
                userId,
                request.Game.ToEnumerationOrNull <Game>(),
                request.State.ToEnumerationOrNull <ChallengeState>(),
                request.IncludeMatches);

            var response = new FetchChallengeHistoryResponse
            {
                Challenges =
                {
                    challenges.Select(ChallengeProfile.Map)
                }
            };

            return(context.Ok(response));
        }