Beispiel #1
0
        public async Task SetSpecificationAttributesAsync(AbcMattressModel model, Product product)
        {
            var comfortSpecAttr = (await _specificationAttributeService.GetSpecificationAttributesAsync())
                                  .Where(sa => sa.Name == "Comfort")
                                  .FirstOrDefault();

            if (comfortSpecAttr == null)
            {
                throw new NopException("Unable to find 'Comfort' specification attribute.");
            }

            var options = await _specificationAttributeService.GetSpecificationAttributeOptionsBySpecificationAttributeAsync(comfortSpecAttr.Id);

            var option = options.Where(so => so.Name == model.Comfort)
                         .FirstOrDefault();

            if (option == null)
            {
                throw new NopException($"Unable to find '{model.Comfort}' " +
                                       "specification attribute option for the 'Comfort' " +
                                       "specification attribute.");
            }

            var productSpecificationAttributes = await _specificationAttributeService.GetProductSpecificationAttributesAsync(product.Id);

            var comfortProductSpecAttr = productSpecificationAttributes.Where(psa => psa.SpecificationAttributeOptionId == option.Id)
                                         .FirstOrDefault();

            // Found the existing product spec. attribute - just skip processing
            if (comfortProductSpecAttr != null)
            {
                return;
            }

            // delete any currently existing Comfort specs
            var optionIds = options.Select(o => o.Id);
            var existingComfortProductSpecAttributes = productSpecificationAttributes.Where(psa => optionIds.Contains(psa.SpecificationAttributeOptionId));

            foreach (var psa in existingComfortProductSpecAttributes)
            {
                await _specificationAttributeService.DeleteProductSpecificationAttributeAsync(psa);
            }

            // Add new product spec attribute
            var productSpecAttr = new ProductSpecificationAttribute()
            {
                ProductId     = product.Id,
                AttributeType = SpecificationAttributeType.Option,
                SpecificationAttributeOptionId = option.Id,
                AllowFiltering = true
            };
            await _specificationAttributeService.InsertProductSpecificationAttributeAsync(
                productSpecAttr
                );
        }
Beispiel #2
0
        public async Task <IActionResult> DeleteProductSpecificationAttribute(int id)
        {
            if (id <= 0)
            {
                return(Error(HttpStatusCode.BadRequest, "id", "invalid id"));
            }

            var productSpecificationAttribute = await _specificationAttributeService.GetProductSpecificationAttributeByIdAsync(id);

            if (productSpecificationAttribute == null)
            {
                return(Error(HttpStatusCode.NotFound, "product specification attribute", "not found"));
            }

            await _specificationAttributeService.DeleteProductSpecificationAttributeAsync(productSpecificationAttribute);

            //activity log
            await CustomerActivityService.InsertActivityAsync("DeleteProductSpecificationAttribute",
                                                              await LocalizationService.GetResourceAsync("ActivityLog.DeleteProductSpecificationAttribute"),
                                                              productSpecificationAttribute);

            return(new RawJsonActionResult("{}"));
        }