Browse Source

Rework get children functions to support ItemSortBy values

lostb1t 10 months ago
parent
commit
f737fad43a
1 changed files with 19 additions and 21 deletions
  1. 19 21
      MediaBrowser.Controller/Entities/Movies/BoxSet.cs

+ 19 - 21
MediaBrowser.Controller/Entities/Movies/BoxSet.cs

@@ -112,37 +112,35 @@ namespace MediaBrowser.Controller.Entities.Movies
             return true;
         }
 
-        public override List<BaseItem> GetChildren(User user, bool includeLinkedChildren, InternalItemsQuery query)
+        public IEnumerable<BaseItem> Sort(IEnumerable<BaseItem> items, User user)
         {
-            var children = base.GetChildren(user, includeLinkedChildren, query);
-
-            if (string.Equals(DisplayOrder, "SortName", StringComparison.OrdinalIgnoreCase))
+            var sortBy = new[]
             {
-                // Sort by name
-                return LibraryManager.Sort(children, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending).ToList();
-            }
-
-            if (string.Equals(DisplayOrder, "PremiereDate", StringComparison.OrdinalIgnoreCase))
+               ItemSortBy.ProductionYear,
+               ItemSortBy.PremiereDate,
+               ItemSortBy.SortName
+            };
+            if (!string.IsNullOrEmpty(DisplayOrder))
             {
-                // Sort by release date
-                return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending).ToList();
+              sortBy = new[]
+                {
+                    Enum.Parse<ItemSortBy>(DisplayOrder)
+                };
             }
 
-            // Default sorting
-            return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending).ToList();
+            return LibraryManager.Sort(items, user, sortBy, SortOrder.Ascending);
+        }
+
+        public override List<BaseItem> GetChildren(User user, bool includeLinkedChildren, InternalItemsQuery query)
+        {
+            var children = base.GetChildren(user, includeLinkedChildren, query);
+            return Sort(children, user).ToList();
         }
 
         public override IEnumerable<BaseItem> GetRecursiveChildren(User user, InternalItemsQuery query)
         {
             var children = base.GetRecursiveChildren(user, query);
-
-            if (string.Equals(DisplayOrder, "PremiereDate", StringComparison.OrdinalIgnoreCase))
-            {
-                // Sort by release date
-                return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending).ToList();
-            }
-
-            return children;
+            return Sort(children, user).ToList();
         }
 
         public BoxSetInfo GetLookupInfo()