public ActionResult Edit(int id, string @return) { var productType = _productTypeService.GetById(id); var model = new ProductTypeEditorModel(productType); model.SystemFields = _customFieldService.GetSystemFields().ToArray(); return View(model); }
public ActionResult Create() { var model = new ProductTypeEditorModel(); model.SystemFields = _customFieldService.GetSystemFields().ToArray(); return View(model); }
public ActionResult Save(ProductTypeEditorModel model, string @return) { // Create new fields ProductType productType = null; if (model.Id > 0) { productType = _productTypeService.GetById(model.Id); } else { productType = new ProductType(model.Name, model.SkuAlias); } productType.Name = model.Name; productType.SkuAlias = model.SkuAlias; // Custom Fields foreach (var field in productType.CustomFields.ToList()) { if (!model.CustomFields.Any(f => f.Id == field.CustomFieldId)) { productType.RemoveCustomField(field.CustomFieldId); } } foreach (var field in model.CustomFields) { var customField = CreateOrUpdateField(field); var current = productType.FindCustomField(customField.Id); if (current == null) { current = new ProductTypeCustomField(productType, customField); productType.CustomFields.Add(current); } else { // Update sequence } } // Variant Fields foreach (var field in productType.VariationFields.ToList()) { if (!model.VariationFields.Any(f => f.Id == field.CustomFieldId)) { productType.RemoveVariantField(field.CustomFieldId); } } foreach (var field in model.VariationFields) { var customField = CreateOrUpdateField(field); var current = productType.FindVariantField(customField.Id); if (current == null) { current = new ProductTypeVariantField(productType, customField); productType.VariationFields.Add(current); } else { // Update sequence } } if (productType.Id == 0) { _productTypeService.Create(productType); } CommerceContext.CurrentInstance.Database.SaveChanges(); productType.NotifyUpdated(); if (model.IsEnabled) { _productTypeService.Enable(productType); } else { _productTypeService.Disable(productType); } return AjaxForm().RedirectTo(@return); }