using Modules.Library.Core.Domain.MediaContent.Items;

namespace Modules.Library.Core.Domain.MediaContent;

public abstract class MediaContentItem : Entity, IOrderableItem, IVariantItem, ICompletable
{
    [Required]
    public CommonProperties.CommonProperties CommonProperties { get; set; } = default!;

    public uint Order { get; private set; }

    public uint Variant { get; private set; }

    

    public bool Completed { get; private set; }

    public TimeSpan ExpirationTime { get; private set; } = TimeSpan.Zero;


    public void SetOrder(uint order) => Order = order;

    public void SetVariant(uint variant) => Variant = variant;


    public void SetCompleted() => Completed = true;
    public void SetNotCompleted() => Completed = false;
    public void SetExpirationTime(TimeSpan value) => ExpirationTime = value;
}