private static void PrepareProductSpecsModel(IList<ProductSpecificationAttribute> productSpecs, List<ViewModels.ProductSpecificationAttributeModel> modelList)
        {
            if (modelList == null)
                throw new ArgumentNullException("model");

            if (productSpecs == null)
                throw new ArgumentNullException("productSpecs");

            var _specificationAttributeService = EngineContext.Current.Resolve<ISpecificationAttributeService>();
            var _localizationService = EngineContext.Current.Resolve<ILocalizationService>();
            var _workContext = EngineContext.Current.Resolve<IWorkContext>();

            IEnumerable<ViewModels.ProductSpecificationAttributeModel> productrSpecsModel = null;

            if (modelList.Count > 0)
            {
                productrSpecsModel = modelList
                .Select(x =>
                {
                    var psa = _specificationAttributeService.GetProductSpecificationAttributeById(x.Id);
                    psa.AttributeType.GetLocalizedEnum(_localizationService, _workContext);

                    var psaModel = new ViewModels.ProductSpecificationAttributeModel
                    {
                        ProductId = 62,
                        Id = x.Id,
                        AttributeTypeName = psa.AttributeType.GetLocalizedEnum(_localizationService, _workContext),
                        AttributeName = psa.SpecificationAttributeOption.SpecificationAttribute.Name,
                        AllowFiltering = x.AllowFiltering,
                        ShowOnProductPage = x.ShowOnProductPage,
                        DisplayOrder = x.DisplayOrder,
                        SpecificationAttributeOptionId = x.SpecificationAttributeOptionId
                    };

                    // custom code
                    foreach (var option in psa.SpecificationAttributeOption.SpecificationAttribute.SpecificationAttributeOptions)
                    {
                        psaModel.AvailableOptions.Add(new SelectListItem
                        {
                            Text = option.Name,
                            Value = option.Id.ToString()
                        });
                    }

                    switch (psa.AttributeType)
                    {
                        case SpecificationAttributeType.Option:
                            psaModel.ValueRaw = HttpUtility.HtmlEncode(psa.SpecificationAttributeOption.Name);
                            break;
                        case SpecificationAttributeType.CustomText:
                            psaModel.ValueRaw = HttpUtility.HtmlEncode(x.CustomValue);
                            break;
                        case SpecificationAttributeType.CustomHtmlText:
                            //do not encode?
                            //psaModel.ValueRaw = x.CustomValue;
                            psaModel.ValueRaw = HttpUtility.HtmlEncode(x.CustomValue);
                            break;
                        case SpecificationAttributeType.Hyperlink:
                            psaModel.ValueRaw = x.CustomValue;
                            break;
                        default:
                            break;
                    }
                    return psaModel;
                })
                .ToList();

                modelList.Clear();
                modelList.AddRange(productrSpecsModel);
            }
            else
            {
                productrSpecsModel = productSpecs
                .Select(x =>
                {
                    var psa = _specificationAttributeService.GetProductSpecificationAttributeById(x.Id);
                    psa.AttributeType.GetLocalizedEnum(_localizationService, _workContext);

                    var psaModel = new ViewModels.ProductSpecificationAttributeModel
                    {
                        ProductId = 62,
                        Id = x.Id,
                        AttributeTypeName = psa.AttributeType.GetLocalizedEnum(_localizationService, _workContext),
                        AttributeName = psa.SpecificationAttributeOption.SpecificationAttribute.Name,
                        AllowFiltering = x.AllowFiltering,
                        ShowOnProductPage = x.ShowOnProductPage,
                        DisplayOrder = x.DisplayOrder,
                        SpecificationAttributeOptionId = x.SpecificationAttributeOptionId,
                        SpecificationAttributeOption = x.SpecificationAttributeOption
                    };

                    // custom code
                    foreach (var option in psa.SpecificationAttributeOption.SpecificationAttribute.SpecificationAttributeOptions)
                    {
                        psaModel.AvailableOptions.Add(new SelectListItem
                        {
                            Text = option.Name,
                            Value = option.Id.ToString()
                        });
                    }

                    switch (psa.AttributeType)
                    {
                        case SpecificationAttributeType.Option:
                            psaModel.ValueRaw = HttpUtility.HtmlEncode(psa.SpecificationAttributeOption.Name);
                            break;
                        case SpecificationAttributeType.CustomText:
                            psaModel.ValueRaw = HttpUtility.HtmlEncode(x.CustomValue);
                            break;
                        case SpecificationAttributeType.CustomHtmlText:
                            //do not encode?
                            //psaModel.ValueRaw = x.CustomValue;
                            psaModel.ValueRaw = HttpUtility.HtmlEncode(x.CustomValue);
                            break;
                        case SpecificationAttributeType.Hyperlink:
                            psaModel.ValueRaw = x.CustomValue;
                            break;
                        default:
                            break;
                    }
                    return psaModel;
                })
                .ToList();

                modelList.AddRange(productrSpecsModel);
            }
        }
