using System.Runtime.Serialization ;
using MediaBrowser.Controller.Entities ;
using MediaBrowser.Model.Configuration ;
using MediaBrowser.Model.Entities ;
using System.Linq ;
using MediaBrowser.Model.Users ;
namespace MediaBrowser.Controller.LiveTv
{
public class LiveTvVideoRecording : Video , ILiveTvRecording
{
/// <summary>
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
protected override string CreateUserDataKey ( )
{
var name = GetClientTypeName ( ) ;
if ( ! string . IsNullOrEmpty ( RecordingInfo . ProgramId ) )
{
return name + "-" + RecordingInfo . ProgramId ;
}
return name + "-" + RecordingInfo . Name + ( RecordingInfo . EpisodeTitle ? ? string . Empty ) ;
}
public RecordingInfo RecordingInfo { get ; set ; }
public string ServiceName { get ; set ; }
[IgnoreDataMember]
public override string MediaType
{
get
{
return Model . Entities . MediaType . Video ;
}
}
[IgnoreDataMember]
public override LocationType LocationType
{
get
{
if ( ! string . IsNullOrEmpty ( Path ) )
{
return base . LocationType ;
}
return LocationType . Remote ;
}
}
/// <summary>
/// Gets a value indicating whether this instance is owned item.
/// </summary>
/// <value><c>true</c> if this instance is owned item; otherwise, <c>false</c>.</value>
[IgnoreDataMember]
public override bool IsOwnedItem
{
get
{
return false ;
}
}
public override string GetClientTypeName ( )
{
return "Recording" ;
}
public override bool IsSaveLocalMetadataEnabled ( )
{
return false ;
}
public override bool SupportsLocalMetadata
{
get
{
return false ;
}
}
protected override bool GetBlockUnratedValue ( UserPolicy config )
{
return config . BlockUnratedItems . Contains ( UnratedItem . LiveTvProgram ) ;
}
protected override string GetInternalMetadataPath ( string basePath )
{
return System . IO . Path . Combine ( basePath , "livetv" , Id . ToString ( "N" ) ) ;
}
public override bool IsAuthorizedToDelete ( User user )
{
return user . Policy . EnableLiveTvManagement ;
}
}
}