public async Task <List <Character> > GetCharacters(CharacterQuery query) { var contents = await RepositoryParser.ParseRepository <List <Character> >(filePaths.Characters); var queryedItems = FilterCharacters(contents, query); return(queryedItems); }
public async Task <IActionResult> Get([FromQuery] CharacterQuery query) { try { return(Ok(await charactersService.GetCharacters(query))); } catch (FileNotFoundException fileNotFoundEx) { return(BadRequest(fileNotFoundEx)); } catch (Exception ex) { return(BadRequest(ex)); } }
public async Task <QueryResult <Character> > GetAll(CharacterQuery queryObj) { var result = new QueryResult <Character>(); var query = _context.Characters .Include(c => c.Friends) .ThenInclude(f => f.Friend) .Include(c => c.Episodes) .ThenInclude(e => e.Episode) .AsQueryable(); result.TotalItems = await query.CountAsync(); query = query.ApplyPaging(queryObj); result.Items = await query.ToListAsync(); return(result); }
private List <Character> FilterCharacters(List <Character> characters, CharacterQuery query) { if (query == null) { return(characters); } if (query.Id != null) { characters = characters.Where(x => query.Id.IndexOf(x.Id) >= 0).ToList(); } if (query.Name != null) { characters = characters.Where(x => query.Name.Any(y => x.Name.ToLower() .Contains(y.ToLower() ) ) ).ToList(); } if (query.GameId != null) { characters = characters.Where(x => query.GameId.Any(id => x.AppearsInGame.Any( y => y.Contains(id.ToString()) ) ) ).ToList(); } if (query.IsMainCharacter != null) { characters = characters.Where(x => x.IsMainCharacter == query.IsMainCharacter).ToList(); } return(characters); }