MyBookmark/Modules.Library.Domain/Entities/MediaContent/CommonProperties/NameItem.cs
2024-09-23 03:00:50 +03:00

54 lines
1.2 KiB
C#

namespace Modules.Library.Domain.Entities.MediaContent.CommonProperties;
public class NameItem : ValueObject
{
[Required]
public string Value { get; private set; } = string.Empty;
public NameType Type { get; private init; }
[Required]
public Guid LanguageId { get; private init; } = default!;
private NameItem() { }
public NameItem(NameType type, Guid languageId, string value)
{
Type = type;
LanguageId = languageId;
Value = value;
}
internal NameItem(Guid languageId, NameType type, string value)
{
LanguageId = languageId;
Type = type;
Value = value;
}
public static NameItem New(Models.NameItem nameItem) => new()
{
Type = nameItem.Type,
LanguageId = nameItem.LanguageId,
Value = nameItem.Value,
};
public void SetValue(string value)
{
Value = value;
}
protected override IEnumerable<object?> GetEqualityComponents()
{
yield return Type;
yield return LanguageId;
yield return Value;
}
}
public enum NameType
{
Original,
OriginalInAnotherLanguage,
Translation,
Abbreviation,
}