public ProductType Update(UpdateProductTypeRequest request) { var type = _productTypes.Find(request.Id); // Basic info type.Name = request.Name; type.SkuAlias = request.SkuAlias; // Custom fields if (request.CustomFields != null) { RefreshPredefinedFields(request.CustomFields); type.CustomFieldDefinitions.Update( from: request.CustomFields, by: f => f.Id, onUpdateItem: (oldItem, newItem) => { oldItem.UpdateFrom(newItem); }, onRemoveItem: field => { if (!field.IsPredefined) { _customFields.Delete(field); } }); type.CustomFieldDefinitions.Sort(request.CustomFields.Select(f => f.Name)); } // Variant fields if (request.VariantFields != null) { RefreshPredefinedFields(request.VariantFields); type.VariantFieldDefinitions.Update( from: request.VariantFields, by: f => f.Id, onUpdateItem: (oldItem, newItem) => { oldItem.UpdateFrom(newItem); }, onRemoveItem: field => { if (!field.IsPredefined) { _customFields.Delete(field); } }); type.VariantFieldDefinitions.Sort(request.VariantFields.Select(f => f.Name)); } _productTypes.Database.SaveChanges(); Event.Raise(new ProductTypeUpdated(type), _instance); return(type); }
public ProductType Update(UpdateProductTypeRequest request) { var type = _productTypes.Find(request.Id); // Basic info type.Name = request.Name; type.SkuAlias = request.SkuAlias; // Custom fields if (request.CustomFields != null) { RefreshPredefinedFields(request.CustomFields); type.CustomFieldDefinitions.Update( from: request.CustomFields, by: f => f.Id, onUpdateItem: (oldItem, newItem) => { oldItem.UpdateFrom(newItem); }, onRemoveItem: field => { if (!field.IsPredefined) { _customFields.Delete(field); } }); type.CustomFieldDefinitions.Sort(request.CustomFields.Select(f => f.Name)); } // Variant fields if (request.VariantFields != null) { RefreshPredefinedFields(request.VariantFields); type.VariantFieldDefinitions.Update( from: request.VariantFields, by: f => f.Id, onUpdateItem: (oldItem, newItem) => { oldItem.UpdateFrom(newItem); }, onRemoveItem: field => { if (!field.IsPredefined) { _customFields.Delete(field); } }); type.VariantFieldDefinitions.Sort(request.VariantFields.Select(f => f.Name)); } _productTypes.Database.SaveChanges(); Event.Raise(new ProductTypeUpdated(type), _instance); return type; }