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); }
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 <Commendation> GetCommendation(Guid id) { var item = await _db.FindAsync <CommendationData>(id.ToString()); return(item?.Deserialize()); }
public async Task <Commendation> GetCommendation(Guid id) { var item = await _db.FindAsync <CommendationData, string, Commendation>(id.ToString()); return(item); }
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); }