filter locked levels from lucky dip (#1055)

* filter locked levels from lucky dip

* yeah sure

* put the filter in a more reasonable place
This commit is contained in:
Kat 2024-08-28 18:16:08 -07:00 committed by GitHub
parent a0157c9a99
commit fb2192d37d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 18 additions and 2 deletions

View file

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

View file

@ -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<SlotEntity> GetItems(DatabaseContext database, GameTokenEntity token, SlotQueryBuilder queryBuilder) =>
database.Slots.Where(queryBuilder.Build())
public override IQueryable<SlotEntity> GetItems(DatabaseContext database, GameTokenEntity token, SlotQueryBuilder queryBuilder)
{
queryBuilder.AddFilter(new LockedSlotFilter());
return database.Slots.Where(queryBuilder.Build())
.ApplyOrdering(new SlotSortBuilder<SlotEntity>().AddSort(new RandomFirstUploadedSort()));
}
}

View file

@ -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<Func<SlotEntity, bool>> GetPredicate() => s => !s.InitiallyLocked;
}