|  | @@ -26,6 +26,34 @@ namespace MediaBrowser.Api
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              DTOBaseItem dto = new DTOBaseItem();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            List<Task> tasks = new List<Task>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            tasks.Add(AttachStudios(dto, item));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (includeChildren)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                tasks.Add(AttachChildren(dto, item, user));
 | 
	
		
			
				|  |  | +                tasks.Add(AttachLocalTrailers(dto, item, user));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (includePeople)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                tasks.Add(AttachPeople(dto, item));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // Make sure all the tasks we kicked off have completed.
 | 
	
		
			
				|  |  | +            if (tasks.Count > 0)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                await Task.WhenAll(tasks).ConfigureAwait(false);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            AttachBasicFields(dto, item, user);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return dto;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        private static void AttachBasicFields(DTOBaseItem dto, BaseItem item, User user)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  |              dto.AspectRatio = item.AspectRatio;
 | 
	
		
			
				|  |  |              dto.BackdropCount = item.BackdropImagePaths == null ? 0 : item.BackdropImagePaths.Count();
 | 
	
		
			
				|  |  |              dto.DateCreated = item.DateCreated;
 | 
	
	
		
			
				|  | @@ -81,18 +109,6 @@ namespace MediaBrowser.Api
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              dto.UserData = item.GetUserData(user);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            await AttachStudios(dto, item).ConfigureAwait(false);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            if (includeChildren)
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                await AttachChildren(dto, item, user).ConfigureAwait(false);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            if (includePeople)
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                await AttachPeople(dto, item).ConfigureAwait(false);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              Folder folder = item as Folder;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if (folder != null)
 | 
	
	
		
			
				|  | @@ -132,8 +148,6 @@ namespace MediaBrowser.Api
 | 
	
		
			
				|  |  |                      ScanType = video.ScanType
 | 
	
		
			
				|  |  |                  };
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            return dto;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          private static async Task AttachStudios(DTOBaseItem dto, BaseItem item)
 | 
	
	
		
			
				|  | @@ -171,13 +185,16 @@ namespace MediaBrowser.Api
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  dto.Children = await Task.WhenAll<DTOBaseItem>(children.Select(c => GetDTOBaseItem(c, user, false, false))).ConfigureAwait(false);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        private static async Task AttachLocalTrailers(DTOBaseItem dto, BaseItem item, User user)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  |              if (item.LocalTrailers != null && item.LocalTrailers.Any())
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  dto.LocalTrailers = await Task.WhenAll<DTOBaseItem>(item.LocalTrailers.Select(c => GetDTOBaseItem(c, user, false, false))).ConfigureAwait(false);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  |          private static async Task AttachPeople(DTOBaseItem dto, BaseItem item)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              // Attach People by transforming them into BaseItemPerson (DTO)
 |