diff options
Diffstat (limited to 'MediaBrowser.Api/TvShowsService.cs')
| -rw-r--r-- | MediaBrowser.Api/TvShowsService.cs | 74 |
1 files changed, 43 insertions, 31 deletions
diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs index 0ac181dea..6cae379d2 100644 --- a/MediaBrowser.Api/TvShowsService.cs +++ b/MediaBrowser.Api/TvShowsService.cs @@ -96,7 +96,7 @@ namespace MediaBrowser.Api /// <summary> /// The _user data repository /// </summary> - private readonly IUserDataManager _userDataRepository; + private readonly IUserDataManager _userDataManager; /// <summary> /// The _library manager /// </summary> @@ -109,12 +109,12 @@ namespace MediaBrowser.Api /// Initializes a new instance of the <see cref="TvShowsService" /> class. /// </summary> /// <param name="userManager">The user manager.</param> - /// <param name="userDataRepository">The user data repository.</param> + /// <param name="userDataManager">The user data repository.</param> /// <param name="libraryManager">The library manager.</param> - public TvShowsService(IUserManager userManager, IUserDataManager userDataRepository, ILibraryManager libraryManager, IItemRepository itemRepo, IDtoService dtoService) + public TvShowsService(IUserManager userManager, IUserDataManager userDataManager, ILibraryManager libraryManager, IItemRepository itemRepo, IDtoService dtoService) { _userManager = userManager; - _userDataRepository = userDataRepository; + _userDataManager = userDataManager; _libraryManager = libraryManager; _itemRepo = itemRepo; _dtoService = dtoService; @@ -130,7 +130,7 @@ namespace MediaBrowser.Api var result = SimilarItemsHelper.GetSimilarItemsResult(_userManager, _itemRepo, _libraryManager, - _userDataRepository, + _userDataManager, _dtoService, Logger, request, item => item is Series, @@ -146,7 +146,7 @@ namespace MediaBrowser.Api /// <returns>System.Object.</returns> public object Get(GetNextUpEpisodes request) { - var result = GetNextUpEpisodes(request); + var result = GetNextUpEpisodeItemsResult(request); return ToOptimizedResult(result); } @@ -156,7 +156,27 @@ namespace MediaBrowser.Api /// </summary> /// <param name="request">The request.</param> /// <returns>Task{ItemsResult}.</returns> - private ItemsResult GetNextUpEpisodes(GetNextUpEpisodes request) + private ItemsResult GetNextUpEpisodeItemsResult(GetNextUpEpisodes request) + { + var user = _userManager.GetUserById(request.UserId); + + var itemsList = GetNextUpEpisodes(request) + .ToList(); + + var pagedItems = ApplyPaging(request, itemsList); + + var fields = request.GetItemFields().ToList(); + + var returnItems = pagedItems.Select(i => _dtoService.GetBaseItemDto(i, fields, user)).ToArray(); + + return new ItemsResult + { + TotalRecordCount = itemsList.Count, + Items = returnItems + }; + } + + public IEnumerable<Episode> GetNextUpEpisodes(GetNextUpEpisodes request) { var user = _userManager.GetUserById(request.UserId); @@ -164,19 +184,24 @@ namespace MediaBrowser.Api .GetRecursiveChildren(user) .OfType<Series>(); - items = FilterSeries(request, items); + // Avoid implicitly captured closure + return GetNextUpEpisodes(request, items); + } + + public IEnumerable<Episode> GetNextUpEpisodes(GetNextUpEpisodes request, IEnumerable<Series> series) + { + var user = _userManager.GetUserById(request.UserId); - var itemsList = items - .AsParallel() - .Select(i => GetNextUp(i, user, request)) - .ToList(); + // Avoid implicitly captured closure + var currentUser = user; - itemsList = itemsList - .Where(i => i.Item1 != null) + return FilterSeries(request, series) + .AsParallel() + .Select(i => GetNextUp(i, currentUser, request).Item1) + .Where(i => i != null) .OrderByDescending(i => { - var seriesUserData = - _userDataRepository.GetUserData(user.Id, i.Item1.Series.GetUserDataKey()); + var seriesUserData = _userDataManager.GetUserData(user.Id, i.Series.GetUserDataKey()); if (seriesUserData.IsFavorite) { @@ -190,20 +215,7 @@ namespace MediaBrowser.Api return 0; }) - .ThenByDescending(i => i.Item1.PremiereDate ?? DateTime.MinValue) - .ToList(); - - var pagedItems = ApplyPaging(request, itemsList.Select(i => i.Item1)); - - var fields = request.GetItemFields().ToList(); - - var returnItems = pagedItems.Select(i => _dtoService.GetBaseItemDto(i, fields, user)).ToArray(); - - return new ItemsResult - { - TotalRecordCount = itemsList.Count, - Items = returnItems - }; + .ThenByDescending(i => i.PremiereDate ?? DateTime.MinValue); } /// <summary> @@ -230,7 +242,7 @@ namespace MediaBrowser.Api // Go back starting with the most recent episodes foreach (var episode in allEpisodes) { - var userData = _userDataRepository.GetUserData(user.Id, episode.GetUserDataKey()); + var userData = _userDataManager.GetUserData(user.Id, episode.GetUserDataKey()); if (userData.Played) { |
