From ed018a8bea89f4a19dbfca2e21eb7207df2db332 Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Fri, 17 Aug 2012 13:37:26 -0400 Subject: Moved some logic into domain entities, which is possible now that we're embracing DTO's --- MediaBrowser.Controller/Kernel.cs | 163 ++------------------------------------ 1 file changed, 6 insertions(+), 157 deletions(-) (limited to 'MediaBrowser.Controller/Kernel.cs') diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs index 375b11a59..c11a40750 100644 --- a/MediaBrowser.Controller/Kernel.cs +++ b/MediaBrowser.Controller/Kernel.cs @@ -197,167 +197,16 @@ namespace MediaBrowser.Controller return RootFolder.FindById(id); } - /// - /// Determines if an item is allowed for a given user - /// - public bool IsParentalAllowed(BaseItem item, Guid userId) - { - // not yet implemented - return true; - } - - /// - /// Gets allowed children of an item - /// - public IEnumerable GetParentalAllowedChildren(Folder folder, Guid userId) - { - return folder.Children.Where(i => IsParentalAllowed(i, userId)); - } - - /// - /// Gets allowed recursive children of an item - /// - public IEnumerable GetParentalAllowedRecursiveChildren(Folder folder, Guid userId) - { - foreach (var item in GetParentalAllowedChildren(folder, userId)) - { - yield return item; - - var subFolder = item as Folder; - - if (subFolder != null) - { - foreach (var subitem in GetParentalAllowedRecursiveChildren(subFolder, userId)) - { - yield return subitem; - } - } - } - } - - /// - /// Gets user data for an item, if there is any - /// - public UserItemData GetUserItemData(Guid userId, Guid itemId) - { - User user = Users.First(u => u.Id == userId); - - if (user.ItemData.ContainsKey(itemId)) - { - return user.ItemData[itemId]; - } - - return null; - } - - /// - /// Gets all recently added items (recursive) within a folder, based on configuration and parental settings - /// - public IEnumerable GetRecentlyAddedItems(Folder parent, Guid userId) - { - DateTime now = DateTime.Now; - - User user = Users.First(u => u.Id == userId); - - return GetParentalAllowedRecursiveChildren(parent, userId).Where(i => !(i is Folder) && (now - i.DateCreated).TotalDays < user.RecentItemDays); - } - - /// - /// Gets all recently added unplayed items (recursive) within a folder, based on configuration and parental settings - /// - public IEnumerable GetRecentlyAddedUnplayedItems(Folder parent, Guid userId) - { - return GetRecentlyAddedItems(parent, userId).Where(i => - { - var userdata = GetUserItemData(userId, i.Id); - - return userdata == null || userdata.PlayCount == 0; - }); - } - - /// - /// Gets all in-progress items (recursive) within a folder - /// - public IEnumerable GetInProgressItems(Folder parent, Guid userId) - { - return GetParentalAllowedRecursiveChildren(parent, userId).Where(i => - { - if (i is Folder) - { - return false; - } - - var userdata = GetUserItemData(userId, i.Id); - - return userdata != null && userdata.PlaybackPosition.Ticks > 0; - }); - } - - /// - /// Finds all recursive items within a top-level parent that contain the given studio and are allowed for the current user - /// - public IEnumerable GetItemsWithStudio(Folder parent, string studio, Guid userId) - { - return GetParentalAllowedRecursiveChildren(parent, userId).Where(f => f.Studios != null && f.Studios.Any(s => s.Equals(studio, StringComparison.OrdinalIgnoreCase))); - } - - /// - /// Finds all recursive items within a top-level parent that contain the given person and are allowed for the current user - /// - /// Specify this to limit results to a specific PersonType - public IEnumerable GetItemsWithPerson(Folder parent, string person, PersonType? personType, Guid userId) - { - return GetParentalAllowedRecursiveChildren(parent, userId).Where(c => - { - if (c.People != null) - { - if (personType.HasValue) - { - return c.People.Any(p => p.Name.Equals(person, StringComparison.OrdinalIgnoreCase) && p.PersonType == personType.Value); - } - else - { - return c.People.Any(p => p.Name.Equals(person, StringComparison.OrdinalIgnoreCase)); - } - } - - return false; - }); - } - /// - /// Finds all recursive items within a top-level parent that contain the given genre and are allowed for the current user - /// - public IEnumerable GetItemsWithGenre(Folder parent, string genre, Guid userId) - { - return GetParentalAllowedRecursiveChildren(parent, userId).Where(f => f.Genres != null && f.Genres.Any(s => s.Equals(genre, StringComparison.OrdinalIgnoreCase))); - } - - /// - /// Finds all recursive items within a top-level parent that contain the given year and are allowed for the current user - /// - public IEnumerable GetItemsWithYear(Folder parent, int year, Guid userId) - { - return GetParentalAllowedRecursiveChildren(parent, userId).Where(f => f.ProductionYear.HasValue && f.ProductionYear == year); - } - - /// - /// Finds all recursive items within a top-level parent that contain the given person and are allowed for the current user - /// - public IEnumerable GetItemsWithPerson(Folder parent, string personName, Guid userId) - { - return GetParentalAllowedRecursiveChildren(parent, userId).Where(f => f.People != null && f.People.Any(s => s.Name.Equals(personName, StringComparison.OrdinalIgnoreCase))); - } - /// /// Gets all years from all recursive children of a folder /// The CategoryInfo class is used to keep track of the number of times each year appears /// - public IEnumerable> GetAllYears(Folder parent, Guid userId) + public IEnumerable> GetAllYears(Folder parent, User user) { Dictionary data = new Dictionary(); // Get all the allowed recursive children - IEnumerable allItems = Kernel.Instance.GetParentalAllowedRecursiveChildren(parent, userId); + IEnumerable allItems = parent.GetParentalAllowedRecursiveChildren(user); foreach (var item in allItems) { @@ -403,12 +252,12 @@ namespace MediaBrowser.Controller /// Gets all studios from all recursive children of a folder /// The CategoryInfo class is used to keep track of the number of times each studio appears /// - public IEnumerable> GetAllStudios(Folder parent, Guid userId) + public IEnumerable> GetAllStudios(Folder parent, User user) { Dictionary data = new Dictionary(); // Get all the allowed recursive children - IEnumerable allItems = Kernel.Instance.GetParentalAllowedRecursiveChildren(parent, userId); + IEnumerable allItems = parent.GetParentalAllowedRecursiveChildren(user); foreach (var item in allItems) { @@ -457,12 +306,12 @@ namespace MediaBrowser.Controller /// Gets all genres from all recursive children of a folder /// The CategoryInfo class is used to keep track of the number of times each genres appears /// - public IEnumerable> GetAllGenres(Folder parent, Guid userId) + public IEnumerable> GetAllGenres(Folder parent, User user) { Dictionary data = new Dictionary(); // Get all the allowed recursive children - IEnumerable allItems = Kernel.Instance.GetParentalAllowedRecursiveChildren(parent, userId); + IEnumerable allItems = parent.GetParentalAllowedRecursiveChildren(user); foreach (var item in allItems) { -- cgit v1.2.3