Init
This commit is contained in:
84
Prefab.Catalog/Domain/Entities/Attributes.cs
Normal file
84
Prefab.Catalog/Domain/Entities/Attributes.cs
Normal file
@@ -0,0 +1,84 @@
|
||||
using Prefab.Catalog.Domain.Events;
|
||||
using Prefab.Domain.Common;
|
||||
|
||||
namespace Prefab.Catalog.Domain.Entities;
|
||||
|
||||
public enum AttributeDataType
|
||||
{
|
||||
Text = 1,
|
||||
Number = 3,
|
||||
Boolean = 4,
|
||||
Enum = 5
|
||||
}
|
||||
|
||||
public class AttributeDefinition : EntityWithAuditAndStatus<Guid>
|
||||
{
|
||||
private AttributeDefinition()
|
||||
{
|
||||
}
|
||||
|
||||
public string Name { get; private set; } = string.Empty;
|
||||
|
||||
public AttributeDataType DataType { get; private set; }
|
||||
|
||||
public string? Unit { get; private set; }
|
||||
|
||||
public static AttributeDefinition Create(string name, AttributeDataType dataType, string? unit = null)
|
||||
{
|
||||
ArgumentException.ThrowIfNullOrWhiteSpace(name);
|
||||
|
||||
var definition = new AttributeDefinition
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = name.Trim(),
|
||||
DataType = dataType,
|
||||
Unit = string.IsNullOrWhiteSpace(unit) ? null : unit.Trim()
|
||||
};
|
||||
|
||||
definition.AddEvent(new AttributeDefinitionCreated(definition.Id, definition.Name, definition.DataType));
|
||||
return definition;
|
||||
}
|
||||
}
|
||||
|
||||
public class ProductAttributeValue : EntityWithAuditAndStatus<Guid>
|
||||
{
|
||||
private ProductAttributeValue()
|
||||
{
|
||||
}
|
||||
|
||||
public Guid ProductId { get; internal set; }
|
||||
|
||||
public Product Product { get; internal set; } = null!;
|
||||
|
||||
public Guid AttributeDefinitionId { get; internal set; }
|
||||
|
||||
public AttributeDefinition AttributeDefinition { get; internal set; } = null!;
|
||||
|
||||
public string? Value { get; internal set; }
|
||||
|
||||
public decimal? NumericValue { get; internal set; }
|
||||
|
||||
public string? UnitCode { get; internal set; }
|
||||
|
||||
public string? EnumCode { get; internal set; }
|
||||
|
||||
internal static ProductAttributeValue Create(
|
||||
Guid productId,
|
||||
Guid attributeDefinitionId,
|
||||
string? value,
|
||||
decimal? numericValue,
|
||||
string? unitCode,
|
||||
string? enumCode)
|
||||
{
|
||||
return new ProductAttributeValue
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
ProductId = productId,
|
||||
AttributeDefinitionId = attributeDefinitionId,
|
||||
Value = value,
|
||||
NumericValue = numericValue,
|
||||
UnitCode = unitCode,
|
||||
EnumCode = enumCode
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user