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)
- [TokerX](https://github.com/TokerX)
- [GeneMarks](https://github.com/GeneMarks)
- [bjorntp](https://github.com/bjorntp)
# 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="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,

View File

@@ -21,6 +21,11 @@ public class ActivityLogQuery : PaginatedQuery
/// </summary>
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>

View File

@@ -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);
if (ordered == null)
{
ordered = sortOrder == SortOrder.Ascending
? (ordered ?? query).OrderBy(orderBy)
: (ordered ?? query).OrderByDescending(orderBy);
? query.OrderBy(orderBy)
: query.OrderByDescending(orderBy);
}
else
{
ordered = sortOrder == SortOrder.Ascending
? ordered.ThenBy(orderBy)
: ordered.ThenByDescending(orderBy);
}
}
return ordered;