Fix review gameVersion detection

Closes #251
This commit is contained in:
jvyden 2022-03-26 17:01:18 -04:00
commit a9380ac8e8
No known key found for this signature in database
GPG key ID: 18BCF2BE0262B278
2 changed files with 36 additions and 14 deletions

View file

@ -6,6 +6,7 @@ using System.Linq;
using System.Threading.Tasks;
using System.Xml.Serialization;
using LBPUnion.ProjectLighthouse.Helpers;
using LBPUnion.ProjectLighthouse.Helpers.Extensions;
using LBPUnion.ProjectLighthouse.Serialization;
using LBPUnion.ProjectLighthouse.Types;
using LBPUnion.ProjectLighthouse.Types.Levels;
@ -144,7 +145,7 @@ public class ReviewController : ControllerBase
Slot? slot = await this.database.Slots.FirstOrDefaultAsync(s => s.SlotId == slotId);
if (slot == null) return this.BadRequest();
IQueryable<Review?> reviews = this.database.Reviews.Where(r => r.SlotId == slotId && r.Slot.GameVersion <= gameVersion)
IQueryable<Review?> reviews = this.database.Reviews.ByGameVersion(gameVersion, true)
.Include(r => r.Reviewer)
.Include(r => r.Slot)
.OrderByDescending(r => r.ThumbsUp)
@ -152,17 +153,17 @@ public class ReviewController : ControllerBase
.Skip(pageStart - 1)
.Take(pageSize);
string inner = reviews.ToList()
.Aggregate
(
string.Empty,
(current, review) =>
{
if (review == null) return current;
string inner = reviews.ToList().Aggregate
(
string.Empty,
(current, review) =>
{
if (review == null) return current;
return current + review.Serialize();
}
);
return current + review.Serialize();
}
);
string response = LbpSerializer.TaggedStringElement
(
@ -194,12 +195,14 @@ public class ReviewController : ControllerBase
GameVersion gameVersion = gameToken.GameVersion;
IEnumerable<Review> reviews = this.database.Reviews.Where(r => r.Reviewer.Username == username && r.Slot.GameVersion <= gameVersion)
IEnumerable<Review?> reviews = this.database.Reviews.ByGameVersion(gameVersion, true)
.Where(r => r.Reviewer.Username == username)
.Include(r => r.Reviewer)
.Include(r => r.Slot)
.OrderByDescending(r => r.Timestamp)
.Skip(pageStart - 1)
.Take(pageSize);
.Take(pageSize)
.AsEnumerable();
string inner = reviews.Aggregate
(

View file

@ -1,11 +1,12 @@
using System.Linq;
using LBPUnion.ProjectLighthouse.Types;
using LBPUnion.ProjectLighthouse.Types.Levels;
using LBPUnion.ProjectLighthouse.Types.Reviews;
using Microsoft.EntityFrameworkCore;
namespace LBPUnion.ProjectLighthouse.Helpers.Extensions;
public static class SlotsExtensions
public static class DatabaseExtensions
{
public static IQueryable<Slot> ByGameVersion
(this DbSet<Slot> set, GameVersion gameVersion, bool includeSublevels = false)
@ -28,4 +29,22 @@ public static class SlotsExtensions
return query;
}
public static IQueryable<Review> ByGameVersion(this IQueryable<Review> queryable, GameVersion gameVersion, bool includeSublevels = false)
{
IQueryable<Review> query = queryable.Include(r => r.Slot).Include(r => r.Slot.Creator).Include(r => r.Slot.Location);
if (gameVersion == GameVersion.LittleBigPlanetVita || gameVersion == GameVersion.LittleBigPlanetPSP || gameVersion == GameVersion.Unknown)
{
query = query.Where(r => r.Slot.GameVersion == gameVersion);
}
else
{
query = query.Where(r => r.Slot.GameVersion <= gameVersion);
}
if (!includeSublevels) query = query.Where(r => !r.Slot.SubLevel);
return query;
}
}