aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserLibrary/ItemsService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/ItemsService.cs')
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs97
1 files changed, 25 insertions, 72 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index e739ac7c2..a48fcbc93 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -231,7 +231,8 @@ namespace MediaBrowser.Api.UserLibrary
MaxPlayers = request.MaxPlayers,
MinCommunityRating = request.MinCommunityRating,
MinCriticRating = request.MinCriticRating,
- ParentId = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId)
+ ParentId = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId),
+ ParentIndexNumber = request.ParentIndexNumber
};
if (!string.IsNullOrWhiteSpace(request.Ids))
@@ -285,6 +286,29 @@ namespace MediaBrowser.Api.UserLibrary
query.MaxPremiereDate = DateTime.Parse(request.MaxPremiereDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime();
}
+ // Filter by Series Status
+ if (!string.IsNullOrEmpty(request.SeriesStatus))
+ {
+ query.SeriesStatuses = request.SeriesStatus.Split(',').Select(d => (SeriesStatus)Enum.Parse(typeof(SeriesStatus), d, true)).ToArray();
+ }
+
+ // Filter by Series AirDays
+ if (!string.IsNullOrEmpty(request.AirDays))
+ {
+ query.AirDays = request.AirDays.Split(',').Select(d => (DayOfWeek)Enum.Parse(typeof(DayOfWeek), d, true)).ToArray();
+ }
+
+ // ExcludeLocationTypes
+ if (!string.IsNullOrEmpty(request.ExcludeLocationTypes))
+ {
+ query.ExcludeLocationTypes = request.ExcludeLocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray();
+ }
+
+ if (!string.IsNullOrEmpty(request.LocationTypes))
+ {
+ query.LocationTypes = request.LocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray();
+ }
+
return query;
}
@@ -410,26 +434,6 @@ namespace MediaBrowser.Api.UserLibrary
}
}
- // LocationTypes
- if (!string.IsNullOrEmpty(request.LocationTypes))
- {
- var vals = request.LocationTypes.Split(',');
- if (!vals.Contains(i.LocationType.ToString(), StringComparer.OrdinalIgnoreCase))
- {
- return false;
- }
- }
-
- // ExcludeLocationTypes
- if (!string.IsNullOrEmpty(request.ExcludeLocationTypes))
- {
- var vals = request.ExcludeLocationTypes.Split(',');
- if (vals.Contains(i.LocationType.ToString(), StringComparer.OrdinalIgnoreCase))
- {
- return false;
- }
- }
-
if (!string.IsNullOrEmpty(request.AlbumArtistStartsWithOrGreater))
{
var ok = new[] { i }.OfType<IHasAlbumArtist>()
@@ -441,57 +445,6 @@ namespace MediaBrowser.Api.UserLibrary
}
}
- // Filter by Series Status
- if (!string.IsNullOrEmpty(request.SeriesStatus))
- {
- var vals = request.SeriesStatus.Split(',');
-
- var ok = new[] { i }.OfType<Series>().Any(p => p.Status.HasValue && vals.Contains(p.Status.Value.ToString(), StringComparer.OrdinalIgnoreCase));
-
- if (!ok)
- {
- return false;
- }
- }
-
- // Filter by Series AirDays
- if (!string.IsNullOrEmpty(request.AirDays))
- {
- var days = request.AirDays.Split(',').Select(d => (DayOfWeek)Enum.Parse(typeof(DayOfWeek), d, true));
-
- var ok = new[] { i }.OfType<Series>().Any(p => p.AirDays != null && days.Any(d => p.AirDays.Contains(d)));
-
- if (!ok)
- {
- return false;
- }
- }
-
- if (request.ParentIndexNumber.HasValue)
- {
- var filterValue = request.ParentIndexNumber.Value;
-
- var episode = i as Episode;
-
- if (episode != null)
- {
- if (episode.ParentIndexNumber.HasValue && episode.ParentIndexNumber.Value != filterValue)
- {
- return false;
- }
- }
-
- var song = i as Audio;
-
- if (song != null)
- {
- if (song.ParentIndexNumber.HasValue && song.ParentIndexNumber.Value != filterValue)
- {
- return false;
- }
- }
- }
-
if (request.AiredDuringSeason.HasValue)
{
var episode = i as Episode;