using Modules.Library.Domain.EntitiesV0.MediaContent.Items.Anime; using Modules.Library.Domain.EntitiesV0.MediaContent.Items.Anime.ShadowEntities; namespace Modules.Library.Domain.EntityBuilders; public class AnimeSeasonBuilder { private AnimeSeasonShadow _season = new(); private CommonPropertiesBuilder? _commonPropertiesBuilder; public AnimeSeasonBuilder SetCommonProperties(CommonPropertiesBuilder builder) { _commonPropertiesBuilder = builder; return this; } public AnimeSeasonBuilder SetOrder(ushort value) { _season.order = value; return this; } public AnimeSeasonBuilder SetVariant(ushort value) { _season.variant = value; return this; } public AnimeSeasonBuilder SetNumber(int? value) { _season.number = value; return this; } public AnimeSeasonBuilder SetDirector(string? value) { _season.director = value; return this; } public AnimeSeasonBuilder SetOriginCountry(string? value) { _season.originCountry = value; return this; } public AnimeSeasonBuilder SetCompleted(bool value) { _season.completed = value; return this; } public AnimeSeasonBuilder SetDeleted(bool value) { _season.deleted = value; return this; } public AnimeSeasonBuilder SetExpirationTime(TimeSpan value) { _season.expirationTime = value; return this; } public AnimeSeasonBuilder AddEpisode(AnimeEpisodeBuilder builder) { _season.episodes.Add(builder.Build()); return this; } internal static AnimeSeasonBuilder FromAnimeSeason(AnimeSeason season) { var builder = new AnimeSeasonBuilder(); builder.SetCommonProperties(CommonPropertiesBuilder.FromCommonProperties(season.CommonProperties)); builder.SetOrder(season.Order); builder.SetVariant(season.Variant); builder.SetNumber(season.Number); builder.SetDirector(season.Director); builder.SetOriginCountry(season.OriginCountry); builder.SetCompleted(season.Completed); builder.SetDeleted(season.Deleted); builder.SetExpirationTime(season.ExpirationTime); foreach (var episode in season.Episodes) { builder.AddEpisode(AnimeEpisodeBuilder.FromAnimeEpisode(episode)); } return builder; } internal AnimeSeasonShadow Build() { if (_commonPropertiesBuilder != null) _season.commonProperties = _commonPropertiesBuilder.Build(); return _season; } }