Пример #1
0
        public async Task <BaseMatchResult> GetMatch(string gamerTag, Enumeration.GameMode gameMode, Guid id)
        {
            var match = await StatsBusiness.GetMatch(gameMode, id, gamerTag);

            await Context.CommitChanges();

            return(match);
        }
Пример #2
0
        public void GetConstructedUri_InGameMode_MatchesExpected(Enumeration.GameMode gameMode)
        {
            var query = new GetMatches()
                        .InGameMode(gameMode);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{null}/matches?modes={gameMode}", uri);
        }
Пример #3
0
        public void GetConstructedUri_InGameModes_MatchesExpected(Enumeration.GameMode gameMode1, Enumeration.GameMode gameMode2)
        {
            var query = new GetMatches()
                        .InGameModes(new List <Enumeration.GameMode> {
                gameMode1, gameMode2
            });

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{null}/matches?modes={gameMode1},{gameMode2}", uri);
        }
Пример #4
0
        public void GetConstructedUri_Complex_MatchesExpected(string gamertag, Enumeration.GameMode gameMode, int skip, int take)
        {
            var query = new GetMatches()
                        .ForPlayer(gamertag)
                        .InGameMode(gameMode)
                        .Skip(skip)
                        .Take(take);

            var uri = query.GetConstructedUri();

            Assert.AreEqual($"stats/h5/players/{gamertag}/matches?modes={gameMode}&start={skip}&count={take}", uri);
        }
Пример #5
0
        public async Task <BaseMatchResult> GetMatch(Enumeration.GameMode gameMode, Guid id, string gamerTag)
        {
            BaseMatchResult match = null;

            switch (gameMode)
            {
            case Enumeration.GameMode.Arena:
                var arenaMatch = await _statsRepository.GetArenaMatch(id);

                match = await GetMatchResult(arenaMatch, gamerTag);

                break;

            case Enumeration.GameMode.Campaign:
                var campaignMatch = await _statsRepository.GetCampaignMatch(id);

                match = GetMatchResult(campaignMatch, gamerTag);
                break;

            case Enumeration.GameMode.Custom:
                var customMatch = await _statsRepository.GetCustomMatch(id);

                match = await GetMatchResult(customMatch, gamerTag);

                break;

            case Enumeration.GameMode.Warzone:
                MatchEvents matchEvents = await _statsRepository.GetEventsForMatch(id);

                var warzoneMatch = await _statsRepository.GetWarzoneMatch(id);

                match = await GetMatchResult(warzoneMatch, gamerTag, matchEvents);

                break;

            default:
                return(null);
            }

            if (match != null)
            {
                match.GameMode = gameMode;
                match.Id       = id;
            }
            return(match);
        }
Пример #6
0
        public async Task <IActionResult> GetMatch(string gamerTag, Enumeration.GameMode gameMode, Guid id)
        {
            var match = await StatsBusiness.GetMatch(gameMode, id, gamerTag);

            return(Content(match, "application/json"));
        }
Пример #7
0
        /// <summary>
        ///     Indicates what game mode the client is interested in getting matches for (arena, campaign, custom, or
        ///     warzone).
        /// </summary>
        /// <param name="gameMode">The Game Mode the client is interested in.</param>
        public GetMatches InGameMode(Enumeration.GameMode gameMode)
        {
            Parameters["modes"] = gameMode.ToString();

            return(this);
        }
Пример #8
0
        public async Task <string> GetMatch(Enumeration.GameMode gameMode, Guid id, string gamerTag)
        {
            if (_settings.CacheResults)
            {
                var result = await _db.FindAsync <MatchResultData>(id.ToString());

                if (result != null)
                {
                    return(result.Data);
                }
            }
            MatchEvents matchEvents = await _statsRepository.GetEventsForMatch(id);

            matchEvents.GameEvents = matchEvents.GameEvents.Where(e => e.EventName == Enumeration.EventType.Death).ToList();
            MatchResult match = null;

            switch (gameMode)
            {
            case Enumeration.GameMode.Arena:
                var arenaMatch = await _statsRepository.GetArenaMatch(id);

                match = await GetMatchResult(arenaMatch, gamerTag, matchEvents);

                break;

            case Enumeration.GameMode.Campaign:
                var campaignMatch = await _statsRepository.GetCampaignMatch(id);

                match = GetMatchResult(campaignMatch, gamerTag, matchEvents);
                break;

            case Enumeration.GameMode.Custom:
                var customMatch = await _statsRepository.GetCustomMatch(id);

                match = await GetMatchResult(customMatch, gamerTag, matchEvents);

                break;

            case Enumeration.GameMode.Warzone:
                var warzoneMatch = await _statsRepository.GetWarzoneMatch(id);

                match = await GetMatchResult(warzoneMatch, gamerTag, matchEvents);

                break;

            default:
                return(null);
            }

            if (match != null)
            {
                match.GameMode = gameMode;
                match.Id       = id;
            }

            var matchResult = new MatchResultData(id.ToString(), match);

            if (_settings.CacheResults)
            {
                _db.InsertAsync(matchResult);
                await _db.CommitChanges();
            }
            return(matchResult.Data);
        }