Beispiel #1
0
        public virtual async Task <IActionResult> OptionEditPopup(int id)
        {
            if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageAttributes))
            {
                return(AccessDeniedView());
            }

            //try to get a specification attribute option with the specified id
            var specificationAttributeOption = await _specificationAttributeService.GetSpecificationAttributeOptionByIdAsync(id);

            if (specificationAttributeOption == null)
            {
                return(RedirectToAction("List"));
            }

            //try to get a specification attribute with the specified id
            var specificationAttribute = await _specificationAttributeService
                                         .GetSpecificationAttributeByIdAsync(specificationAttributeOption.SpecificationAttributeId);

            if (specificationAttribute == null)
            {
                return(RedirectToAction("List"));
            }

            //prepare model
            var model = await _specificationAttributeModelFactory
                        .PrepareSpecificationAttributeOptionModelAsync(null, specificationAttribute, specificationAttributeOption);

            return(View(model));
        }
Beispiel #2
0
        private async Task ExportSpecificationsAsync(XmlWriter xml, Product product)
        {
            var allProductSpecAttrs = await _specificationAttributeService.GetProductSpecificationAttributesAsync(product.Id);

            var features = new List <ProductSpecificationAttribute>();

            foreach (var psa in allProductSpecAttrs)
            {
                var sao = await _specificationAttributeService.GetSpecificationAttributeOptionByIdAsync(psa.Id);

                if (sao == null)
                {
                    continue;
                }

                var sa = await _specificationAttributeService.GetSpecificationAttributeByIdAsync(sao.Id);

                if (sa == null || sa.Name == "Color" || sa.Name == "Category")
                {
                    continue;
                }

                features.Add(psa);
            }

            if (!features.Any())
            {
                return;
            }

            xml.WriteStartElement(_featuresTag);

            foreach (var feature in features)
            {
                var specAttrId = (await _specificationAttributeService.GetSpecificationAttributeOptionsBySpecificationAttributeAsync(feature.Id))[0].SpecificationAttributeId;
                var sa         = await _specificationAttributeService.GetSpecificationAttributeByIdAsync(specAttrId);

                xml.WriteStartElement(_featureTag);
                xml.WriteAttributeString("name", XmlConvert.EncodeName(sa.Name));
                xml.WriteValue(XmlSanitize(sa.Name));
                xml.WriteEndElement();
            }

            xml.WriteEndElement();
        }
        protected virtual async Task <ProductSpecificationApiModel> PrepareProductSpecificationAttributeModelAsync(Product product)
        {
            var result = new ProductSpecificationApiModel();

            if (product == null)
            {
                var allProductSpecifications = new ProductSpecificationApiModel();
                var specificationCacheKey    = _staticCacheManager.PrepareKeyForDefaultCache(NopModelCacheDefaults.AllProductSpecificationsModelKey, product, await _storeContext.GetCurrentStoreAsync());

                allProductSpecifications = await _staticCacheManager.GetAsync(specificationCacheKey, async() =>
                {
                    var productAllSpecificationAttributes = await _specificationAttributeService.GetProductSpecificationAttributesAsync();
                    foreach (var psa in productAllSpecificationAttributes)
                    {
                        var singleOption = await _specificationAttributeService.GetSpecificationAttributeOptionByIdAsync(psa.SpecificationAttributeOptionId);
                        var checkModel   = result.ProductSpecificationAttribute.FirstOrDefault(model => model.Id == singleOption.SpecificationAttributeId || model.Name == singleOption.Name);
                        if (checkModel == null)
                        {
                            var model1    = new ProductSpecificationAttributeApiModel();
                            var attribute = await _specificationAttributeService.GetSpecificationAttributeByIdAsync(singleOption.SpecificationAttributeId);
                            model1.Id     = attribute.Id;
                            model1.Name   = await _localizationService.GetLocalizedAsync(attribute, x => x.Name);
                            var options   = await _specificationAttributeService.GetSpecificationAttributeOptionsBySpecificationAttributeAsync(attribute.Id);
                            foreach (var option in options)
                            {
                                model1.Values.Add(new ProductSpecificationAttributeValueApiModel
                                {
                                    AttributeTypeId = psa.AttributeTypeId,
                                    ColorSquaresRgb = option.ColorSquaresRgb,
                                    ValueRaw        = psa.AttributeType switch
                                    {
                                        SpecificationAttributeType.Option => WebUtility.HtmlEncode(await _localizationService.GetLocalizedAsync(option, x => x.Name)),
                                        SpecificationAttributeType.CustomText => WebUtility.HtmlEncode(await _localizationService.GetLocalizedAsync(psa, x => x.CustomValue)),
                                        SpecificationAttributeType.CustomHtmlText => await _localizationService.GetLocalizedAsync(psa, x => x.CustomValue),
                                        SpecificationAttributeType.Hyperlink => $"<a href='{psa.CustomValue}' target='_blank'>{psa.CustomValue}</a>",
                                        _ => null
                                    }
                                });