diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs index 13f9afa8..f71267ba 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs @@ -263,6 +263,7 @@ public class SlotsController : ControllerBase PaginationData pageData = this.Request.GetPaginationData(); SlotQueryBuilder queryBuilder = this.FilterFromRequest(token); + queryBuilder.AddFilter(new LockedSlotFilter()); pageData.TotalElements = await StatisticsHelper.SlotCount(this.database, queryBuilder); diff --git a/ProjectLighthouse.Servers.GameServer/Types/Categories/LuckyDipCategory.cs b/ProjectLighthouse.Servers.GameServer/Types/Categories/LuckyDipCategory.cs index 93bea880..6d8528b4 100644 --- a/ProjectLighthouse.Servers.GameServer/Types/Categories/LuckyDipCategory.cs +++ b/ProjectLighthouse.Servers.GameServer/Types/Categories/LuckyDipCategory.cs @@ -2,6 +2,7 @@ using LBPUnion.ProjectLighthouse.Database; using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.Filter; +using LBPUnion.ProjectLighthouse.Filter.Filters; using LBPUnion.ProjectLighthouse.Filter.Sorts; using LBPUnion.ProjectLighthouse.Types.Entities.Level; using LBPUnion.ProjectLighthouse.Types.Entities.Token; @@ -16,7 +17,10 @@ public class LuckyDipCategory : SlotCategory public override string Endpoint { get; set; } = "lucky_dip"; public override string Tag => "lucky_dip"; - public override IQueryable GetItems(DatabaseContext database, GameTokenEntity token, SlotQueryBuilder queryBuilder) => - database.Slots.Where(queryBuilder.Build()) + public override IQueryable GetItems(DatabaseContext database, GameTokenEntity token, SlotQueryBuilder queryBuilder) + { + queryBuilder.AddFilter(new LockedSlotFilter()); + return database.Slots.Where(queryBuilder.Build()) .ApplyOrdering(new SlotSortBuilder().AddSort(new RandomFirstUploadedSort())); + } } \ No newline at end of file diff --git a/ProjectLighthouse/Filter/Filters/LockedSlotFilter.cs b/ProjectLighthouse/Filter/Filters/LockedSlotFilter.cs new file mode 100644 index 00000000..185b4565 --- /dev/null +++ b/ProjectLighthouse/Filter/Filters/LockedSlotFilter.cs @@ -0,0 +1,11 @@ +using System; +using System.Linq.Expressions; +using LBPUnion.ProjectLighthouse.Types.Entities.Level; +using LBPUnion.ProjectLighthouse.Types.Filter; + +namespace LBPUnion.ProjectLighthouse.Filter.Filters; + +public class LockedSlotFilter : ISlotFilter +{ + public Expression> GetPredicate() => s => !s.InitiallyLocked; +} \ No newline at end of file