public async Task <IEnumerable <Game> > GetGamesAsync(GamesResourceParameters gamesResourceParameters) { var games = GetFilteredGames(gamesResourceParameters); var gamesToReturn = await games .OrderBy(g => g.Title) .Take(gamesResourceParameters.NumberOfRecords) .AsNoTracking() .ToListAsync(); return(gamesToReturn); }
public async Task <ActionResult <IEnumerable <GameDto> > > GetGames( [FromQuery] GamesResourceParameters gamesResourceParameters) { var games = await gameRepository.GetGamesAsync(gamesResourceParameters); if (games is null) { return(NotFound()); } var gamesDto = mapper.Map <IEnumerable <GameDto> >(games); return(Ok(gamesDto)); }
public async Task <ActionResult <GameDto> > GetRandomGame( [FromQuery] GamesResourceParameters gamesResourceParameters) { var game = await gameRepository.GetRandomGameAsync(gamesResourceParameters); if (game is null) { return(NotFound()); } var gameDto = mapper.Map <GameDto>(game); return(gameDto); }
public async Task <Game> GetRandomGameAsync(GamesResourceParameters gamesResourceParameters) { var games = await GetFilteredGames(gamesResourceParameters).ToListAsync(); if (games is null) { return(null); } var random = new Random(); int randomElementId = random.Next(games.Count()); var game = games[randomElementId]; return(game); }
private IQueryable <Game> GetFilteredGames(GamesResourceParameters gamesResourceParameters) { var games = context.Games.AsQueryable(); if (!string.IsNullOrEmpty(gamesResourceParameters.Genre)) { var genreWhereClause = gamesResourceParameters.Genre .Trim().ToLowerInvariant(); games = games.Where(g => g.Genre.ToLowerInvariant() == genreWhereClause); } if (!string.IsNullOrEmpty(gamesResourceParameters.Platform)) { var platformWhereClause = gamesResourceParameters.Platform .Trim().ToLowerInvariant(); games = games.Where(p => p.Platform.ToLower() == platformWhereClause); } return(games); }