Example #1
0
        public async Task <string> GetEmplemImageUrl(string gamertag, ImageSize size = ImageSize.ExtraSmall)
        {
            gamertag = gamertag.ToUpper();
            var data = await _db.FindAsync <EmblemImageData>(gamertag);

            if (data == null || (DateTime.UtcNow - data.Timestamp.ToUniversalTime()).TotalDays > 3)
            {
                var query = new GetEmblemImage().ForPlayer(gamertag).Size((int)size);
                var image = await _session.Query(query);

                if (image == null)
                {
                    return(null);
                }

                if (data == null)
                {
                    data = new EmblemImageData(gamertag, image.Uri, DateTime.UtcNow);
                    _db.InsertAsync(data);
                }
                else
                {
                    data.Data      = image.Uri;
                    data.Timestamp = DateTime.UtcNow;
                    //await _db.UpdateAsync(data);
                }
            }

            return(data.Data);
        }
Example #2
0
        public async Task <MatchEvents> GetEventsForMatch(Guid id)
        {
            var data = await _db.FindAsync <MatchEventsData>(id.ToString());

            if (data == null)
            {
                var query = new GetMatchEvents().ForMatchId(id);
                var match = await _session.Query(query);

                if (match == null)
                {
                    return(null);
                }

                data = new MatchEventsData(id, match);
                _db.InsertAsync(data);
                return(match);
            }
            return(data.Deserialize());
        }
        public async Task <GameVariant> GetGameVariant(Guid id)
        {
            if (id == Guid.Empty)
            {
                return(null);
            }
            var data = await _db.FindAsync <GameVariantData>(id.ToString());

            if (data == null)
            {
                var query = new GetGameVariant().ForGameVariantId(id);
                var item  = await _session.Query(query);

                if (item == null)
                {
                    return(null);
                }
                data = new GameVariantData(id, item);
                _db.InsertAsync(data);
                return(item);
            }
            return(data.Deserialize());
        }
Example #4
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);
        }