
namespace Modules.Library.Core.Domain.MediaContent;

public class TopLevelItem : Entity, IAggregateRoot, ICompletable
{
    [Required]
    public CommonProperties.CommonProperties CommonProperties { get; set; } = default!;

    protected List<MediaContentItem> _items = [];
    public IReadOnlyCollection<MediaContentItem> Items => _items.AsReadOnly();

    [Required]
    public User.User Creator { get; private set; } = default!;

    public bool Completed { get; private set; }

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

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