aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
diff options
context:
space:
mode:
authorstefan <stefan@hegedues.at>2018-09-12 19:26:21 +0200
committerstefan <stefan@hegedues.at>2018-09-12 19:26:21 +0200
commit48facb797ed912e4ea6b04b17d1ff190ac2daac4 (patch)
tree8dae77a31670a888d733484cb17dd4077d5444e8 /MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
parentc32d8656382a0eacb301692e0084377fc433ae9b (diff)
Update to 3.5.2 and .net core 2.1
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs')
-rw-r--r--MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs167
1 files changed, 20 insertions, 147 deletions
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
index ed0c4069b..fe8b446a1 100644
--- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
+++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
@@ -56,10 +56,10 @@ namespace MediaBrowser.Api.UserLibrary
{
BaseItem parentItem;
- if (!string.IsNullOrWhiteSpace(request.UserId))
+ if (!request.UserId.Equals(Guid.Empty))
{
var user = UserManager.GetUserById(request.UserId);
- parentItem = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : LibraryManager.GetItemById(request.ParentId);
+ parentItem = string.IsNullOrEmpty(request.ParentId) ? LibraryManager.GetUserRootFolder() : LibraryManager.GetItemById(request.ParentId);
}
else
{
@@ -73,18 +73,12 @@ namespace MediaBrowser.Api.UserLibrary
{
var parent = GetParentItem(request);
- var collectionFolder = parent as ICollectionFolder;
+ var collectionFolder = parent as IHasCollectionType;
if (collectionFolder != null)
{
return collectionFolder.CollectionType;
}
- var view = parent as UserView;
- if (view != null)
- {
- return view.ViewType;
- }
-
return null;
}
@@ -95,10 +89,10 @@ namespace MediaBrowser.Api.UserLibrary
User user = null;
BaseItem parentItem;
- if (!string.IsNullOrWhiteSpace(request.UserId))
+ if (!request.UserId.Equals(Guid.Empty))
{
user = UserManager.GetUserById(request.UserId);
- parentItem = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : LibraryManager.GetItemById(request.ParentId);
+ parentItem = string.IsNullOrEmpty(request.ParentId) ? LibraryManager.GetUserRootFolder() : LibraryManager.GetItemById(request.ParentId);
}
else
{
@@ -123,25 +117,27 @@ namespace MediaBrowser.Api.UserLibrary
Tags = request.GetTags(),
OfficialRatings = request.GetOfficialRatings(),
Genres = request.GetGenres(),
- GenreIds = request.GetGenreIds(),
- StudioIds = request.GetStudioIds(),
+ GenreIds = GetGuids(request.GenreIds),
+ StudioIds = GetGuids(request.StudioIds),
Person = request.Person,
- PersonIds = request.GetPersonIds(),
+ PersonIds = GetGuids(request.PersonIds),
PersonTypes = request.GetPersonTypes(),
Years = request.GetYears(),
MinCommunityRating = request.MinCommunityRating,
- DtoOptions = dtoOptions
+ DtoOptions = dtoOptions,
+ SearchTerm = request.SearchTerm,
+ EnableTotalRecordCount = request.EnableTotalRecordCount
};
if (!string.IsNullOrWhiteSpace(request.ParentId))
{
if (parentItem is Folder)
{
- query.AncestorIds = new[] { request.ParentId };
+ query.AncestorIds = new[] { new Guid(request.ParentId) };
}
else
{
- query.ItemIds = new[] { request.ParentId };
+ query.ItemIds = new[] { new Guid(request.ParentId) };
}
}
@@ -158,7 +154,7 @@ namespace MediaBrowser.Api.UserLibrary
{
return null;
}
- }).Where(i => i != null).Select(i => i.Id.ToString("N")).ToArray();
+ }).Where(i => i != null).Select(i => i.Id).ToArray();
}
foreach (var filter in request.GetFilters())
@@ -197,10 +193,9 @@ namespace MediaBrowser.Api.UserLibrary
var result = GetItems(request, query);
- var syncProgess = DtoService.GetSyncedItemProgress(dtoOptions);
var dtos = result.Items.Select(i =>
{
- var dto = DtoService.GetItemByNameDto(i.Item1, dtoOptions, null, syncProgess, user);
+ var dto = DtoService.GetItemByNameDto(i.Item1, dtoOptions, null, user);
if (!string.IsNullOrWhiteSpace(request.IncludeItemTypes))
{
@@ -247,10 +242,10 @@ namespace MediaBrowser.Api.UserLibrary
User user = null;
BaseItem parentItem;
- if (!string.IsNullOrWhiteSpace(request.UserId))
+ if (!request.UserId.Equals(Guid.Empty))
{
user = UserManager.GetUserById(request.UserId);
- parentItem = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : LibraryManager.GetItemById(request.ParentId);
+ parentItem = string.IsNullOrEmpty(request.ParentId) ? LibraryManager.GetUserRootFolder() : LibraryManager.GetItemById(request.ParentId);
}
else
{
@@ -277,7 +272,7 @@ namespace MediaBrowser.Api.UserLibrary
{
var folder = (Folder)parentItem;
- if (!string.IsNullOrWhiteSpace(request.UserId))
+ if (!request.UserId.Equals(Guid.Empty))
{
items = request.Recursive ?
folder.GetRecursiveChildren(user, query).ToList() :
@@ -297,9 +292,7 @@ namespace MediaBrowser.Api.UserLibrary
var extractedItems = GetAllItems(request, items);
- var filteredItems = FilterItems(request, extractedItems, user);
-
- filteredItems = LibraryManager.Sort(filteredItems, user, request.GetOrderBy());
+ var filteredItems = LibraryManager.Sort(extractedItems, user, request.GetOrderBy());
var ibnItemsArray = filteredItems.ToList();
@@ -326,8 +319,7 @@ namespace MediaBrowser.Api.UserLibrary
var tuples = ibnItems.Select(i => new Tuple<BaseItem, List<BaseItem>>(i, new List<BaseItem>()));
- var syncProgess = DtoService.GetSyncedItemProgress(dtoOptions);
- var dtos = tuples.Select(i => DtoService.GetItemByNameDto(i.Item1, dtoOptions, i.Item2, syncProgess, user));
+ var dtos = tuples.Select(i => DtoService.GetItemByNameDto(i.Item1, dtoOptions, i.Item2, user));
result.Items = dtos.Where(i => i != null).ToArray();
@@ -338,125 +330,6 @@ namespace MediaBrowser.Api.UserLibrary
/// Filters the items.
/// </summary>
/// <param name="request">The request.</param>
- /// <param name="items">The items.</param>
- /// <param name="user">The user.</param>
- /// <returns>IEnumerable{`0}.</returns>
- private IEnumerable<BaseItem> FilterItems(GetItemsByName request, IEnumerable<BaseItem> items, User user)
- {
- if (!string.IsNullOrEmpty(request.NameStartsWithOrGreater))
- {
- items = items.Where(i => string.Compare(request.NameStartsWithOrGreater, i.SortName, StringComparison.CurrentCultureIgnoreCase) < 1);
- }
- if (!string.IsNullOrEmpty(request.NameStartsWith))
- {
- items = items.Where(i => string.Compare(request.NameStartsWith, i.SortName.Substring(0, 1), StringComparison.CurrentCultureIgnoreCase) == 0);
- }
-
- if (!string.IsNullOrEmpty(request.NameLessThan))
- {
- items = items.Where(i => string.Compare(request.NameLessThan, i.SortName, StringComparison.CurrentCultureIgnoreCase) == 1);
- }
-
- var imageTypes = request.GetImageTypes();
- if (imageTypes.Length > 0)
- {
- items = items.Where(item => imageTypes.Any(item.HasImage));
- }
-
- var filters = request.GetFilters();
-
- if (filters.Contains(ItemFilter.Dislikes))
- {
- items = items.Where(i =>
- {
- var userdata = UserDataRepository.GetUserData(user, i);
-
- return userdata != null && userdata.Likes.HasValue && !userdata.Likes.Value;
- });
- }
-
- if (filters.Contains(ItemFilter.Likes))
- {
- items = items.Where(i =>
- {
- var userdata = UserDataRepository.GetUserData(user, i);
-
- return userdata != null && userdata.Likes.HasValue && userdata.Likes.Value;
- });
- }
-
- if (filters.Contains(ItemFilter.IsFavoriteOrLikes))
- {
- items = items.Where(i =>
- {
- var userdata = UserDataRepository.GetUserData(user, i);
-
- var likes = userdata.Likes ?? false;
- var favorite = userdata.IsFavorite;
-
- return likes || favorite;
- });
- }
-
- if (filters.Contains(ItemFilter.IsFavorite))
- {
- items = items.Where(i =>
- {
- var userdata = UserDataRepository.GetUserData(user, i);
-
- return userdata != null && userdata.IsFavorite;
- });
- }
-
- // Avoid implicitly captured closure
- var currentRequest = request;
- return items.Where(i => ApplyAdditionalFilters(currentRequest, i, user, false));
- }
-
- private bool ApplyAdditionalFilters(BaseItemsRequest request, BaseItem i, User user, bool isPreFiltered)
- {
- if (!isPreFiltered)
- {
- // Apply tag filter
- var tags = request.GetTags();
- if (tags.Length > 0)
- {
- if (!tags.Any(v => i.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>
- /// Filters the items.
- /// </summary>
- /// <param name="request">The request.</param>
/// <param name="f">The f.</param>
/// <param name="excludeItemTypes">The exclude item types.</param>
/// <param name="includeItemTypes">The include item types.</param>