| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | using MediaBrowser.Controller.Providers;using MediaBrowser.Model.Configuration;using System.Collections.Generic;using System.Linq;using MediaBrowser.Model.Entities;using MediaBrowser.Model.Users;namespace MediaBrowser.Controller.Entities{    public class Book : BaseItem, IHasTags, IHasPreferredMetadataLanguage, IHasLookupInfo<BookInfo>, IHasSeries    {        public override string MediaType        {            get            {                return Model.Entities.MediaType.Book;            }        }        /// <summary>        /// Gets or sets the tags.        /// </summary>        /// <value>The tags.</value>        public List<string> Tags { get; set; }        public string SeriesName { get; set; }        public string PreferredMetadataLanguage { get; set; }        /// <summary>        /// Gets or sets the preferred metadata country code.        /// </summary>        /// <value>The preferred metadata country code.</value>        public string PreferredMetadataCountryCode { get; set; }        public Book()        {            Tags = new List<string>();        }        public override bool CanDownload()        {            var locationType = LocationType;            return locationType != LocationType.Remote &&                   locationType != LocationType.Virtual;        }        protected override bool GetBlockUnratedValue(UserPolicy config)        {            return config.BlockUnratedItems.Contains(UnratedItem.Book);        }        public BookInfo GetLookupInfo()        {            var info = GetItemLookupInfo<BookInfo>();            if (string.IsNullOrEmpty(SeriesName))            {                info.SeriesName = Parents.Select(i => i.Name).FirstOrDefault();            }            else            {                info.SeriesName = SeriesName;            }            return info;        }    }}
 |