using Modules.Library.Domain.EntitiesV0.MediaContent.Items.Anime; using Modules.Library.Domain.EntitiesV0.MediaContent.Items.Anime.ShadowEntities; namespace Modules.Library.Domain.EntityBuilders; public class AnimeEpisodeBuilder { private AnimeEpisodeShadow episode = new(); public AnimeEpisodeBuilder SetCommonProperties(CommonPropertiesBuilder builder) { episode.commonProperties = builder.Build(); return this; } public AnimeEpisodeBuilder SetOrder(ushort value) { episode.order = value; return this; } public AnimeEpisodeBuilder SetVariant(ushort value) { episode.variant = value; return this; } public AnimeEpisodeBuilder SetDuration(TimeSpan value) { episode.duration = value; return this; } public AnimeEpisodeBuilder SetType(AnimeEpisodeType value) { episode.type = value; return this; } public AnimeEpisodeBuilder SetNumber(int? value) { episode.number = value; return this; } public AnimeEpisodeBuilder SetCompleted(bool value) { episode.completed = value; return this; } public AnimeEpisodeBuilder SetDeleted(bool value) { episode.deleted = value; return this; } public AnimeEpisodeBuilder SetExpirationTime(TimeSpan value) { episode.expirationTime = value; return this; } internal static AnimeEpisodeBuilder FromAnimeEpisode(AnimeEpisode episode) { var builder = new AnimeEpisodeBuilder(); builder.SetCommonProperties(CommonPropertiesBuilder.FromCommonProperties(episode.CommonProperties)); builder.SetOrder(episode.Order); builder.SetVariant(episode.Variant); if (episode.Duration.HasValue) builder.SetDuration(episode.Duration.Value); builder.SetType(episode.Type); builder.SetNumber(episode.Number); builder.SetCompleted(episode.Completed); builder.SetDeleted(episode.Deleted); builder.SetExpirationTime(episode.ExpirationTime); return builder; } internal AnimeEpisodeShadow Build() { return episode; } }