using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Runtime.Serialization; namespace MediaBrowser.Controller.Entities { /// /// Class Year /// public class Year : BaseItem, IItemByName { /// /// Gets the user data key. /// /// System.String. protected override string CreateUserDataKey() { return "Year-" + Name; } /// /// Returns the folder containing the item. /// If the item is a folder, it returns the folder itself /// /// The containing folder path. [IgnoreDataMember] public override string ContainingFolderPath { get { return Path; } } public override bool CanDelete() { return false; } /// /// Gets a value indicating whether this instance is owned item. /// /// true if this instance is owned item; otherwise, false. [IgnoreDataMember] public override bool IsOwnedItem { get { return false; } } public override bool IsSaveLocalMetadataEnabled() { return true; } public IEnumerable GetTaggedItems(IEnumerable inputItems) { int year; var usCulture = new CultureInfo("en-US"); if (!int.TryParse(Name, NumberStyles.Integer, usCulture, out year)) { return inputItems; } return inputItems.Where(i => i.ProductionYear.HasValue && i.ProductionYear.Value == year); } public int? GetYearValue() { int i; if (int.TryParse(Name, NumberStyles.Integer, CultureInfo.InvariantCulture, out i)) { return i; } return null; } public Func GetItemFilter() { var val = GetYearValue(); return i => i.ProductionYear.HasValue && val.HasValue && i.ProductionYear.Value == val.Value; } [IgnoreDataMember] public override bool SupportsPeople { get { return false; } } } }