diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-11-20 16:08:12 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-11-20 16:08:12 -0500 |
| commit | 71514af96be684dcbf432c5aca37712bbd773740 (patch) | |
| tree | 9773616e9f3c34a56590a5525960214cf7cc1ca7 /MediaBrowser.Api/UserLibrary/ItemsService.cs | |
| parent | c3530e5e3255d2c2e8ec5fa4bc4635a21904235e (diff) | |
render channels page
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/ItemsService.cs')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/ItemsService.cs | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 4239869a5..3936014c5 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -206,7 +206,7 @@ namespace MediaBrowser.Api.UserLibrary [ApiMember(Name = "AiredDuringSeason", Description = "Gets all episodes that aired during a season, including specials.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] public int? AiredDuringSeason { get; set; } - + [ApiMember(Name = "MinPremiereDate", Description = "Optional. The minimum premiere date. Format = yyyyMMddHHmmss", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")] public string MinPremiereDate { get; set; } @@ -1012,21 +1012,7 @@ namespace MediaBrowser.Api.UserLibrary if (request.AiredDuringSeason.HasValue) { - var val = request.AiredDuringSeason.Value; - - items = items.Where(i => - { - var episode = i as Episode; - - if (episode != null) - { - var seasonNumber = episode.AirsAfterSeasonNumber ?? episode.AirsBeforeSeasonNumber ?? episode.ParentIndexNumber; - - return episode.PremiereDate.HasValue && seasonNumber.HasValue && seasonNumber.Value == val; - } - - return false; - }); + items = FilterByAiredDuringSeason(items, request.AiredDuringSeason.Value); } if (!string.IsNullOrEmpty(request.MinPremiereDate)) @@ -1046,6 +1032,43 @@ namespace MediaBrowser.Api.UserLibrary return items; } + private IEnumerable<BaseItem> FilterByAiredDuringSeason(IEnumerable<BaseItem> items, int seasonNumber) + { + var episodes = items.OfType<Episode>().ToList(); + + // We can only enforce the air date requirement if the episodes have air dates + var enforceAirDate = episodes.Any(i => i.PremiereDate.HasValue); + + return episodes.Where(i => + { + var episode = i; + + if (episode != null) + { + var currentSeasonNumber = episode.AirsAfterSeasonNumber ?? episode.AirsBeforeSeasonNumber ?? episode.ParentIndexNumber; + + // If this produced nothing, try and get it from the parent folder + if (!currentSeasonNumber.HasValue) + { + var season = episode.Parent as Season; + if (season != null) + { + currentSeasonNumber = season.IndexNumber; + } + } + + if (enforceAirDate && !episode.PremiereDate.HasValue) + { + return false; + } + + return currentSeasonNumber.HasValue && currentSeasonNumber.Value == seasonNumber; + } + + return false; + }); + } + /// <summary> /// Determines whether the specified item has image. /// </summary> |
