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"); } }
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); }
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) }); } }