diff options
| author | Björn Tenje Persson <bjorn@tenje.se> | 2025-12-20 04:36:38 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-19 20:36:38 -0700 |
| commit | 84f66dd54e74621e4d81cd57648c4d27411d82d9 (patch) | |
| tree | 7201607359a096d53ede21c94687c3487369f2b5 | |
| parent | d446fde0091b3b101b2735f21dd24e49f0fd5660 (diff) | |
Fixed Multi Sort in New ActivityManager (#15820)
| -rw-r--r-- | CONTRIBUTORS.md | 1 | ||||
| -rw-r--r-- | Jellyfin.Api/Controllers/ActivityLogController.cs | 3 | ||||
| -rw-r--r-- | Jellyfin.Data/Queries/ActivityLogQuery.cs | 5 | ||||
| -rw-r--r-- | Jellyfin.Server.Implementations/Activity/ActivityManager.cs | 21 |
4 files changed, 27 insertions, 3 deletions
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 0a4114478f..4406413daa 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -205,6 +205,7 @@ - [theshoeshiner](https://github.com/theshoeshiner) - [TokerX](https://github.com/TokerX) - [GeneMarks](https://github.com/GeneMarks) + - [bjorntp](https://github.com/bjorntp) # Emby Contributors diff --git a/Jellyfin.Api/Controllers/ActivityLogController.cs b/Jellyfin.Api/Controllers/ActivityLogController.cs index d5f2627739..47d3f4b7f7 100644 --- a/Jellyfin.Api/Controllers/ActivityLogController.cs +++ b/Jellyfin.Api/Controllers/ActivityLogController.cs @@ -38,6 +38,7 @@ public class ActivityLogController : BaseJellyfinApiController /// <param name="startIndex">The record index to start at. All items with a lower index will be dropped from the results.</param> /// <param name="limit">The maximum number of records to return.</param> /// <param name="minDate">The minimum date.</param> + /// <param name="maxDate">The maximum date.</param> /// <param name="hasUserId">Filter log entries if it has user id, or not.</param> /// <param name="name">Filter by name.</param> /// <param name="overview">Filter by overview.</param> @@ -56,6 +57,7 @@ public class ActivityLogController : BaseJellyfinApiController [FromQuery] int? startIndex, [FromQuery] int? limit, [FromQuery] DateTime? minDate, + [FromQuery] DateTime? maxDate, [FromQuery] bool? hasUserId, [FromQuery] string? name, [FromQuery] string? overview, @@ -72,6 +74,7 @@ public class ActivityLogController : BaseJellyfinApiController Skip = startIndex, Limit = limit, MinDate = minDate, + MaxDate = maxDate, HasUserId = hasUserId, Name = name, Overview = overview, diff --git a/Jellyfin.Data/Queries/ActivityLogQuery.cs b/Jellyfin.Data/Queries/ActivityLogQuery.cs index 95c52f8705..6de6c4c217 100644 --- a/Jellyfin.Data/Queries/ActivityLogQuery.cs +++ b/Jellyfin.Data/Queries/ActivityLogQuery.cs @@ -22,6 +22,11 @@ public class ActivityLogQuery : PaginatedQuery public DateTime? MinDate { get; set; } /// <summary> + /// Gets or sets the maximum date to query for. + /// </summary> + public DateTime? MaxDate { get; set; } + + /// <summary> /// Gets or sets the name filter. /// </summary> public string? Name { get; set; } diff --git a/Jellyfin.Server.Implementations/Activity/ActivityManager.cs b/Jellyfin.Server.Implementations/Activity/ActivityManager.cs index 7ee573f538..fe987b9d86 100644 --- a/Jellyfin.Server.Implementations/Activity/ActivityManager.cs +++ b/Jellyfin.Server.Implementations/Activity/ActivityManager.cs @@ -72,6 +72,11 @@ public class ActivityManager : IActivityManager entries = entries.Where(e => e.ActivityLog.DateCreated >= query.MinDate.Value); } + if (query.MaxDate is not null) + { + entries = entries.Where(e => e.ActivityLog.DateCreated <= query.MaxDate.Value); + } + if (!string.IsNullOrEmpty(query.Name)) { entries = entries.Where(e => EF.Functions.Like(e.ActivityLog.Name, $"%{query.Name}%")); @@ -166,9 +171,19 @@ public class ActivityManager : IActivityManager foreach (var (sortBy, sortOrder) in sorting) { var orderBy = MapOrderBy(sortBy); - ordered = sortOrder == SortOrder.Ascending - ? (ordered ?? query).OrderBy(orderBy) - : (ordered ?? query).OrderByDescending(orderBy); + + if (ordered == null) + { + ordered = sortOrder == SortOrder.Ascending + ? query.OrderBy(orderBy) + : query.OrderByDescending(orderBy); + } + else + { + ordered = sortOrder == SortOrder.Ascending + ? ordered.ThenBy(orderBy) + : ordered.ThenByDescending(orderBy); + } } return ordered; |
