diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Game.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Game.razor.cs index 4299b9f..45c0dfc 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Game.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Game.razor.cs @@ -18,11 +18,11 @@ public partial class Game private IEnumerable GamesDto = []; private int CurrentPage; - protected override async Task OnAfterRenderAsync(bool firstRender) + protected override async Task OnInitializedAsync() { CurrentPage = 1; - await HandleFetchDatas(firstRender); - await base.OnAfterRenderAsync(firstRender); + await HandleFetchDatas(true); + await base.OnInitializedAsync(); } private void HandleAddClicked(AddType addType) diff --git a/src/GameIdeas/Server/GameIdeas.WebAPI/Services/GameService.cs b/src/GameIdeas/Server/GameIdeas.WebAPI/Services/GameService.cs index b3afab7..b19d43b 100644 --- a/src/GameIdeas/Server/GameIdeas.WebAPI/Services/GameService.cs +++ b/src/GameIdeas/Server/GameIdeas.WebAPI/Services/GameService.cs @@ -13,9 +13,19 @@ public class GameService(GameIdeasContext context, IMapper mapper) : IGameServic { public async Task> GetGames(GameFilterDto filter) { - var games = await SelectGames() - .OrderBy(g => g.Title) - .Skip((filter.CurrentPage - 1) * GlobalConstants.NUMBER_PER_PAGE) + var query = context.Games + .Include(g => g.GamePlatforms).ThenInclude(gp => gp.Platform) + .Include(g => g.GameProperties) + .Include(g => g.GameTags).ThenInclude(gt => gt.Tag) + .Include(g => g.GamePublishers) + .Include(g => g.GameDevelopers) + .AsQueryable(); + + ApplyFilter(ref query, filter); + + ApplyOrder(ref query, filter); + + var games = await query.Skip((filter.CurrentPage - 1) * GlobalConstants.NUMBER_PER_PAGE) .Take(GlobalConstants.NUMBER_PER_PAGE) .ToListAsync(); @@ -24,7 +34,14 @@ public class GameService(GameIdeasContext context, IMapper mapper) : IGameServic public async Task GetGameById(int gameId) { - var game = await SelectGames() + var game = await context.Games + .Include(g => g.CreationUser) + .Include(g => g.ModificationUser) + .Include(g => g.GamePlatforms).ThenInclude(p => p.Platform) + .Include(g => g.GameProperties).ThenInclude(p => p.Property) + .Include(g => g.GameTags).ThenInclude(p => p.Tag) + .Include(g => g.GamePublishers).ThenInclude(p => p.Publisher) + .Include(g => g.GameDevelopers).ThenInclude(p => p.Developer) .FirstOrDefaultAsync(g => g.Id == gameId); return game == null @@ -81,17 +98,14 @@ public class GameService(GameIdeasContext context, IMapper mapper) : IGameServic return await context.SaveChangesAsync() != 0; } - private IQueryable SelectGames() + private void ApplyOrder(ref IQueryable query, GameFilterDto filter) { - return context.Games - .Include(g => g.CreationUser) - .Include(g => g.ModificationUser) - .Include(g => g.GamePlatforms).ThenInclude(p => p.Platform) - .Include(g => g.GameProperties).ThenInclude(p => p.Property) - .Include(g => g.GameTags).ThenInclude(p => p.Tag) - .Include(g => g.GamePublishers).ThenInclude(p => p.Publisher) - .Include(g => g.GameDevelopers).ThenInclude(p => p.Developer) - .AsQueryable(); + + } + + private void ApplyFilter(ref IQueryable query, GameFilterDto filter) + { + } private async Task HandlePlatformsCreation(IEnumerable? categoriesToCreate, int gameId)