83 lines
2.9 KiB
C#
83 lines
2.9 KiB
C#
using Modules.Library.Domain.EntitiesV0;
|
|
using Modules.Library.Domain.EntitiesV0.MediaContent.CommonProperties;
|
|
using Modules.Library.Domain.EntitiesV0.MediaContent.CommonProperties.ShadowEntities;
|
|
|
|
namespace Modules.Library.Domain.EntityBuilders;
|
|
|
|
public class CommonPropertiesBuilder
|
|
{
|
|
private CommonPropertiesShadow _commonProperties = new();
|
|
|
|
public CommonPropertiesBuilder AddName(string languageId, NameType type, string value)
|
|
{
|
|
_commonProperties.names.Add(new NameItem(languageId, type, value));
|
|
return this;
|
|
}
|
|
|
|
public CommonPropertiesBuilder SetPreview(string url, MediaInfoType type)
|
|
{
|
|
_commonProperties.preview = new MediaInfo(url, type);
|
|
return this;
|
|
}
|
|
|
|
public CommonPropertiesBuilder AddDescription(string languageId, bool isOriginal, string value)
|
|
{
|
|
_commonProperties.descriptions.Add(new DescriptionItem(languageId, isOriginal, value));
|
|
return this;
|
|
}
|
|
|
|
public CommonPropertiesBuilder AddGenreProportion(string genreId, decimal? proportion)
|
|
{
|
|
_commonProperties.genres.Add(new GenreProportionItem(genreId, proportion));
|
|
return this;
|
|
}
|
|
|
|
public CommonPropertiesBuilder AddRelatedContent(string url, MediaInfoType type)
|
|
{
|
|
_commonProperties.relatedContent.Add(new MediaInfo(url, type));
|
|
return this;
|
|
}
|
|
|
|
public CommonPropertiesBuilder SetAnouncementDate(DateTimeOffset? value)
|
|
{
|
|
_commonProperties.announcementDate = value;
|
|
return this;
|
|
}
|
|
|
|
public CommonPropertiesBuilder SetEstimatedReleaseDate(DateTimeOffset? value)
|
|
{
|
|
_commonProperties.estimatedReleaseDate = value;
|
|
return this;
|
|
}
|
|
|
|
public CommonPropertiesBuilder SetReleaseDate(DateTimeOffset? value)
|
|
{
|
|
_commonProperties.releaseDate = value;
|
|
return this;
|
|
}
|
|
|
|
internal static CommonPropertiesBuilder FromCommonProperties(CommonProperties item)
|
|
{
|
|
var builder = new CommonPropertiesBuilder();
|
|
|
|
foreach (var name in item.Names) { builder.AddName(name.LanguageId, name.Type, name.Value); }
|
|
|
|
if (item.Preview != null) builder
|
|
.SetPreview(item.Preview.Url, item.Preview.Type);
|
|
|
|
foreach (var description in item.Descriptions) { builder.AddDescription(description.LanguageId, description.IsOriginal, description.Value); }
|
|
foreach (var genreProportion in item.Genres) { builder.AddGenreProportion(genreProportion.GenreId, genreProportion.Proportion); }
|
|
foreach (var repatedContent in item.RelatedContent) { builder.AddRelatedContent(repatedContent.Url, repatedContent.Type); }
|
|
|
|
builder.SetAnouncementDate(item.AnnouncementDate);
|
|
builder.SetEstimatedReleaseDate(item.EstimatedReleaseDate);
|
|
builder.SetReleaseDate(item.ReleaseDate);
|
|
|
|
return builder;
|
|
}
|
|
|
|
internal CommonPropertiesShadow Build()
|
|
{
|
|
return _commonProperties;
|
|
}
|
|
} |