From bb1d1b835fc22e9f38b7f09c2fbfac7879ccc719 Mon Sep 17 00:00:00 2001 From: Slendy Date: Sun, 5 Feb 2023 21:06:05 -0600 Subject: [PATCH] Fix broken LBP3 categories --- .../Levels/Categories/HighestRatedCategory.cs | 9 ++++----- .../Levels/Categories/MostHeartedCategory.cs | 6 +++--- .../Levels/Categories/MostPlayedCategory.cs | 12 +++++++----- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/ProjectLighthouse/Levels/Categories/HighestRatedCategory.cs b/ProjectLighthouse/Levels/Categories/HighestRatedCategory.cs index 773565e5..aa41324d 100644 --- a/ProjectLighthouse/Levels/Categories/HighestRatedCategory.cs +++ b/ProjectLighthouse/Levels/Categories/HighestRatedCategory.cs @@ -2,10 +2,9 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Security.Cryptography; using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.PlayerData; -using Microsoft.EntityFrameworkCore; -using YamlDotNet.Core.Tokens; namespace LBPUnion.ProjectLighthouse.Levels.Categories; @@ -15,13 +14,13 @@ public class HighestRatedCategory : Category public override string Description { get; set; } = "Community Highest Rated content"; public override string IconHash { get; set; } = "g820603"; public override string Endpoint { get; set; } = "thumbs"; - public override Slot? GetPreviewSlot(Database database) => database.Slots.Where(s => s.Type == SlotType.User).AsEnumerable().OrderByDescending(s => s.Thumbsup).FirstOrDefault(); + public override Slot? GetPreviewSlot(Database database) => database.Slots.Where(s => s.Type == SlotType.User).AsEnumerable().MaxBy(s => s.Thumbsup); public override IEnumerable GetSlots (Database database, int pageStart, int pageSize) => database.Slots.ByGameVersion(GameVersion.LittleBigPlanet3, false, true) - .AsEnumerable() + .AsEnumerable() .OrderByDescending(s => s.Thumbsup) - .ThenBy(_ => EF.Functions.Random()) + .ThenBy(_ => RandomNumberGenerator.GetInt32(int.MaxValue)) .Skip(Math.Max(0, pageStart - 1)) .Take(Math.Min(pageSize, 20)); public override int GetTotalSlots(Database database) => database.Slots.Count(s => s.Type == SlotType.User); diff --git a/ProjectLighthouse/Levels/Categories/MostHeartedCategory.cs b/ProjectLighthouse/Levels/Categories/MostHeartedCategory.cs index aaf9d807..e11a055c 100644 --- a/ProjectLighthouse/Levels/Categories/MostHeartedCategory.cs +++ b/ProjectLighthouse/Levels/Categories/MostHeartedCategory.cs @@ -2,9 +2,9 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Security.Cryptography; using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.PlayerData; -using Microsoft.EntityFrameworkCore; namespace LBPUnion.ProjectLighthouse.Levels.Categories; @@ -18,9 +18,9 @@ public class MostHeartedCategory : Category public override IEnumerable GetSlots (Database database, int pageStart, int pageSize) => database.Slots.ByGameVersion(GameVersion.LittleBigPlanet3, false, true) - .AsEnumerable() + .AsEnumerable() .OrderByDescending(s => s.Hearts) - .ThenBy(_ => EF.Functions.Random()) + .ThenBy(_ => RandomNumberGenerator.GetInt32(int.MaxValue)) .Skip(Math.Max(0, pageStart - 1)) .Take(Math.Min(pageSize, 20)); public override int GetTotalSlots(Database database) => database.Slots.Count(s => s.Type == SlotType.User); diff --git a/ProjectLighthouse/Levels/Categories/MostPlayedCategory.cs b/ProjectLighthouse/Levels/Categories/MostPlayedCategory.cs index 5058e0a9..f69870a6 100644 --- a/ProjectLighthouse/Levels/Categories/MostPlayedCategory.cs +++ b/ProjectLighthouse/Levels/Categories/MostPlayedCategory.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Linq; using LBPUnion.ProjectLighthouse.Extensions; using LBPUnion.ProjectLighthouse.PlayerData; -using Microsoft.EntityFrameworkCore; namespace LBPUnion.ProjectLighthouse.Levels.Categories; @@ -14,13 +13,16 @@ public class MostPlayedCategory : Category public override string Description { get; set; } = "The most played content"; public override string IconHash { get; set; } = "g820608"; public override string Endpoint { get; set; } = "mostUniquePlays"; - public override Slot? GetPreviewSlot(Database database) => database.Slots.Where(s => s.Type == SlotType.User).AsEnumerable().MaxBy(s => s.PlaysUnique); + public override Slot? GetPreviewSlot(Database database) => database.Slots + .Where(s => s.Type == SlotType.User) + .OrderByDescending(s => s.PlaysLBP1Unique + s.PlaysLBP2Unique + s.PlaysLBP3Unique) + .ThenByDescending(s => s.PlaysLBP1 + s.PlaysLBP2 + s.PlaysLBP3) + .FirstOrDefault(); public override IEnumerable GetSlots (Database database, int pageStart, int pageSize) => database.Slots.ByGameVersion(GameVersion.LittleBigPlanet3, false, true) - .AsEnumerable() - .OrderByDescending(s => s.PlaysUnique) - .ThenBy(_ => EF.Functions.Random()) + .OrderByDescending(s => s.PlaysLBP1Unique + s.PlaysLBP2Unique + s.PlaysLBP3Unique) + .ThenByDescending(s => s.PlaysLBP1 + s.PlaysLBP2 + s.PlaysLBP3) .Skip(Math.Max(0, pageStart - 1)) .Take(Math.Min(pageSize, 20)); public override int GetTotalSlots(Database database) => database.Slots.Count(s => s.Type == SlotType.User);