From 374b7f2f039211d5a8fb80348b72070841f393ec Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 22 Apr 2013 00:38:03 -0400 Subject: new Artist entity --- .../UserLibrary/BaseItemsByNameService.cs | 66 ++++++++++++++++++---- 1 file changed, 55 insertions(+), 11 deletions(-) (limited to 'MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs') diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs index 0a2d6453a..8f2264c6a 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs @@ -50,9 +50,18 @@ namespace MediaBrowser.Api.UserLibrary /// Task{ItemsResult}. protected async Task GetResult(GetItemsByName request) { - var user = UserManager.GetUserById(request.UserId); + User user = null; + BaseItem item; - var item = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.ParentId, UserManager, LibraryManager, user.Id); + if (request.UserId.HasValue) + { + user = UserManager.GetUserById(request.UserId.Value); + item = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.ParentId, UserManager, LibraryManager, user.Id); + } + else + { + item = string.IsNullOrEmpty(request.ParentId) ? LibraryManager.RootFolder : DtoBuilder.GetItemByClientId(request.ParentId, UserManager, LibraryManager); + } IEnumerable items; @@ -60,16 +69,23 @@ namespace MediaBrowser.Api.UserLibrary { var folder = (Folder)item; - items = request.Recursive ? folder.GetRecursiveChildren(user) : folder.GetChildren(user); + if (request.UserId.HasValue) + { + items = request.Recursive ? folder.GetRecursiveChildren(user) : folder.GetChildren(user); + } + else + { + items = request.Recursive ? folder.RecursiveChildren: folder.Children; + } } else { items = new[] { item }; } - items = FilterItems(request, items, user); + items = FilterItems(request, items); - var extractedItems = GetAllItems(request, items, user); + var extractedItems = GetAllItems(request, items); extractedItems = FilterItems(request, extractedItems, user); extractedItems = SortItems(request, extractedItems); @@ -187,9 +203,8 @@ namespace MediaBrowser.Api.UserLibrary /// /// The request. /// The items. - /// The user. /// IEnumerable{BaseItem}. - private IEnumerable FilterItems(GetItemsByName request, IEnumerable items, User user) + private IEnumerable FilterItems(GetItemsByName request, IEnumerable items) { // Exclude item types if (!string.IsNullOrEmpty(request.ExcludeItemTypes)) @@ -213,9 +228,8 @@ namespace MediaBrowser.Api.UserLibrary /// /// The request. /// The items. - /// The user. /// IEnumerable{Tuple{System.StringFunc{System.Int32}}}. - protected abstract IEnumerable> GetAllItems(GetItemsByName request, IEnumerable items, User user); + protected abstract IEnumerable> GetAllItems(GetItemsByName request, IEnumerable items); /// /// Gets the dto. @@ -238,18 +252,36 @@ namespace MediaBrowser.Api.UserLibrary return null; } - var dto = await new DtoBuilder(Logger, LibraryManager, UserDataRepository).GetBaseItemDto(item, user, fields).ConfigureAwait(false); + var dto = user == null ? await new DtoBuilder(Logger, LibraryManager, UserDataRepository).GetBaseItemDto(item, fields).ConfigureAwait(false) : + await new DtoBuilder(Logger, LibraryManager, UserDataRepository).GetBaseItemDto(item, user, fields).ConfigureAwait(false); if (fields.Contains(ItemFields.ItemCounts)) { var items = stub.Items; dto.ChildCount = items.Count; - dto.RecentlyAddedItemCount = items.Count(i => i.IsRecentlyAdded(user)); + dto.RecentlyAddedItemCount = items.Count(i => i.IsRecentlyAdded()); } return dto; } + + /// + /// Gets the items. + /// + /// The user id. + /// IEnumerable{BaseItem}. + protected IEnumerable GetItems(Guid? userId) + { + if (userId.HasValue) + { + var user = UserManager.GetUserById(userId.Value); + + return UserManager.GetUserById(userId.Value).RootFolder.GetRecursiveChildren(user); + } + + return LibraryManager.RootFolder.RecursiveChildren; + } } /// @@ -257,12 +289,24 @@ namespace MediaBrowser.Api.UserLibrary /// public class GetItemsByName : BaseItemsRequest, IReturn { + /// + /// Gets or sets the user id. + /// + /// The user id. + [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; } + /// /// What to sort the results by /// /// The sort by. [ApiMember(Name = "SortBy", Description = "Optional. Options: SortName", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] public string SortBy { get; set; } + + public GetItemsByName() + { + Recursive = true; + } } public class IbnStub -- cgit v1.2.3