diff --git a/MW-GC.EventManager.API/Services/EventGenerator.cs b/MW-GC.EventManager.API/Services/EventGenerator.cs index ef40342..9b939ff 100644 --- a/MW-GC.EventManager.API/Services/EventGenerator.cs +++ b/MW-GC.EventManager.API/Services/EventGenerator.cs @@ -35,15 +35,16 @@ public static string GenerateName() private static List FilterActivities(IReadOnlyList activities, GenerateEventRequest req) { - if (!req.ThemedOnly && req.SelectedThemeIds.Count == 0 && req.SelectedHolidayIds.Count == 0) + if (!req.ThemedOnly && req.SelectedGameIds.Count == 0 && req.SelectedThemeIds.Count == 0 && req.SelectedHolidayIds.Count == 0) return activities.ToList(); return activities.Where(a => { + var isSelectedGame = req.SelectedGameIds.Count == 0 || req.SelectedGameIds.Contains(a.GameId); var hasThemes = req.SelectedThemeIds.Count == 0 || a.ThemeIds.Intersect(req.SelectedThemeIds).Any(); var hasHolidays = req.SelectedHolidayIds.Count == 0 || a.HolidayIds.Intersect(req.SelectedHolidayIds).Any(); var isThemed = !req.ThemedOnly || a.ThemeIds.Count > 0 || a.HolidayIds.Count > 0; - return hasThemes && hasHolidays && isThemed; + return isSelectedGame && hasThemes && hasHolidays && isThemed; }).ToList(); } diff --git a/MW-GC.EventManager.Shared/Requests/GenerateEventRequest.cs b/MW-GC.EventManager.Shared/Requests/GenerateEventRequest.cs index 01150a9..5f8040c 100644 --- a/MW-GC.EventManager.Shared/Requests/GenerateEventRequest.cs +++ b/MW-GC.EventManager.Shared/Requests/GenerateEventRequest.cs @@ -4,6 +4,7 @@ public record GenerateEventRequest { public int Count { get; init; } = 3; public bool ThemedOnly { get; init; } + public List SelectedGameIds { get; init; } = []; public List SelectedThemeIds { get; init; } = []; public List SelectedHolidayIds { get; init; } = []; public bool UniqueGamesOnly { get; init; } = true; diff --git a/MW-GC.EventManager.Web/MW-GC.EventManager.Web.csproj b/MW-GC.EventManager.Web/MW-GC.EventManager.Web.csproj index 8252e52..5521d96 100644 --- a/MW-GC.EventManager.Web/MW-GC.EventManager.Web.csproj +++ b/MW-GC.EventManager.Web/MW-GC.EventManager.Web.csproj @@ -4,12 +4,11 @@ net10.0 enable enable - service-worker-assets.js - - + + @@ -18,8 +17,4 @@ - - - - diff --git a/MW-GC.EventManager.Web/Pages/Events.razor b/MW-GC.EventManager.Web/Pages/Events.razor index 7f00517..8b1f488 100644 --- a/MW-GC.EventManager.Web/Pages/Events.razor +++ b/MW-GC.EventManager.Web/Pages/Events.razor @@ -110,9 +110,26 @@ - @* Theme / Holiday filters *@ + @* Game / Theme / Holiday filters *@ - + + + Filter by Games + Only randomize from specific games + @if (_games is not null) + { + + @foreach (var game in _games.OrderBy(g => g.Name)) + { + + } + + } + + + Filter by Themes Select specific themes @@ -127,7 +144,7 @@ } - + Filter by Holidays Select specific holidays @@ -151,7 +168,7 @@ Wrap="true">
Game & Activity Selections (@_custSelections.Count) - @if (_custThemedOnly || _custThemeIds.Count > 0 || _custHolidayIds.Count > 0) + @if (_custThemedOnly || _custGameIds.Count > 0 || _custThemeIds.Count > 0 || _custHolidayIds.Count > 0) { Click "Randomize All" to apply filters } @@ -377,6 +394,7 @@ private DateTime? _custDate = DateTime.Today; private DateTime? _custTime = DateTime.Today.AddHours(19); private bool _custThemedOnly; + private List _custGameIds = []; private List _custThemeIds = []; private List _custHolidayIds = []; private bool _custUniqueGames = true; @@ -434,6 +452,7 @@ _custDate = DateTime.Today; _custTime = DateTime.Today.AddHours(19); _custThemedOnly = false; + _custGameIds = []; _custThemeIds = []; _custHolidayIds = []; _custUniqueGames = true; @@ -451,6 +470,7 @@ _custTime = localStart; _custUniqueGames = e.UniqueGamesOnly; _custThemedOnly = false; + _custGameIds = []; _custThemeIds = []; _custHolidayIds = []; _custSelections = e.Selections.Select(s => new SlotSelection { GameId = s.Game.Id, ActivityId = s.Activity.Id }).ToList(); @@ -488,6 +508,8 @@ { if (_activities is null) return []; IEnumerable q = _activities; + if (_custGameIds.Count > 0) + q = q.Where(a => _custGameIds.Contains(a.GameId)); if (_custThemedOnly) q = q.Where(a => a.ThemeIds.Count > 0 || a.HolidayIds.Count > 0); if (_custThemeIds.Count > 0)