Exemplo n.º 2
0
        private static void PrepareProductSpecsModel(IList <ProductSpecificationAttribute> productSpecs, List <ViewModels.ProductSpecificationAttributeModel> modelList)
        {
            if (modelList == null)
            {
                throw new ArgumentNullException("model");
            }

            if (productSpecs == null)
            {
                throw new ArgumentNullException("productSpecs");
            }

            var _specificationAttributeService = EngineContext.Current.Resolve <ISpecificationAttributeService>();
            var _localizationService           = EngineContext.Current.Resolve <ILocalizationService>();
            var _workContext = EngineContext.Current.Resolve <IWorkContext>();

            IEnumerable <ViewModels.ProductSpecificationAttributeModel> productrSpecsModel = null;

            if (modelList.Count > 0)
            {
                productrSpecsModel = modelList
                                     .Select(x =>
                {
                    var psa = _specificationAttributeService.GetProductSpecificationAttributeById(x.Id);
                    psa.AttributeType.GetLocalizedEnum(_localizationService, _workContext);

                    var psaModel = new ViewModels.ProductSpecificationAttributeModel
                    {
                        ProductId         = 62,
                        Id                = x.Id,
                        AttributeTypeName = psa.AttributeType.GetLocalizedEnum(_localizationService, _workContext),
                        AttributeName     = psa.SpecificationAttributeOption.SpecificationAttribute.Name,
                        AllowFiltering    = x.AllowFiltering,
                        ShowOnProductPage = x.ShowOnProductPage,
                        DisplayOrder      = x.DisplayOrder,
                        SpecificationAttributeOptionId = x.SpecificationAttributeOptionId
                    };

                    // custom code
                    foreach (var option in psa.SpecificationAttributeOption.SpecificationAttribute.SpecificationAttributeOptions)
                    {
                        psaModel.AvailableOptions.Add(new SelectListItem
                        {
                            Text  = option.Name,
                            Value = option.Id.ToString()
                        });
                    }

                    switch (psa.AttributeType)
                    {
                    case SpecificationAttributeType.Option:
                        psaModel.ValueRaw = HttpUtility.HtmlEncode(psa.SpecificationAttributeOption.Name);
                        break;

                    case SpecificationAttributeType.CustomText:
                        psaModel.ValueRaw = HttpUtility.HtmlEncode(x.CustomValue);
                        break;

                    case SpecificationAttributeType.CustomHtmlText:
                        //do not encode?
                        //psaModel.ValueRaw = x.CustomValue;
                        psaModel.ValueRaw = HttpUtility.HtmlEncode(x.CustomValue);
                        break;

                    case SpecificationAttributeType.Hyperlink:
                        psaModel.ValueRaw = x.CustomValue;
                        break;

                    default:
                        break;
                    }
                    return(psaModel);
                })
                                     .ToList();

                modelList.Clear();
                modelList.AddRange(productrSpecsModel);
            }
            else
            {
                productrSpecsModel = productSpecs
                                     .Select(x =>
                {
                    var psa = _specificationAttributeService.GetProductSpecificationAttributeById(x.Id);
                    psa.AttributeType.GetLocalizedEnum(_localizationService, _workContext);

                    var psaModel = new ViewModels.ProductSpecificationAttributeModel
                    {
                        ProductId         = 62,
                        Id                = x.Id,
                        AttributeTypeName = psa.AttributeType.GetLocalizedEnum(_localizationService, _workContext),
                        AttributeName     = psa.SpecificationAttributeOption.SpecificationAttribute.Name,
                        AllowFiltering    = x.AllowFiltering,
                        ShowOnProductPage = x.ShowOnProductPage,
                        DisplayOrder      = x.DisplayOrder,
                        SpecificationAttributeOptionId = x.SpecificationAttributeOptionId,
                        SpecificationAttributeOption   = x.SpecificationAttributeOption
                    };

                    // custom code
                    foreach (var option in psa.SpecificationAttributeOption.SpecificationAttribute.SpecificationAttributeOptions)
                    {
                        psaModel.AvailableOptions.Add(new SelectListItem
                        {
                            Text  = option.Name,
                            Value = option.Id.ToString()
                        });
                    }

                    switch (psa.AttributeType)
                    {
                    case SpecificationAttributeType.Option:
                        psaModel.ValueRaw = HttpUtility.HtmlEncode(psa.SpecificationAttributeOption.Name);
                        break;

                    case SpecificationAttributeType.CustomText:
                        psaModel.ValueRaw = HttpUtility.HtmlEncode(x.CustomValue);
                        break;

                    case SpecificationAttributeType.CustomHtmlText:
                        //do not encode?
                        //psaModel.ValueRaw = x.CustomValue;
                        psaModel.ValueRaw = HttpUtility.HtmlEncode(x.CustomValue);
                        break;

                    case SpecificationAttributeType.Hyperlink:
                        psaModel.ValueRaw = x.CustomValue;
                        break;

                    default:
                        break;
                    }
                    return(psaModel);
                })
                                     .ToList();

                modelList.AddRange(productrSpecsModel);
            }
        }