Пример #1
0
        public void Delete(ConnectorProductAttributeMapping connectorProductAttributeMapping)
        {
            Validate(connectorProductAttributeMapping);

            var connectorProductAttribute = ConnectorProductAttributeRepository.GetSingle(
                connectorProductAttributeMapping.Connector.ConnectorID,
                connectorProductAttributeMapping.ProductAttribute.AttributeID,
                connectorProductAttributeMapping.IsFilter);

            if (ConnectorProductAttributeRepository.Delete(connectorProductAttribute) == RepositoryOperationStatus.Nothing)
            {
                throw new InvalidOperationException("The specified product attribute mapping does not exist");
            }
        }
Пример #2
0
        public void Upsert(ConnectorProductAttributeMapping connectorProductAttributeMapping)
        {
            Validate(connectorProductAttributeMapping);
            ValidateProperties(connectorProductAttributeMapping.Properties);

            var status = ConnectorProductAttributeRepository.Upsert(new ConnectorProductAttribute
            {
                ConnectorID          = connectorProductAttributeMapping.Connector.ConnectorID,
                DefaultValue         = TypeConverterService.Default[connectorProductAttributeMapping.ProductAttributeType].ConvertToString(connectorProductAttributeMapping.DefaultValue),
                IsFilter             = connectorProductAttributeMapping.IsFilter,
                ProductAttributeID   = connectorProductAttributeMapping.ProductAttribute.AttributeID,
                ProductAttributeType = connectorProductAttributeMapping.ProductAttributeType.FullName
            });

            var connectorProductAttribute = ConnectorProductAttributeRepository.GetSingle(
                connectorProductAttributeMapping.Connector.ConnectorID,
                connectorProductAttributeMapping.ProductAttribute.AttributeID,
                connectorProductAttributeMapping.IsFilter);

            if (status == RepositoryOperationStatus.Created)
            {
                foreach (var connectorProductAttributeSettingTemplate in ConnectorProductAttributeSettingTemplateRepository.GetMultiple(connectorProductAttributeMapping.Connector.ConnectorSystemID))
                {
                    var templateSettingCode = connectorProductAttributeSettingTemplate.Code;

                    if (!connectorProductAttributeMapping.Properties.ContainsKey(templateSettingCode))
                    {
                        var templateSettingType = Type.GetType(connectorProductAttributeSettingTemplate.Type);

                        if (templateSettingType != null)
                        {
                            var templateSettingValue = TypeConverterService.ConvertFromString(templateSettingType, connectorProductAttributeSettingTemplate.Value);

                            connectorProductAttributeMapping.Properties[templateSettingCode] = templateSettingValue;
                        }
                    }
                }
            }

            SynchronizeProperties(connectorProductAttribute, connectorProductAttributeMapping.Properties);
        }
Пример #3
0
        public IEnumerable <ConnectorProductAttributeMapping> Get(Int32?connectorID, Int32?productAttributeID, Boolean?isFilter)
        {
            var connectorProductAttributes = ConnectorProductAttributeRepository
                                             .GetMultiple(connectorID, productAttributeID, isFilter)
                                             .ToArray();

            foreach (var connectorProductAttribute in connectorProductAttributes)
            {
                var connectorProductAttributeSettings = ConnectorProductAttributeSettingRepository
                                                        .GetMultiple(connectorProductAttribute.ConnectorProductAttributeID)
                                                        .ToArray();

                var settingTypesByCode = connectorProductAttributeSettings.ToDictionary(
                    connectorProductAttributeSetting => connectorProductAttributeSetting.Code,
                    connectorProductAttributeSetting => Type.GetType(connectorProductAttributeSetting.Type));

                if (settingTypesByCode.Any(pair => pair.Value == null))
                {
                    throw new Exception("One or more types could not be found:\r\n" + String.Join(Environment.NewLine, settingTypesByCode
                                                                                                  .Where(pair => pair.Value == null)
                                                                                                  .Select(pair => String.Format(" - Code: '{0}', Type: '{1}'", pair.Key, pair.Value))
                                                                                                  .ToArray()));
                }

                var properties = connectorProductAttributeSettings.ToDictionary(
                    settting => settting.Code,
                    setting => TypeConverterService.ConvertFromString(settingTypesByCode[setting.Code], setting.Value));

                var productAttributeType = Type.GetType(connectorProductAttribute.ProductAttributeType);

                yield return(new ConnectorProductAttributeMapping(properties)
                {
                    Connector = ConnectorRepository.GetSingle(connector => connector.ConnectorID == connectorProductAttribute.ConnectorID),
                    DefaultValue = TypeConverterService.ConvertFromString(productAttributeType, connectorProductAttribute.DefaultValue),
                    IsFilter = connectorProductAttribute.IsFilter,
                    ProductAttribute = ProductAttributeRepository.GetSingle(productAttribute => productAttribute.AttributeID == connectorProductAttribute.ProductAttributeID),
                    ProductAttributeType = Type.GetType(connectorProductAttribute.ProductAttributeType)
                });
            }
        }