示例#1
0
        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);
        }
示例#2
0
        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()
            }));
        }