Beispiel #1
0
        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));
        }