private bool ApplyAdditionalFilters(BaseItemsRequest request, BaseItem i, User user, bool isPreFiltered) { if (!isPreFiltered) { // Apply tag filter var tags = request.GetTags(); if (tags.Length > 0) { var hasTags = i as IHasTags; if (hasTags == null) { return(false); } if (!tags.Any(v => hasTags.Tags.Contains(v, StringComparer.OrdinalIgnoreCase))) { return(false); } } // Apply official rating filter var officialRatings = request.GetOfficialRatings(); if (officialRatings.Length > 0 && !officialRatings.Contains(i.OfficialRating ?? string.Empty)) { return(false); } // Apply genre filter var genres = request.GetGenres(); if (genres.Length > 0 && !genres.Any(v => i.Genres.Contains(v, StringComparer.OrdinalIgnoreCase))) { return(false); } // Apply year filter var years = request.GetYears(); if (years.Length > 0 && !(i.ProductionYear.HasValue && years.Contains(i.ProductionYear.Value))) { return(false); } } return(true); }
/// <summary> /// Applies sort order /// </summary> /// <param name="request">The request.</param> /// <param name="items">The items.</param> /// <param name="user">The user.</param> /// <param name="libraryManager">The library manager.</param> /// <returns>IEnumerable{BaseItem}.</returns> internal static IEnumerable <BaseItem> ApplySortOrder(BaseItemsRequest request, IEnumerable <BaseItem> items, User user, ILibraryManager libraryManager) { var orderBy = request.GetOrderBy().ToArray(); return(orderBy.Length == 0 ? items : libraryManager.Sort(items, user, orderBy, request.SortOrder ?? SortOrder.Ascending)); }