MyBookmark/Modules.Library.Domain/EntitiesV1/MediaContent/Items/Anime/AnimeEpisode.cs
2024-09-04 23:08:56 +03:00

65 lines
1.9 KiB
C#

using Modules.Library.Domain.EntitiesV0.MediaContent.Items.Anime.ShadowEntities;
namespace Modules.Library.Domain.EntitiesV0.MediaContent.Items.Anime;
public class AnimeEpisode : AnimeItemSingle
{
private readonly AnimeTitle _title;
private readonly AnimeSeason? _season;
private readonly AnimeEpisodeShadow _shadow;
public AnimeEpisodeType Type => _shadow.type;
public int? Number => _shadow.number;
internal AnimeEpisode(AnimeTitle title, AnimeSeason? season, AnimeEpisodeShadow shadow) : base(shadow)
{
_title = title;
_season = season;
_shadow = shadow;
}
public void SetNumber(int? number) => _shadow.number = number;
public override void SetOrder(ushort order)
{
if (_season == null) SetItemOrder(_title._shadow.items, Order, order);
else _season.SetEpisodeOrder(Order, order);
}
public override void SetVariant(ushort variant)
{
if (_season == null)
{
SetItemVariant(_title._shadow.items.OfType<AnimeEpisodeShadow>()
.Where(q => q.order == Order), Variant, variant);
}
else _season.SetEpisodeVariant(Order, Variant, variant);
}
public override void SetCompleted()
{
if (_season == null) _title.SetEpisodeCompleted(Order, Variant, true);
else _season.SetEpisodeCompleted(Order, Variant, true);
}
public override void SetNotCompleted()
{
if (_season == null) _title.SetEpisodeCompleted(Order, Variant, false);
else _season.SetEpisodeCompleted(Order, Variant, false);
}
public override void SetExpirationTime(TimeSpan value)
{
if (_season == null) _title.SetEpisodeExpirationTime(Order, Variant, value);
else _season.SetEpisodeExpirationTime(Order, Variant, value);
}
internal void SetDeleted() => _shadow.deleted = true;
}
public enum AnimeEpisodeType
{
Regilar,
FullLength,
Ova,
}