using MediaBrowser.Model.Entities;
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace MediaBrowser.Controller.Entities.Audio
{
    /// 
    /// Class Audio
    /// 
    public class Audio : BaseItem, IHasMediaStreams
    {
        /// 
        /// Gets or sets the media streams.
        /// 
        /// The media streams.
        public List MediaStreams { get; set; }
        
        /// 
        /// Override this to true if class should be grouped under a container in indicies
        /// The container class should be defined via IndexContainer
        /// 
        /// true if [group in index]; otherwise, false.
        [IgnoreDataMember]
        public override bool GroupInIndex
        {
            get
            {
                return true;
            }
        }
        /// 
        /// The unknown album
        /// 
        private static readonly MusicAlbum UnknownAlbum = new MusicAlbum {Name = ""};
        /// 
        /// Override this to return the folder that should be used to construct a container
        /// for this item in an index.  GroupInIndex should be true as well.
        /// 
        /// The index container.
        [IgnoreDataMember]
        public override Folder IndexContainer
        {
            get
            {
                return Parent is MusicAlbum ? Parent : Album != null ? new MusicAlbum {Name = Album, PrimaryImagePath = PrimaryImagePath } : UnknownAlbum;
            }
        }
        /// 
        /// Gets or sets the artist.
        /// 
        /// The artist.
        public string Artist { get; set; }
        /// 
        /// Gets or sets the album.
        /// 
        /// The album.
        public string Album { get; set; }
        /// 
        /// Gets or sets the album artist.
        /// 
        /// The album artist.
        public string AlbumArtist { get; set; }
        /// 
        /// Gets the type of the media.
        /// 
        /// The type of the media.
        public override string MediaType
        {
            get
            {
                return Model.Entities.MediaType.Audio;
            }
        }
        /// 
        /// Creates the name of the sort.
        /// 
        /// System.String.
        protected override string CreateSortName()
        {
            return (ProductionYear != null ? ProductionYear.Value.ToString("000-") : "")
                    + (IndexNumber != null ? IndexNumber.Value.ToString("0000 - ") : "") + Name;
        }
    }
}