using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.LiveTv;
using System.Collections.Generic;
using System.Linq;
namespace MediaBrowser.Controller.LiveTv
{
    public class LiveTvChannel : BaseItem, IItemByName
    {
        /// 
        /// Gets the user data key.
        /// 
        /// System.String.
        public override string GetUserDataKey()
        {
            return GetClientTypeName() + "-" + Name;
        }
        /// 
        /// Returns the folder containing the item.
        /// If the item is a folder, it returns the folder itself
        /// 
        /// The containing folder path.
        public override string ContainingFolderPath
        {
            get
            {
                return Path;
            }
        }
        protected override bool GetBlockUnratedValue(UserConfiguration config)
        {
            return config.BlockUnratedItems.Contains(UnratedItem.LiveTvChannel);
        }
        /// 
        /// Gets a value indicating whether this instance is owned item.
        /// 
        /// true if this instance is owned item; otherwise, false.
        public override bool IsOwnedItem
        {
            get
            {
                return false;
            }
        }
        /// 
        /// Gets or sets the number.
        /// 
        /// The number.
        public string Number { get; set; }
        /// 
        /// Gets or sets the external identifier.
        /// 
        /// The external identifier.
        public string ExternalId { get; set; }
        
        /// 
        /// Gets or sets the type of the channel.
        /// 
        /// The type of the channel.
        public ChannelType ChannelType { get; set; }
        public string ServiceName { get; set; }
        /// 
        /// Supply the image path if it can be accessed directly from the file system
        /// 
        /// The image path.
        public string ProviderImagePath { get; set; }
        /// 
        /// Supply the image url if it can be downloaded
        /// 
        /// The image URL.
        public string ProviderImageUrl { get; set; }
        /// 
        /// Gets or sets a value indicating whether this instance has image.
        /// 
        /// null if [has image] contains no value, true if [has image]; otherwise, false.
        public bool? HasProviderImage { get; set; }
        protected override string CreateSortName()
        {
            double number = 0;
            if (!string.IsNullOrEmpty(Number))
            {
                double.TryParse(Number, out number);
            }
            return number.ToString("000-") + (Name ?? string.Empty);
        }
        public override string MediaType
        {
            get
            {
                return ChannelType == ChannelType.Radio ? Model.Entities.MediaType.Audio : Model.Entities.MediaType.Video;
            }
        }
        public override string GetClientTypeName()
        {
            return "TvChannel";
        }
        public IEnumerable GetTaggedItems(IEnumerable inputItems)
        {
            return new List();
        }
    }
}