private async Task <IEnumerable <YugiohCard> > GetCardsAsync(YugiohCardFilter filter = null) { IEnumerable <YugiohCard> cards; if (!_cardCache.TryGetValue(CACHE_KEY, out cards)) { try { cards = await _yugiohClient.FindCardsAsync(); _cardCache.Set(CACHE_KEY, cards, new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromMinutes(5))); } catch (Exception ex) { _logger.LogError(ex.ToString()); } } var nameFilter = filter?.Filters?.FirstOrDefault(f => f.Name.EqualsIgnoreCase("name")); if (!string.IsNullOrWhiteSpace(nameFilter?.Value)) { cards = cards.Where(c => c.Name.ContainsIgnoreCase(nameFilter.Value)); } return(cards); }
public async Task <IActionResult> GetCardsWithFilter([FromBody] YugiohCardFilter filter) { var cards = await GetCardsAsync(filter); return(Ok(new SearchResults { Results = cards.Skip(((filter?.PageNumber ?? 1) - 1) * filter?.Count ?? 20).Take(filter?.Count ?? 20).ToList(), TotalResults = cards.Count() })); }