Fixed Multi Sort in New ActivityManager (#15820)
Some checks failed
Stale PR Check / Check PRs with merge conflicts (push) Has been cancelled
Project Automation / Project board (push) Has been cancelled
Merge Conflict Labeler / Labeling (push) Has been cancelled
CodeQL / Analyze (csharp) (push) Has been cancelled
OpenAPI / OpenAPI - HEAD (push) Has been cancelled
OpenAPI / OpenAPI - BASE (push) Has been cancelled
Tests / run-tests (macos-latest) (push) Has been cancelled
Tests / run-tests (ubuntu-latest) (push) Has been cancelled
Tests / run-tests (windows-latest) (push) Has been cancelled
OpenAPI / OpenAPI - Difference (push) Has been cancelled
OpenAPI / OpenAPI - Publish Unstable Spec (push) Has been cancelled
OpenAPI / OpenAPI - Publish Stable Spec (push) Has been cancelled
Stale Issue Labeler / Check for stale issues (push) Has been cancelled

This commit is contained in:
Björn Tenje Persson
2025-12-20 04:36:38 +01:00
committed by GitHub
parent d446fde009
commit 84f66dd54e
4 changed files with 27 additions and 3 deletions

View File

@@ -205,6 +205,7 @@
- [theshoeshiner](https://github.com/theshoeshiner) - [theshoeshiner](https://github.com/theshoeshiner)
- [TokerX](https://github.com/TokerX) - [TokerX](https://github.com/TokerX)
- [GeneMarks](https://github.com/GeneMarks) - [GeneMarks](https://github.com/GeneMarks)
- [bjorntp](https://github.com/bjorntp)
# Emby Contributors # Emby Contributors

View File

@@ -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="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="limit">The maximum number of records to return.</param>
/// <param name="minDate">The minimum date.</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="hasUserId">Filter log entries if it has user id, or not.</param>
/// <param name="name">Filter by name.</param> /// <param name="name">Filter by name.</param>
/// <param name="overview">Filter by overview.</param> /// <param name="overview">Filter by overview.</param>
@@ -56,6 +57,7 @@ public class ActivityLogController : BaseJellyfinApiController
[FromQuery] int? startIndex, [FromQuery] int? startIndex,
[FromQuery] int? limit, [FromQuery] int? limit,
[FromQuery] DateTime? minDate, [FromQuery] DateTime? minDate,
[FromQuery] DateTime? maxDate,
[FromQuery] bool? hasUserId, [FromQuery] bool? hasUserId,
[FromQuery] string? name, [FromQuery] string? name,
[FromQuery] string? overview, [FromQuery] string? overview,
@@ -72,6 +74,7 @@ public class ActivityLogController : BaseJellyfinApiController
Skip = startIndex, Skip = startIndex,
Limit = limit, Limit = limit,
MinDate = minDate, MinDate = minDate,
MaxDate = maxDate,
HasUserId = hasUserId, HasUserId = hasUserId,
Name = name, Name = name,
Overview = overview, Overview = overview,

View File

@@ -21,6 +21,11 @@ public class ActivityLogQuery : PaginatedQuery
/// </summary> /// </summary>
public DateTime? MinDate { get; set; } public DateTime? MinDate { get; set; }
/// <summary>
/// Gets or sets the maximum date to query for.
/// </summary>
public DateTime? MaxDate { get; set; }
/// <summary> /// <summary>
/// Gets or sets the name filter. /// Gets or sets the name filter.
/// </summary> /// </summary>

View File

@@ -72,6 +72,11 @@ public class ActivityManager : IActivityManager
entries = entries.Where(e => e.ActivityLog.DateCreated >= query.MinDate.Value); 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)) if (!string.IsNullOrEmpty(query.Name))
{ {
entries = entries.Where(e => EF.Functions.Like(e.ActivityLog.Name, $"%{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) foreach (var (sortBy, sortOrder) in sorting)
{ {
var orderBy = MapOrderBy(sortBy); var orderBy = MapOrderBy(sortBy);
ordered = sortOrder == SortOrder.Ascending
? (ordered ?? query).OrderBy(orderBy) if (ordered == null)
: (ordered ?? query).OrderByDescending(orderBy); {
ordered = sortOrder == SortOrder.Ascending
? query.OrderBy(orderBy)
: query.OrderByDescending(orderBy);
}
else
{
ordered = sortOrder == SortOrder.Ascending
? ordered.ThenBy(orderBy)
: ordered.ThenByDescending(orderBy);
}
} }
return ordered; return ordered;