private void DisplayProperControls(ProductProperty prop)
        {
            ProductPropertyType typeCode = prop.TypeCode;

            this.pnlChoiceControls.Visible = false;
            pnlCultureCode.Visible         = false;
            this.DefaultDate.Visible       = false;

            switch (typeCode)
            {
            case ProductPropertyType.CurrencyField:
                pnlCultureCode.Visible    = true;
                DefaultValueField.Visible = true;
                lstDefaultValue.Visible   = false;
                ChoiceNote.InnerText      = "Default Value";
                break;

            case ProductPropertyType.DateField:
                DefaultValueField.Visible = false;
                lstDefaultValue.Visible   = false;
                this.DefaultDate.Visible  = true;
                ChoiceNote.InnerText      = "Default Value";
                break;

            case ProductPropertyType.MultipleChoiceField:
                lstDefaultValue.Visible   = true;
                DefaultValueField.Visible = false;
                PopulateMultipleChoice(prop);
                ChoiceNote.InnerText           = "To select a default simply select the item in the list before you hit save.";
                this.pnlChoiceControls.Visible = true;
                break;

            case ProductPropertyType.TextField:
                DefaultValueField.Visible = true;
                lstDefaultValue.Visible   = false;
                ChoiceNote.InnerText      = "Default Value";
                break;
            }
        }
Exemple #2
0
        public ProductPropertyValue Sync(int productId, string channelPropertyValueName, string channelPropertyValueId, ProductPropertyType productPropertyType)
        {
            using (var db = new YintaiHZhouContext())
            {
                // 是否为颜色
                var isColor = productPropertyType == ProductPropertyType.Color;

                // 映射类型
                var mapType = isColor ? ChannelMapType.ColorId : ChannelMapType.SizeId;


                /**
                 * 映射商品颜色或尺寸的属性值Id
                 * 映射关系{productId}+{propertyValueId}
                 */
                var mapKey           = Utils.GetProductProprtyMapKey(productId, channelPropertyValueId);
                var propertyValueMap = _channelMapper.GetMapByChannelValue(mapKey, mapType);
                var valueDesc        = string.IsNullOrWhiteSpace(channelPropertyValueName)
                    ? channelPropertyValueId
                    : channelPropertyValueName;
                if (propertyValueMap == null)
                {
                    // 检查当前商品是否存在颜色或尺寸的属性
                    var propertyExt =
                        GetProductProperty(productId, mapType);

                    if (propertyExt == null)
                    {
                        // 没有映射关系进行创建属性
                        propertyExt = new ProductProperty()
                        {
                            IsColor           = isColor,
                            IsSize            = !isColor,
                            ChannelPropertyId = 0,
                            ProductId         = productId,
                            PropertyDesc      = isColor ? "颜色" : "尺寸",
                            SortOrder         = 0,
                            Status            = 1,
                            UpdateDate        = DateTime.Now,
                            UpdateUser        = SystemDefine.SystemUser
                        };

                        db.ProductProperties.Add(propertyExt);

                        // 必须先进性保存,获取上面的Last_Update_id
                        db.SaveChanges();
                    }

                    var ppv =
                        db.ProductPropertyValues.FirstOrDefault(
                            p => p.PropertyId == propertyExt.Id && p.ValueDesc == valueDesc);

                    if (ppv == null)
                    {
                        var newProductPropertyValue = new ProductPropertyValue()
                        {
                            PropertyId = propertyExt.Id,
                            CreateDate = DateTime.Now,
                            Status     = 1,
                            UpdateDate = DateTime.Now,
                            ValueDesc  = valueDesc
                        };

                        db.ProductPropertyValues.Add(newProductPropertyValue);
                        // 保存属性值
                        db.SaveChanges();
                        ppv = newProductPropertyValue;
                        // 保存映射关系
                        var newChannelMap = new ChannelMap()
                        {
                            LocalId       = ppv.Id,
                            ChannnelValue = Utils.GetProductProprtyMapKey(productId, channelPropertyValueId),
                            MapType       = mapType
                        };

                        _channelMapper.CreateMap(newChannelMap);
                    }

                    return(ppv);
                }

                var propertyValueExt = GetProductPropertyValue(productId, propertyValueMap.LocalId, mapType);

                if (propertyValueExt == null)
                {
                    _channelMapper.RemoveMap(propertyValueMap);
                    Log.ErrorFormat("属性数据错误,映射关系存在,数据不存在, property value id {0}", propertyValueMap.LocalId);
                    return(null);
                }

                propertyValueExt.ValueDesc  = valueDesc;
                propertyValueExt.UpdateDate = DateTime.Now;

                db.SaveChanges();

                return(propertyValueExt);
            }
        }