aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserLibrary/PersonsService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/PersonsService.cs')
-rw-r--r--MediaBrowser.Api/UserLibrary/PersonsService.cs21
1 files changed, 9 insertions, 12 deletions
diff --git a/MediaBrowser.Api/UserLibrary/PersonsService.cs b/MediaBrowser.Api/UserLibrary/PersonsService.cs
index 08ee6e462..bd9898dcd 100644
--- a/MediaBrowser.Api/UserLibrary/PersonsService.cs
+++ b/MediaBrowser.Api/UserLibrary/PersonsService.cs
@@ -5,7 +5,6 @@ using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Model.Dto;
using ServiceStack;
-using System;
using System.Collections.Generic;
using System.Linq;
@@ -43,7 +42,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
}
/// <summary>
@@ -87,9 +86,9 @@ namespace MediaBrowser.Api.UserLibrary
var dtoOptions = GetDtoOptions(request);
- if (request.UserId.HasValue)
+ if (!string.IsNullOrWhiteSpace(request.UserId))
{
- var user = UserManager.GetUserById(request.UserId.Value);
+ var user = UserManager.GetUserById(request.UserId);
return DtoService.GetBaseItemDto(item, dtoOptions, user);
}
@@ -151,18 +150,16 @@ namespace MediaBrowser.Api.UserLibrary
/// <param name="itemsList">The items list.</param>
/// <param name="personTypes">The person types.</param>
/// <returns>IEnumerable{PersonInfo}.</returns>
- private IEnumerable<PersonInfo> GetAllPeople(IEnumerable<BaseItem> itemsList, string[] personTypes)
+ private IEnumerable<PersonInfo> GetAllPeople(IEnumerable<BaseItem> itemsList, IEnumerable<string> personTypes)
{
- var people = itemsList.SelectMany(i => i.People.OrderBy(p => p.SortOrder ?? int.MaxValue).ThenBy(p => p.Type));
+ var allIds = itemsList.Select(i => i.Id).ToList();
- if (personTypes.Length > 0)
+ var allPeople = LibraryManager.GetPeople(new InternalPeopleQuery
{
- people = people.Where(p =>
- personTypes.Contains(p.Type ?? string.Empty, StringComparer.OrdinalIgnoreCase) ||
- personTypes.Contains(p.Role ?? string.Empty, StringComparer.OrdinalIgnoreCase));
- }
+ PersonTypes = personTypes.ToList()
+ });
- return people;
+ return allPeople.Where(i => allIds.Contains(i.ItemId)).OrderBy(p => p.SortOrder ?? int.MaxValue).ThenBy(p => p.Type);
}
}
}