Fix gameVersion comparison in queue and hearted levels

Closes #206
This commit is contained in:
jvyden 2022-07-29 16:14:36 -04:00
parent a5b1efe853
commit fc5b061b3a
No known key found for this signature in database
GPG key ID: 18BCF2BE0262B278
2 changed files with 11 additions and 17 deletions

View file

@ -1,4 +1,5 @@
#nullable enable #nullable enable
using LBPUnion.ProjectLighthouse.Extensions;
using LBPUnion.ProjectLighthouse.Levels; using LBPUnion.ProjectLighthouse.Levels;
using LBPUnion.ProjectLighthouse.PlayerData; using LBPUnion.ProjectLighthouse.PlayerData;
using LBPUnion.ProjectLighthouse.PlayerData.Profiles; using LBPUnion.ProjectLighthouse.PlayerData.Profiles;
@ -25,24 +26,21 @@ public class ListController : ControllerBase
#region Level Queue (lolcatftw) #region Level Queue (lolcatftw)
[HttpGet("slots/lolcatftw/{username}")] [HttpGet("slots/lolcatftw/{username}")]
public async Task<IActionResult> GetLevelQueue(string username, [FromQuery] int pageSize, [FromQuery] int pageStart) public async Task<IActionResult> GetQueuedLevels(string username, [FromQuery] int pageSize, [FromQuery] int pageStart)
{ {
GameToken? token = await this.database.GameTokenFromRequest(this.Request); GameToken? token = await this.database.GameTokenFromRequest(this.Request);
if (token == null) return this.StatusCode(403, ""); if (token == null) return this.StatusCode(403, "");
GameVersion gameVersion = token.GameVersion; GameVersion gameVersion = token.GameVersion;
IEnumerable<QueuedLevel> queuedLevels = this.database.QueuedLevels.Include(q => q.User) IEnumerable<Slot> queuedLevels = this.database.QueuedLevels.Where(q => q.User.Username == username)
.Include(q => q.Slot) .Select(q => q.Slot)
.Include(q => q.Slot.Location) .ByGameVersion(gameVersion, false, true)
.Include(q => q.Slot.Creator)
.Where(q => q.Slot.GameVersion <= gameVersion)
.Where(q => q.User.Username == username)
.Skip(pageStart - 1) .Skip(pageStart - 1)
.Take(Math.Min(pageSize, 30)) .Take(Math.Min(pageSize, 30))
.AsEnumerable(); .AsEnumerable();
string response = queuedLevels.Aggregate(string.Empty, (current, q) => current + q.Slot.Serialize(gameVersion)); string response = queuedLevels.Aggregate(string.Empty, (current, q) => current + q.Serialize(gameVersion));
return this.Ok return this.Ok
( (
@ -104,17 +102,14 @@ public class ListController : ControllerBase
GameVersion gameVersion = token.GameVersion; GameVersion gameVersion = token.GameVersion;
IEnumerable<HeartedLevel> heartedLevels = this.database.HeartedLevels.Include(q => q.User) IEnumerable<Slot> heartedLevels = this.database.HeartedLevels.Where(q => q.User.Username == username)
.Include(q => q.Slot) .Select(q => q.Slot)
.Include(q => q.Slot.Location) .ByGameVersion(gameVersion, false, true)
.Include(q => q.Slot.Creator)
.Where(q => q.Slot.GameVersion <= gameVersion)
.Where(q => q.User.Username == username)
.Skip(pageStart - 1) .Skip(pageStart - 1)
.Take(Math.Min(pageSize, 30)) .Take(Math.Min(pageSize, 30))
.AsEnumerable(); .AsEnumerable();
string response = heartedLevels.Aggregate(string.Empty, (current, q) => current + q.Slot.Serialize(gameVersion)); string response = heartedLevels.Aggregate(string.Empty, (current, q) => current + q.Serialize(gameVersion));
return this.Ok return this.Ok
( (

View file

@ -31,8 +31,7 @@ public class SearchController : ControllerBase
string[] keywords = query.Split(" "); string[] keywords = query.Split(" ");
IQueryable<Slot> dbQuery = this.database.Slots.Include IQueryable<Slot> dbQuery = this.database.Slots.Include(s => s.Creator)
(s => s.Creator)
.Include(s => s.Location) .Include(s => s.Location)
.OrderBy(s => !s.TeamPick) .OrderBy(s => !s.TeamPick)
.ThenByDescending(s => s.FirstUploaded) .ThenByDescending(s => s.FirstUploaded)