MyBookmark/Modules.Library.Domain/EntityBuilders/AnimeSeasonBuilder.cs
2024-09-04 23:08:56 +03:00

94 lines
2.5 KiB
C#

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;
}
}