render channels page

This commit is contained in:
Luke Pulverenti 2013-11-20 16:08:12 -05:00
parent c3530e5e32
commit 71514af96b
2 changed files with 48 additions and 22 deletions

View File

@ -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>

View File

@ -1,8 +1,8 @@
using System;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
using System;
namespace MediaBrowser.Server.Implementations.Sorting
{
@ -16,11 +16,14 @@ namespace MediaBrowser.Server.Implementations.Sorting
/// <returns>System.Int32.</returns>
public int Compare(BaseItem x, BaseItem y)
{
var val = DateTime.Compare(x.PremiereDate ?? DateTime.MinValue, y.PremiereDate ?? DateTime.MinValue);
if (val != 0)
if (x.PremiereDate.HasValue && y.PremiereDate.HasValue)
{
return val;
var val = DateTime.Compare(x.PremiereDate.Value, y.PremiereDate.Value);
if (val != 0)
{
return val;
}
}
var episode1 = x as Episode;