using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace CouchLog.Data
{
    public class PrivateEntity
    {
        [Key]
        public int Id { get; set; }

        public bool Favorite { get; set; } = false;

        [MaxLength(1000)]
        public string? Description { get; set; }

        public int? Season { get; set; }

        public int? Episode { get; set; }

        public int? Rating { get; set; }

        [Required]
        public required DateTime CreationTime { get; set; }

        public DateTime? LastChange { get; set; }


        // --- Foreign Keys ---
        [Required]
        public string? UserId { get; set; }

        [Required]
        public int GlobalEntityId { get; set; }

        public int? UserWatchStatusId { get; set; }


        // --- Navigation Properties ---
        [ForeignKey(nameof(UserId))]
        public virtual ApplicationUser User { get; set; } = null!;

        [ForeignKey(nameof(GlobalEntityId))]
        public virtual GlobalEntity GlobalEntity { get; set; } = null!;

        [ForeignKey(nameof(UserWatchStatusId))]
        public virtual UserWatchStatus? UserWatchStatus { get; set; }

        public virtual ICollection<LinkTablePrivateLabel> PrivateEntityLabels { get; set; } = new List<LinkTablePrivateLabel>();

        public virtual ICollection<LinkTablePrivateStreamingPlatform> PrivateStreamingPlatforms { get; set; } = new List<LinkTablePrivateStreamingPlatform>();
    }
}