Kooboo.Commerce.Products.ProductTypeService.Update C# (CSharp) Метод

Update() публичный Метод

public Update ( UpdateProductTypeRequest request ) : ProductType
request UpdateProductTypeRequest
Результат ProductType
        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;
        }