namespace JSMR.Domain.Entities;

public class VoiceWork
{
    public int VoiceWorkId { get; set; }
    public required string ProductId { get; set; }
    public string? OriginalProductId { get; set; }
    public string ProductName { get; set; } = string.Empty;
    public string? Description { get; set; }
    public int Rating { get; set; }
    public bool HasImage { get; set; }
    public bool HasTrial { get; set; }
    public bool Purchased { get; set; }
    public bool Favorite { get; set; }
    public DateTime? ExpectedDate { get; set; }
    public DateTime? SalesDate { get; set; }
    public int? Downloads { get; set; }
    public byte? StarRating { get; set; }
    public int? Votes { get; set; }
    public bool? IsValid { get; set; }
    public DateTime? LastScannedDate { get; set; }
    public byte Status { get; set; }
    public byte SubtitleLanguage { get; set; } // TO BE DEPRECATED
    public bool HasChobit { get; set; }
    public bool IsPurchased { get; set; }
    public int? WishlistCount { get; set; }
    public DateTime? PlannedReleaseDate { get; set; }
    public byte AIGeneration { get; set; }

    public int CircleId { get; set; }
    public Circle? Circle { get; set; }

    public int? SeriesId { get; set; }
    public Series? Series { get; set; }

    //public int? VoiceWorkSearchId { get; set; }
    //public VoiceWorkSearch? VoiceWorkSearch { get; set; }

    public virtual ICollection<VoiceWorkTag> Tags { get; set; } = [];
    public virtual ICollection<VoiceWorkCreator> Creators { get; set; } = [];
    public virtual ICollection<EnglishVoiceWork> EnglishVoiceWorks { get; set; } = [];
    public virtual ICollection<VoiceWorkSupportedLanguage> SupportedLanguages { get; set; } = [];
    public virtual ICollection<VoiceWorkLocalization> Localizations { get; set; } = [];
}