diff options
Diffstat (limited to 'MediaBrowser.Api/TvShowsService.cs')
| -rw-r--r-- | MediaBrowser.Api/TvShowsService.cs | 59 |
1 files changed, 28 insertions, 31 deletions
diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs index 148e65b49..cd0c5d9e5 100644 --- a/MediaBrowser.Api/TvShowsService.cs +++ b/MediaBrowser.Api/TvShowsService.cs @@ -22,7 +22,7 @@ namespace MediaBrowser.Api /// Class GetNextUpEpisodes /// </summary> [Route("/Shows/NextUp", "GET", Summary = "Gets a list of next up episodes")] - public class GetNextUpEpisodes : IReturn<ItemsResult>, IHasDtoOptions + public class GetNextUpEpisodes : IReturn<QueryResult<BaseItemDto>>, IHasDtoOptions { /// <summary> /// Gets or sets the user id. @@ -82,7 +82,7 @@ namespace MediaBrowser.Api } [Route("/Shows/Upcoming", "GET", Summary = "Gets a list of upcoming episodes")] - public class GetUpcomingEpisodes : IReturn<ItemsResult>, IHasDtoOptions + public class GetUpcomingEpisodes : IReturn<QueryResult<BaseItemDto>>, IHasDtoOptions { /// <summary> /// Gets or sets the user id. @@ -138,7 +138,7 @@ namespace MediaBrowser.Api } [Route("/Shows/{Id}/Episodes", "GET", Summary = "Gets episodes for a tv season")] - public class GetEpisodes : IReturn<ItemsResult>, IHasItemFields, IHasDtoOptions + public class GetEpisodes : IReturn<QueryResult<BaseItemDto>>, IHasItemFields, IHasDtoOptions { /// <summary> /// Gets or sets the user id. @@ -206,7 +206,7 @@ namespace MediaBrowser.Api } [Route("/Shows/{Id}/Seasons", "GET", Summary = "Gets seasons for a tv series")] - public class GetSeasons : IReturn<ItemsResult>, IHasItemFields, IHasDtoOptions + public class GetSeasons : IReturn<QueryResult<BaseItemDto>>, IHasItemFields, IHasDtoOptions { /// <summary> /// Gets or sets the user id. @@ -327,7 +327,7 @@ namespace MediaBrowser.Api var result = new QueryResult<BaseItemDto> { - Items = returnList.ToArray(returnList.Count), + Items = returnList, TotalRecordCount = itemsResult.Count }; @@ -359,10 +359,9 @@ namespace MediaBrowser.Api }); - var returnList = (await _dtoService.GetBaseItemDtos(itemsResult, options, user).ConfigureAwait(false)); - var returnItems = returnList.ToArray(returnList.Count); + var returnItems = (await _dtoService.GetBaseItemDtos(itemsResult, options, user).ConfigureAwait(false)); - var result = new ItemsResult + var result = new QueryResult<BaseItemDto> { TotalRecordCount = itemsResult.Count, Items = returnItems @@ -392,10 +391,9 @@ namespace MediaBrowser.Api var user = _userManager.GetUserById(request.UserId); - var returnList = (await _dtoService.GetBaseItemDtos(result.Items, options, user).ConfigureAwait(false)); - var returnItems = returnList.ToArray(returnList.Count); + var returnItems = (await _dtoService.GetBaseItemDtos(result.Items, options, user).ConfigureAwait(false)); - return ToOptimizedSerializedResultUsingCache(new ItemsResult + return ToOptimizedSerializedResultUsingCache(new QueryResult<BaseItemDto> { TotalRecordCount = result.TotalRecordCount, Items = returnItems @@ -443,14 +441,13 @@ namespace MediaBrowser.Api IsSpecialSeason = request.IsSpecialSeason, AdjacentTo = request.AdjacentTo - })).OfType<Season>(); + })); var dtoOptions = GetDtoOptions(_authContext, request); - var returnList = (await _dtoService.GetBaseItemDtos(seasons, dtoOptions, user).ConfigureAwait(false)); - var returnItems = returnList.ToArray(returnList.Count); + var returnItems = (await _dtoService.GetBaseItemDtos(seasons, dtoOptions, user).ConfigureAwait(false)); - return new ItemsResult + return new QueryResult<BaseItemDto> { TotalRecordCount = returnItems.Length, Items = returnItems @@ -471,7 +468,7 @@ namespace MediaBrowser.Api { var user = _userManager.GetUserById(request.UserId); - IEnumerable<Episode> episodes; + List<BaseItem> episodes; var dtoOptions = GetDtoOptions(_authContext, request); @@ -499,11 +496,11 @@ namespace MediaBrowser.Api if (season == null) { - episodes = new List<Episode>(); + episodes = new List<BaseItem>(); } else { - episodes = season.GetEpisodes(user, dtoOptions); + episodes = ((Season)season).GetEpisodes(user, dtoOptions); } } else @@ -515,44 +512,44 @@ namespace MediaBrowser.Api throw new ResourceNotFoundException("Series not found"); } - episodes = series.GetEpisodes(user, dtoOptions); + episodes = series.GetEpisodes(user, dtoOptions).ToList(); } // Filter after the fact in case the ui doesn't want them if (request.IsMissing.HasValue) { var val = request.IsMissing.Value; - episodes = episodes.Where(i => i.IsMissingEpisode == val); + episodes = episodes.Where(i => ((Episode)i).IsMissingEpisode == val).ToList(); } if (!string.IsNullOrWhiteSpace(request.StartItemId)) { - episodes = episodes.SkipWhile(i => !string.Equals(i.Id.ToString("N"), request.StartItemId, StringComparison.OrdinalIgnoreCase)); + episodes = episodes.SkipWhile(i => !string.Equals(i.Id.ToString("N"), request.StartItemId, StringComparison.OrdinalIgnoreCase)).ToList(); } - IEnumerable<BaseItem> returnItems = episodes; - // This must be the last filter if (!string.IsNullOrEmpty(request.AdjacentTo)) { - returnItems = UserViewBuilder.FilterForAdjacency(returnItems, request.AdjacentTo); + episodes = UserViewBuilder.FilterForAdjacency(episodes, request.AdjacentTo).ToList(); } if (string.Equals(request.SortBy, ItemSortBy.Random, StringComparison.OrdinalIgnoreCase)) { - returnItems = returnItems.OrderBy(i => Guid.NewGuid()); + episodes = episodes.OrderBy(i => Guid.NewGuid()).ToList(); } - var returnList = returnItems.ToList(); + var returnItems = episodes; - var pagedItems = ApplyPaging(returnList, request.StartIndex, request.Limit); + if (request.StartIndex.HasValue || request.Limit.HasValue) + { + returnItems = ApplyPaging(episodes, request.StartIndex, request.Limit).ToList(); + } - var returnDtos = (await _dtoService.GetBaseItemDtos(pagedItems, dtoOptions, user).ConfigureAwait(false)); - var dtos = returnDtos.ToArray(returnDtos.Count); + var dtos = (await _dtoService.GetBaseItemDtos(returnItems, dtoOptions, user).ConfigureAwait(false)); - return new ItemsResult + return new QueryResult<BaseItemDto> { - TotalRecordCount = returnList.Count, + TotalRecordCount = episodes.Count, Items = dtos }; } |
