public ProductType Create(CreateProductTypeRequest request)
{
var type = new ProductType
{
Name = request.Name,
SkuAlias = request.SkuAlias
};
var predefinedFields = _customFields.Query().Where(f => f.IsPredefined).ToList();
if (request.CustomFields != null)
{
foreach (var field in request.CustomFields)
{
if (field.IsPredefined)
{
var predefined = predefinedFields.Find(f => f.Id == field.Id);
type.CustomFieldDefinitions.Add(predefined);
}
else
{
type.CustomFieldDefinitions.Add(field);
}
}
}
if (request.VariantFields != null)
{
foreach (var field in request.VariantFields)
{
if (field.IsPredefined)
{
var predefined = predefinedFields.Find(f => f.Id == field.Id);
type.VariantFieldDefinitions.Add(predefined);
}
else
{
type.VariantFieldDefinitions.Add(field);
}
}
}
_productTypes.Insert(type);
Event.Raise(new ProductTypeCreated(type), _instance);
return type;
}