using Modules.Library.Domain.Entities.MediaContent.CommonProperties; namespace Modules.Library.Domain.Entities.MediaContent.Items.Anime; public abstract class AnimeItemSingle : AnimeItem { protected readonly AnimeSeason? _season; public TimeSpan? Duration { get; private set; } private protected AnimeItemSingle() : base() { } private protected AnimeItemSingle(TimeSpan? duration) : base() { Duration = duration; } internal AnimeItemSingle(AnimeTitle title, AnimeSeason? season) : base(title) { _season = season; } internal AnimeItemSingle(AnimeTitle title, AnimeSeason? season, IEnumerable names) : base(title, names) { _season = season; } public void SetDuration(TimeSpan value) => Duration = value; protected override void StructureAction(Action action) { action.Invoke(); _season?.CheckIfCompleted(); _title.CheckIfCompleted(); } }