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})")); }
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")); } }