From e4dc1ec2abc1f07b4dea516690dad7a004dd725a Mon Sep 17 00:00:00 2001 From: Noah Stolk Date: Mon, 9 Sep 2024 10:09:33 +0200 Subject: [PATCH] Fix not trimming filter parameters (#650) * Fix not trimming filter parameters * Trim more filters --- .../Repositories/CustomEntryRepository.cs | 2 ++ .../Repositories/CustomLeaderboardRepository.cs | 2 ++ .../Repositories/DonationRepository.cs | 2 ++ .../Repositories/ModRepository.cs | 3 +++ .../Repositories/PlayerRepository.cs | 2 ++ .../Repositories/SpawnsetRepository.cs | 2 ++ .../Repositories/UserRepository.cs | 2 ++ .../Repositories/CustomLeaderboardRepository.cs | 4 ++++ .../Controllers/Ddae/ModsController.cs | 5 +++++ .../Controllers/Ddse/SpawnsetsController.cs | 5 +++++ .../Controllers/Main/ModsController.cs | 5 +++++ .../Controllers/Main/SpawnsetsController.cs | 5 +++++ 12 files changed, 39 insertions(+) diff --git a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/CustomEntryRepository.cs b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/CustomEntryRepository.cs index dd8d90ced..ec61fe7d1 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/CustomEntryRepository.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/CustomEntryRepository.cs @@ -28,6 +28,8 @@ public async Task> GetCustomEntriesAsync(string? if (!string.IsNullOrWhiteSpace(filter)) { + filter = filter.Trim(); + // ! Navigation property. customEntriesQuery = customEntriesQuery.Where(ce => ce.Player!.PlayerName.Contains(filter) || ce.CustomLeaderboard!.Spawnset!.Name.Contains(filter)); } diff --git a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/CustomLeaderboardRepository.cs b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/CustomLeaderboardRepository.cs index 82282bf50..9bdcf836f 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/CustomLeaderboardRepository.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/CustomLeaderboardRepository.cs @@ -25,6 +25,8 @@ public async Task> GetCustomLeaderboardsAs if (!string.IsNullOrWhiteSpace(filter)) { + filter = filter.Trim(); + // ! Navigation property. customLeaderboardsQuery = customLeaderboardsQuery.Where(cl => cl.Spawnset!.Name.Contains(filter)); } diff --git a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/DonationRepository.cs b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/DonationRepository.cs index 7a70459c9..a84ca7381 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/DonationRepository.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/DonationRepository.cs @@ -25,6 +25,8 @@ public async Task> GetDonationsAsync(string? filter if (!string.IsNullOrWhiteSpace(filter)) { + filter = filter.Trim(); + // ! Navigation property. donationsQuery = donationsQuery.Where(d => d.Player!.PlayerName.Contains(filter)); } diff --git a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/ModRepository.cs b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/ModRepository.cs index 05c18260e..44f8fe905 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/ModRepository.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/ModRepository.cs @@ -26,7 +26,10 @@ public async Task> GetModsAsync(string? filter, int page IQueryable modsQuery = _dbContext.Mods.AsNoTracking(); if (!string.IsNullOrWhiteSpace(filter)) + { + filter = filter.Trim(); modsQuery = modsQuery.Where(m => m.Name.Contains(filter)); + } modsQuery = sortBy switch { diff --git a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/PlayerRepository.cs b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/PlayerRepository.cs index 903c3f24b..e6ed7d3b9 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/PlayerRepository.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/PlayerRepository.cs @@ -23,6 +23,8 @@ public async Task> GetPlayersAsync(string? filter, in if (!string.IsNullOrWhiteSpace(filter)) { + filter = filter.Trim(); + playersQuery = playersQuery.Where(p => p.PlayerName.Contains(filter) || p.CommonName != null && p.CommonName.Contains(filter) || diff --git a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/SpawnsetRepository.cs b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/SpawnsetRepository.cs index d3562fdd5..8f0dab5f4 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/SpawnsetRepository.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/SpawnsetRepository.cs @@ -23,6 +23,8 @@ public async Task> GetSpawnsetsAsync(string? filter if (!string.IsNullOrWhiteSpace(filter)) { + filter = filter.Trim(); + // ! Navigation property. spawnsetsQuery = spawnsetsQuery.Where(s => s.Name.Contains(filter) || s.Player!.PlayerName.Contains(filter)); } diff --git a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/UserRepository.cs b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/UserRepository.cs index 0612c7afb..213f0b05f 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/UserRepository.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain.Admin/Repositories/UserRepository.cs @@ -29,6 +29,8 @@ public async Task> GetUsersAsync(string? filter, int pageIndex, in if (!string.IsNullOrWhiteSpace(filter)) { + filter = filter.Trim(); + // ! Navigation property. usersQuery = usersQuery.Where(u => u.Name.Contains(filter) || diff --git a/src/DevilDaggersInfo.Web.Server.Domain/Repositories/CustomLeaderboardRepository.cs b/src/DevilDaggersInfo.Web.Server.Domain/Repositories/CustomLeaderboardRepository.cs index d961b4baa..68dc0a871 100644 --- a/src/DevilDaggersInfo.Web.Server.Domain/Repositories/CustomLeaderboardRepository.cs +++ b/src/DevilDaggersInfo.Web.Server.Domain/Repositories/CustomLeaderboardRepository.cs @@ -58,12 +58,16 @@ public async Task> GetCustomLeaderboardOverviews // Casing is ignored by default because of IQueryable. if (!string.IsNullOrWhiteSpace(spawnsetFilter)) { + spawnsetFilter = spawnsetFilter.Trim(); + // ! Navigation property. customLeaderboardsQuery = customLeaderboardsQuery.Where(cl => cl.Spawnset!.Name.Contains(spawnsetFilter)); } if (!string.IsNullOrWhiteSpace(authorFilter)) { + authorFilter = authorFilter.Trim(); + // ! Navigation property. customLeaderboardsQuery = customLeaderboardsQuery.Where(cl => cl.Spawnset!.Player!.PlayerName.Contains(authorFilter)); } diff --git a/src/DevilDaggersInfo.Web.Server/Controllers/Ddae/ModsController.cs b/src/DevilDaggersInfo.Web.Server/Controllers/Ddae/ModsController.cs index c682a1276..65496f194 100644 --- a/src/DevilDaggersInfo.Web.Server/Controllers/Ddae/ModsController.cs +++ b/src/DevilDaggersInfo.Web.Server/Controllers/Ddae/ModsController.cs @@ -40,12 +40,17 @@ public async Task> GetMods(string? authorFilter = null, string? if (!string.IsNullOrWhiteSpace(authorFilter)) { + authorFilter = authorFilter.Trim(); + // ! Navigation property. modsQuery = modsQuery.Where(m => m.PlayerMods!.Exists(pm => pm.Player!.PlayerName.Contains(authorFilter, StringComparison.InvariantCultureIgnoreCase))); } if (!string.IsNullOrWhiteSpace(nameFilter)) + { + nameFilter = nameFilter.Trim(); modsQuery = modsQuery.Where(m => m.Name.Contains(nameFilter, StringComparison.InvariantCultureIgnoreCase)); + } List mods = modsQuery.ToList(); diff --git a/src/DevilDaggersInfo.Web.Server/Controllers/Ddse/SpawnsetsController.cs b/src/DevilDaggersInfo.Web.Server/Controllers/Ddse/SpawnsetsController.cs index 15c5860c3..ca1d23e90 100644 --- a/src/DevilDaggersInfo.Web.Server/Controllers/Ddse/SpawnsetsController.cs +++ b/src/DevilDaggersInfo.Web.Server/Controllers/Ddse/SpawnsetsController.cs @@ -27,12 +27,17 @@ public async Task> GetSpawnsets(string? authorFilter = nul if (!string.IsNullOrWhiteSpace(authorFilter)) { + authorFilter = authorFilter.Trim(); + // ! Navigation property. spawnsetsQuery = spawnsetsQuery.Where(sf => sf.Player!.PlayerName.Contains(authorFilter)); } if (!string.IsNullOrWhiteSpace(nameFilter)) + { + nameFilter = nameFilter.Trim(); spawnsetsQuery = spawnsetsQuery.Where(sf => sf.Name.Contains(nameFilter)); + } List spawnsetsWithCustomLeaderboardIds = await _dbContext.CustomLeaderboards .Select(cl => cl.SpawnsetId) diff --git a/src/DevilDaggersInfo.Web.Server/Controllers/Main/ModsController.cs b/src/DevilDaggersInfo.Web.Server/Controllers/Main/ModsController.cs index bb7dd7dda..087e4d597 100644 --- a/src/DevilDaggersInfo.Web.Server/Controllers/Main/ModsController.cs +++ b/src/DevilDaggersInfo.Web.Server/Controllers/Main/ModsController.cs @@ -51,10 +51,15 @@ public async Task>> GetMods( // OrdinalIgnoreCase works here because this is an IEnumerable. Spawnset and custom leaderboard queries do not require this, and use IQueryable, so OrdinalIgnoreCase will not work there and casing is ignored by default. if (!string.IsNullOrWhiteSpace(modFilter)) + { + modFilter = modFilter.Trim(); modsQuery = modsQuery.Where(m => m.Name.Contains(modFilter, StringComparison.OrdinalIgnoreCase)); + } if (!string.IsNullOrWhiteSpace(authorFilter)) { + authorFilter = authorFilter.Trim(); + // ! Navigation property. modsQuery = modsQuery.Where(m => m.PlayerMods!.Exists(pm => pm.Player!.PlayerName.Contains(authorFilter, StringComparison.OrdinalIgnoreCase))); } diff --git a/src/DevilDaggersInfo.Web.Server/Controllers/Main/SpawnsetsController.cs b/src/DevilDaggersInfo.Web.Server/Controllers/Main/SpawnsetsController.cs index 6fc8297da..db7fe0a12 100644 --- a/src/DevilDaggersInfo.Web.Server/Controllers/Main/SpawnsetsController.cs +++ b/src/DevilDaggersInfo.Web.Server/Controllers/Main/SpawnsetsController.cs @@ -50,10 +50,15 @@ public async Task>> GetSpawnsets( // Casing is ignored by default because of IQueryable. if (!string.IsNullOrWhiteSpace(spawnsetFilter)) + { + spawnsetFilter = spawnsetFilter.Trim(); spawnsetsQuery = spawnsetsQuery.Where(s => s.Name.Contains(spawnsetFilter)); + } if (!string.IsNullOrWhiteSpace(authorFilter)) { + authorFilter = authorFilter.Trim(); + // ! Navigation property. spawnsetsQuery = spawnsetsQuery.Where(s => s.Player!.PlayerName.Contains(authorFilter)); }