Add release date and storage filter
All checks were successful
Game Ideas build for PR / build_blazor_app (pull_request) Successful in 34s
All checks were successful
Game Ideas build for PR / build_blazor_app (pull_request) Successful in 34s
This commit is contained in:
@@ -5,6 +5,7 @@ using GameIdeas.Shared.Exceptions;
|
||||
using GameIdeas.Shared.Model;
|
||||
using GameIdeas.WebAPI.Context;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
|
||||
namespace GameIdeas.WebAPI.Services.Games;
|
||||
@@ -31,7 +32,7 @@ public class GameReadService(GameIdeasContext context, IMapper mapper) : IGameRe
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(filter.Title))
|
||||
{
|
||||
games = ApplySearchGameFilter(games, filter).ToList();
|
||||
games = [.. ApplySearchGameFilter(games, filter)];
|
||||
}
|
||||
|
||||
return mapper.Map<IEnumerable<GameDto>>(games);
|
||||
@@ -81,6 +82,52 @@ public class GameReadService(GameIdeasContext context, IMapper mapper) : IGameRe
|
||||
query = query.Where(game => filter.PlatformIds.All(plat =>
|
||||
game.GamePlatforms.Any(gp => gp.PlatformId == plat)));
|
||||
}
|
||||
|
||||
if (filter.PropertyIds != null)
|
||||
{
|
||||
query = query.Where(game => filter.PropertyIds.All(prop =>
|
||||
game.GameProperties.Any(gp => gp.PropertyId == prop)));
|
||||
}
|
||||
|
||||
if (filter.TagIds != null)
|
||||
{
|
||||
query = query.Where(game => filter.TagIds.All(tag =>
|
||||
game.GameTags.Any(gt => gt.TagId == tag)));
|
||||
}
|
||||
|
||||
if (filter.PublisherIds != null)
|
||||
{
|
||||
query = query.Where(game => filter.PublisherIds.All(pub =>
|
||||
game.GamePublishers.Any(gp => gp.PublisherId == pub)));
|
||||
}
|
||||
|
||||
if (filter.DeveloperIds != null)
|
||||
{
|
||||
query = query.Where(game => filter.DeveloperIds.All(dev =>
|
||||
game.GameDevelopers.Any(gd => gd.DeveloperId == dev)));
|
||||
}
|
||||
|
||||
if (filter.MinInterest != null)
|
||||
{
|
||||
query = query.Where(game => game.Interest >= filter.MinInterest);
|
||||
}
|
||||
|
||||
if (filter.MaxInterest != null)
|
||||
{
|
||||
query = query.Where(game => game.Interest <= filter.MaxInterest);
|
||||
}
|
||||
|
||||
if (filter.StorageSpaces != null)
|
||||
{
|
||||
query = query.Where(game => filter.StorageSpaces.Where(stor =>
|
||||
stor.MinSize <= game.StorageSpace && stor.MaxSize > game.StorageSpace).Count() != 0);
|
||||
}
|
||||
|
||||
if (filter.ReleaseYears != null)
|
||||
{
|
||||
query = query.Where(game => game.ReleaseDate != null &&
|
||||
filter.ReleaseYears.Contains(game.ReleaseDate.Value.Year));
|
||||
}
|
||||
}
|
||||
|
||||
private static IEnumerable<Game> ApplySearchGameFilter(IEnumerable<Game> query, GameFilterDto filter)
|
||||
|
||||
Reference in New Issue
Block a user