Fix hearted and queued levels on LBP Vita

This commit is contained in:
Slendy 2023-03-04 21:41:49 -06:00
parent e3dcbe75e1
commit 9d25f56e64
No known key found for this signature in database
GPG key ID: 7288D68361B91428

View file

@ -319,39 +319,42 @@ public class ListController : ControllerBase
FavouriteSlots, FavouriteSlots,
} }
private GameVersion getGameFilter(string? gameFilterType, GameVersion version) private static GameVersion getGameFilter(string? gameFilterType, GameVersion version)
{ {
if (version == GameVersion.LittleBigPlanetVita) return GameVersion.LittleBigPlanetVita; return version switch
if (version == GameVersion.LittleBigPlanetPSP) return GameVersion.LittleBigPlanetPSP;
return gameFilterType switch
{ {
"lbp1" => GameVersion.LittleBigPlanet1, GameVersion.LittleBigPlanetVita => GameVersion.LittleBigPlanetVita,
"lbp2" => GameVersion.LittleBigPlanet2, GameVersion.LittleBigPlanetPSP => GameVersion.LittleBigPlanetPSP,
"lbp3" => GameVersion.LittleBigPlanet3, _ => gameFilterType switch
"both" => GameVersion.LittleBigPlanet2, // LBP2 default option {
null => GameVersion.LittleBigPlanet1, "lbp1" => GameVersion.LittleBigPlanet1,
_ => GameVersion.Unknown, "lbp2" => GameVersion.LittleBigPlanet2,
"lbp3" => GameVersion.LittleBigPlanet3,
"both" => GameVersion.LittleBigPlanet2, // LBP2 default option
null => GameVersion.LittleBigPlanet1,
_ => GameVersion.Unknown,
}
}; };
} }
private IQueryable<Slot> filterListByRequest(string? gameFilterType, string? dateFilterType, GameVersion version, string username, ListFilterType filterType) private IQueryable<Slot> filterListByRequest(string? gameFilterType, string? dateFilterType, GameVersion version, string username, ListFilterType filterType)
{ {
if (version == GameVersion.LittleBigPlanetVita || version == GameVersion.LittleBigPlanetPSP || version == GameVersion.Unknown) if (version is GameVersion.LittleBigPlanetPSP or GameVersion.Unknown)
{ {
return this.database.Slots.ByGameVersion(version, false, true); return this.database.Slots.ByGameVersion(version, false, true);
} }
string _dateFilterType = dateFilterType ?? ""; long oldestTime = dateFilterType switch
long oldestTime = _dateFilterType switch
{ {
"thisWeek" => DateTimeOffset.Now.AddDays(-7).ToUnixTimeMilliseconds(), "thisWeek" => DateTimeOffset.Now.AddDays(-7).ToUnixTimeMilliseconds(),
"thisMonth" => DateTimeOffset.Now.AddDays(-31).ToUnixTimeMilliseconds(), "thisMonth" => DateTimeOffset.Now.AddDays(-31).ToUnixTimeMilliseconds(),
_ => 0, _ => 0,
}; };
GameVersion gameVersion = this.getGameFilter(gameFilterType, version); GameVersion gameVersion = getGameFilter(gameFilterType, version);
// The filtering only cares if this isn't equal to 'both'
if (version == GameVersion.LittleBigPlanetVita) gameFilterType = "lbp2";
if (filterType == ListFilterType.Queue) if (filterType == ListFilterType.Queue)
{ {
@ -369,23 +372,22 @@ public class ListController : ControllerBase
.Where(q => q.Slot.Type == SlotType.User && !q.Slot.Hidden && q.Slot.GameVersion == gameVersion && q.Slot.FirstUploaded >= oldestTime); .Where(q => q.Slot.Type == SlotType.User && !q.Slot.Hidden && q.Slot.GameVersion == gameVersion && q.Slot.FirstUploaded >= oldestTime);
return whereQueuedLevels.OrderByDescending(q => q.QueuedLevelId).Include(q => q.Slot.Creator).Select(q => q.Slot).ByGameVersion(gameVersion, false, false, true); return whereQueuedLevels.OrderByDescending(q => q.QueuedLevelId).Include(q => q.Slot.Creator).Select(q => q.Slot).ByGameVersion(gameVersion, false, false, true);
} else }
{
IQueryable<HeartedLevel> whereHeartedLevels;
// ReSharper disable once ConvertIfStatementToConditionalTernaryExpression IQueryable<HeartedLevel> whereHeartedLevels;
if (gameFilterType == "both")
// Get game versions less than the current version // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression
// Needs support for LBP3 ("both" = LBP1+2) if (gameFilterType == "both")
whereHeartedLevels = this.database.HeartedLevels.Where(h => h.User.Username == username) // Get game versions less than the current version
// Needs support for LBP3 ("both" = LBP1+2)
whereHeartedLevels = this.database.HeartedLevels.Where(h => h.User.Username == username)
.Where(h => (h.Slot.Type == SlotType.User || h.Slot.Type == SlotType.Developer) && !h.Slot.Hidden && h.Slot.GameVersion <= gameVersion && h.Slot.FirstUploaded >= oldestTime); .Where(h => (h.Slot.Type == SlotType.User || h.Slot.Type == SlotType.Developer) && !h.Slot.Hidden && h.Slot.GameVersion <= gameVersion && h.Slot.FirstUploaded >= oldestTime);
else else
// Get game versions exactly equal to gamefiltertype // Get game versions exactly equal to gamefiltertype
whereHeartedLevels = this.database.HeartedLevels.Where(h => h.User.Username == username) whereHeartedLevels = this.database.HeartedLevels.Where(h => h.User.Username == username)
.Where(h => (h.Slot.Type == SlotType.User || h.Slot.Type == SlotType.Developer) && !h.Slot.Hidden && h.Slot.GameVersion == gameVersion && h.Slot.FirstUploaded >= oldestTime); .Where(h => (h.Slot.Type == SlotType.User || h.Slot.Type == SlotType.Developer) && !h.Slot.Hidden && h.Slot.GameVersion == gameVersion && h.Slot.FirstUploaded >= oldestTime);
return whereHeartedLevels.OrderByDescending(h => h.HeartedLevelId).Include(h => h.Slot.Creator).Select(h => h.Slot).ByGameVersion(gameVersion, false, false, true); return whereHeartedLevels.OrderByDescending(h => h.HeartedLevelId).Include(h => h.Slot.Creator).Select(h => h.Slot).ByGameVersion(gameVersion, false, false, true);
}
} }
#endregion Filtering #endregion Filtering
} }