Sonarr/src/NzbDrone.Core/Tv/Episode.cs

78 lines
2.1 KiB
C#

using System;
using System.Collections.Generic;
using Marr.Data;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.MediaFiles;
namespace NzbDrone.Core.Tv
{
public class Episode : ModelBase, IComparable
{
public Episode()
{
Images = new List<MediaCover.MediaCover>();
}
public const string AIR_DATE_FORMAT = "yyyy-MM-dd";
public int SeriesId { get; set; }
public int EpisodeFileId { get; set; }
public int SeasonNumber { get; set; }
public int EpisodeNumber { get; set; }
public string Title { get; set; }
public string AirDate { get; set; }
public DateTime? AirDateUtc { get; set; }
public string Overview { get; set; }
public bool Monitored { get; set; }
public int? AbsoluteEpisodeNumber { get; set; }
public int? SceneAbsoluteEpisodeNumber { get; set; }
public int? SceneSeasonNumber { get; set; }
public int? SceneEpisodeNumber { get; set; }
public bool UnverifiedSceneNumbering { get; set; }
public Ratings Ratings { get; set; }
public List<MediaCover.MediaCover> Images { get; set; }
public DateTime? LastSearchTime { get; set; }
public string SeriesTitle { get; private set; }
public LazyLoaded<EpisodeFile> EpisodeFile { get; set; }
public Series Series { get; set; }
public bool HasFile => EpisodeFileId > 0;
public override string ToString()
{
return string.Format("[{0}]{1}", Id, Title.NullSafe());
}
public int CompareTo(object obj)
{
var other = (Episode)obj;
if (SeasonNumber > other.SeasonNumber)
{
return 1;
}
if (SeasonNumber < other.SeasonNumber)
{
return -1;
}
if (EpisodeNumber > other.EpisodeNumber)
{
return 1;
}
if (EpisodeNumber < other.EpisodeNumber)
{
return -1;
}
return 0;
}
}
}