From 57904b3b4ae5c2e44509c7be3902ca16f09fb370 Mon Sep 17 00:00:00 2001 From: Spirtix Date: Sun, 26 Nov 2023 19:47:54 +0100 Subject: [PATCH] leaderboard query fixes --- src/Services/AchievementService.cs | 4 ++-- src/Services/GameDataService.cs | 13 +++++-------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/Services/AchievementService.cs b/src/Services/AchievementService.cs index a2cd206..87e8ad6 100644 --- a/src/Services/AchievementService.cs +++ b/src/Services/AchievementService.cs @@ -170,9 +170,9 @@ namespace sodoff.Services { List achievementInfo = new(); var topAchievers = ctx.AchievementPoints.Where(x => x.Type == request.PointTypeID) .Select(e => new { e.Viking.Uid, e.Viking.Name, e.Value }) + .OrderByDescending(e => e.Value) .Skip((request.Page - 1) * request.Quantity) - .Take(request.Quantity) - .OrderByDescending(e => e.Value); + .Take(request.Quantity); foreach (var a in topAchievers) { achievementInfo.Add(new UserAchievementInfo { diff --git a/src/Services/GameDataService.cs b/src/Services/GameDataService.cs index 834f64f..f130b8b 100644 --- a/src/Services/GameDataService.cs +++ b/src/Services/GameDataService.cs @@ -27,7 +27,7 @@ public class GameDataService { viking.GameData.Add(gameData); } - gameData.DatePlayed = DateTime.Now; + gameData.DatePlayed = DateTime.UtcNow; SavePairs(gameData, xmlDocumentData); ctx.SaveChanges(); return true; @@ -41,16 +41,13 @@ public class GameDataService { if (startDate != null && endDate != null) query = query.Where(x => x.DatePlayed >= startDate && x.DatePlayed <= endDate.Value.AddMinutes(2)); - selectedData = query.SelectMany(e => e.GameDataPairs) - .Where(x => x.Name == key) - .Select(e => new GameDataResponse(e.GameData.Viking.Name, e.GameData.Viking.Uid, e.GameData.DatePlayed, e.GameData.Win, e.GameData.Loss, e.Value)) - .Take(count) - .ToList(); + var query2 = query.SelectMany(e => e.GameDataPairs) + .Where(x => x.Name == key); if (AscendingOrder) - selectedData.Sort((a, b) => a.Value.CompareTo(b.Value)); + selectedData = query2.OrderBy(e => e.Value).Select(e => new GameDataResponse(e.GameData.Viking.Name, e.GameData.Viking.Uid, e.GameData.DatePlayed, e.GameData.Win, e.GameData.Loss, e.Value)).Take(count).ToList(); else - selectedData.Sort((a, b) => b.Value.CompareTo(a.Value)); + selectedData = query2.OrderByDescending(e => e.Value).Select(e => new GameDataResponse(e.GameData.Viking.Name, e.GameData.Viking.Uid, e.GameData.DatePlayed, e.GameData.Win, e.GameData.Loss, e.Value)).Take(count).ToList(); return GetSummaryFromResponse(viking, isMultiplayer, difficulty, gameLevel, key, selectedData); }