#nullable disable #pragma warning disable CS1591 using System; using System.Text.Json.Serialization; namespace MediaBrowser.Controller.Entities { /// /// Class UserItemData. /// public class UserItemData { public const double MinLikeValue = 6.5; /// /// The _rating. /// private double? _rating; /// /// Gets or sets the user id. /// /// The user id. public Guid UserId { get; set; } /// /// Gets or sets the key. /// /// The key. public string Key { get; set; } /// /// Gets or sets the users 0-10 rating. /// /// The rating. /// Rating;A 0 to 10 rating is required for UserItemData. public double? Rating { get => _rating; set { if (value.HasValue) { if (value.Value < 0 || value.Value > 10) { throw new ArgumentOutOfRangeException(nameof(value), "A 0 to 10 rating is required for UserItemData."); } } _rating = value; } } /// /// Gets or sets the playback position ticks. /// /// The playback position ticks. public long PlaybackPositionTicks { get; set; } /// /// Gets or sets the play count. /// /// The play count. public int PlayCount { get; set; } /// /// Gets or sets a value indicating whether this instance is favorite. /// /// true if this instance is favorite; otherwise, false. public bool IsFavorite { get; set; } /// /// Gets or sets the last played date. /// /// The last played date. public DateTime? LastPlayedDate { get; set; } /// /// Gets or sets a value indicating whether this is played. /// /// true if played; otherwise, false. public bool Played { get; set; } /// /// Gets or sets the index of the audio stream. /// /// The index of the audio stream. public int? AudioStreamIndex { get; set; } /// /// Gets or sets the index of the subtitle stream. /// /// The index of the subtitle stream. public int? SubtitleStreamIndex { get; set; } /// /// Gets or sets a value indicating whether the item is liked or not. /// This should never be serialized. /// /// null if [likes] contains no value, true if [likes]; otherwise, false. [JsonIgnore] public bool? Likes { get { if (Rating is not null) { return Rating >= MinLikeValue; } return null; } set { if (value.HasValue) { Rating = value.Value ? 10 : 1; } else { Rating = null; } } } } }