Add release date and storage filter
All checks were successful
Game Ideas build for PR / build_blazor_app (pull_request) Successful in 34s

This commit is contained in:
2025-04-20 03:35:57 +02:00
parent 7fd9639eed
commit ba329f442b
18 changed files with 153 additions and 40 deletions

View File

@@ -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)