aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Dto/DtoService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/Dto/DtoService.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs36
1 files changed, 26 insertions, 10 deletions
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index 061898176..6684c4efb 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -63,6 +63,26 @@ namespace MediaBrowser.Server.Implementations.Dto
/// <exception cref="System.ArgumentNullException">item</exception>
public BaseItemDto GetBaseItemDto(BaseItem item, List<ItemFields> fields, User user = null, BaseItem owner = null)
{
+ var byName = item as IItemByName;
+
+ if (byName != null)
+ {
+ var libraryItems = user != null ?
+ user.RootFolder.GetRecursiveChildren(user) :
+ _libraryManager.RootFolder.RecursiveChildren;
+
+ var dto = GetBaseItemDtoInternal(item, fields, user);
+
+ SetItemByNameInfo(item, dto, byName.GetTaggedItems(libraryItems).ToList(), user);
+
+ return dto;
+ }
+
+ return GetBaseItemDtoInternal(item, fields, user, owner);
+ }
+
+ private BaseItemDto GetBaseItemDtoInternal(BaseItem item, List<ItemFields> fields, User user = null, BaseItem owner = null)
+ {
if (item == null)
{
throw new ArgumentNullException("item");
@@ -141,20 +161,18 @@ namespace MediaBrowser.Server.Implementations.Dto
return dto;
}
- public BaseItemDto GetItemByNameDto<T>(T item, List<ItemFields> fields, User user = null)
+ public BaseItemDto GetItemByNameDto<T>(T item, List<ItemFields> fields, List<BaseItem> taggedItems, User user = null)
where T : BaseItem, IItemByName
{
- var libraryItems = user != null ? user.RootFolder.GetRecursiveChildren(user) :
- _libraryManager.RootFolder.RecursiveChildren;
+ var dto = GetBaseItemDtoInternal(item, fields, user);
+
+ SetItemByNameInfo(item, dto, taggedItems, user);
- return GetItemByNameDto(item, fields, item.GetTaggedItems(libraryItems).ToList(), user);
+ return dto;
}
- public BaseItemDto GetItemByNameDto<T>(T item, List<ItemFields> fields, List<BaseItem> taggedItems, User user = null)
- where T : BaseItem, IItemByName
+ private void SetItemByNameInfo(BaseItem item, BaseItemDto dto, List<BaseItem> taggedItems, User user = null)
{
- var dto = GetBaseItemDto(item, fields, user);
-
if (item is MusicArtist || item is MusicGenre)
{
dto.AlbumCount = taggedItems.Count(i => i is MusicAlbum);
@@ -181,8 +199,6 @@ namespace MediaBrowser.Server.Implementations.Dto
}
dto.ChildCount = taggedItems.Count;
-
- return dto;
}
/// <summary>