Beispiel #1
0
        private async Task <RewardResponse> QueueByReplayIdAsync(RewardRequest request)
        {
            HeroesProfileReplay replay = await heroesProfileService.GetReplayByIdAsync(request.ReplayId.Value);

            if (replay == null)
            {
                await AddToFailedRequestsAsync(new (request, replay));

                return(new RewardResponse(success: false, message: $"could not find replay with id {request.ReplayId.Value}"));
            }

            if (replay.Deleted != null)
            {
                await AddToFailedRequestsAsync(new (request, replay));

                return(new RewardResponse(success: false, message: $"the raw file for replay id {request.ReplayId.Value} is no longer available."));
            }

            if (!settings.Spectate.VersionsSupported.Contains(replay.GameVersion))
            {
                await AddToFailedRequestsAsync(new (request, replay));

                return(new RewardResponse(success: false, message: $"the version found '{replay.GameVersion}' does not match the supported versions."));
            }

            int position = await QueueReplayId(new (request, replay));

            return(new RewardResponse(success: true, message: $"{replay.Id} - {replay.Map} ({replay.Rank}) has been queued. ({position})"));
        }
Beispiel #2
0
        private async Task <RewardResponse> QueueByRewardFilterAsync(RewardRequest request)
        {
            IEnumerable <HeroesProfileReplay> replays = await heroesProfileService.GetReplaysByFilters(request.GameType, request.Rank, request.Map);

            HeroesProfileReplay replay = replays.OrderBy(x => Guid.NewGuid()).FirstOrDefault();

            if (replay != null)
            {
                int position = await QueueReplayId(new (request, replay));

                return(new RewardResponse(success: true, message: $"'{request.RewardTitle}' - {replay.Map} ({replay.Rank}) has been queued ({position})"));
            }
            else
            {
                await AddToFailedRequestsAsync(new (request, replay));

                return(new RewardResponse(success: false, message: "Request failed to queue because the given reward criteria could not be found"));
            }
        }