public virtual async Task <IActionResult> EditSpecificationAttribute(SpecificationAttributeModel model, bool continueEditing) { if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageAttributes)) { return(AccessDeniedView()); } //try to get a specification attribute with the specified id var specificationAttribute = await _specificationAttributeService.GetSpecificationAttributeByIdAsync(model.Id); if (specificationAttribute == null) { return(RedirectToAction("List")); } if (ModelState.IsValid) { specificationAttribute = model.ToEntity(specificationAttribute); await _specificationAttributeService.UpdateSpecificationAttributeAsync(specificationAttribute); await UpdateAttributeLocalesAsync(specificationAttribute, model); //activity log await _customerActivityService.InsertActivityAsync("EditSpecAttribute", string.Format(await _localizationService.GetResourceAsync("ActivityLog.EditSpecAttribute"), specificationAttribute.Name), specificationAttribute); _notificationService.SuccessNotification(await _localizationService.GetResourceAsync("Admin.Catalog.Attributes.SpecificationAttributes.SpecificationAttribute.Updated")); if (!continueEditing) { return(RedirectToAction("List")); } return(RedirectToAction("EditSpecificationAttribute", new { id = specificationAttribute.Id })); } //prepare model model = await _specificationAttributeModelFactory.PrepareSpecificationAttributeModelAsync(model, specificationAttribute, true); //if we got this far, something failed, redisplay form return(View(model)); }
public async Task <IActionResult> UpdateSpecificationAttribute( [ModelBinder(typeof(JsonModelBinder <SpecificationAttributeDto>))] Delta <SpecificationAttributeDto> specificationAttributeDelta) { // Here we display the errors if the validation has failed at some point. if (!ModelState.IsValid) { return(Error()); } // We do not need to validate the product attribute id, because this will happen in the model binder using the dto validator. var specificationAttributeId = specificationAttributeDelta.Dto.Id; var specificationAttribute = await _specificationAttributeService.GetSpecificationAttributeByIdAsync(specificationAttributeId); if (specificationAttribute == null) { return(Error(HttpStatusCode.NotFound, "specification attribute", "not found")); } specificationAttributeDelta.Merge(specificationAttribute); await _specificationAttributeService.UpdateSpecificationAttributeAsync(specificationAttribute); await CustomerActivityService.InsertActivityAsync("EditSpecAttribute", await LocalizationService.GetResourceAsync("ActivityLog.EditSpecAttribute"), specificationAttribute); // Preparing the result dto of the new product attribute var specificationAttributeDto = _dtoHelper.PrepareSpecificationAttributeDto(specificationAttribute); var specificatoinAttributesRootObjectDto = new SpecificationAttributesRootObjectDto(); specificatoinAttributesRootObjectDto.SpecificationAttributes.Add(specificationAttributeDto); var json = JsonFieldsSerializer.Serialize(specificatoinAttributesRootObjectDto, string.Empty); return(new RawJsonActionResult(json)); }