public async Task<List<Enemy>> GetEnemies(EnemyQuery query) { var content = await RepositoryParser.ParseRepository<List<Enemy>>(filePaths.Enemies); var queryedItems = FilterEnemies(content, query); return queryedItems; }
public async Task <IActionResult> GetEnemies([FromQuery] EnemyQuery query) { try { return(Ok(await enemiesService.GetEnemies(query))); } catch (FileNotFoundException ex) { return(BadRequest(ex)); } catch (Exception ex) { return(BadRequest(ex)); } }
private List<Enemy> FilterEnemies(List<Enemy> enemies, EnemyQuery query) { if (query == null) return enemies; if (query.Id != null) { enemies = enemies.Where(x => query.Id.IndexOf(x.Id) >= 0).ToList(); } if (query.Name != null) { enemies = enemies.Where(x => query.Name.Any(y => x.Name.ToLower() .Contains(y.ToLower() ) ) ).ToList(); } if (query.GameId != null) { enemies = enemies.Where(x => query.GameId.Any(id => x.AppearsInGame.Any( y => y.Contains(id.ToString()) ) ) ).ToList(); } if (query.LevelId != null) { enemies = enemies.Where(x => query.GameId.Any(id => x.AppearsInLevel.Any( y => y.Contains(id.ToString()) ) ) ).ToList(); } return enemies; }