private object GetConfigPropertyValueFromInput(JObject source, IMultipleOptionPropertyDefinition propertyModel, ConfigurationIdentity configIdentity, IEnumerable <ConfigurationSet> requiredConfigurationSets) { if (propertyModel is ConfigurationPropertyWithMultipleOptionValuesModelDefinition valueDefintion) { return(GetConfigMultipleOptionPropertyValueFromInput(source, valueDefintion, configIdentity, requiredConfigurationSets)); } return(GetConfigMultipleOptionPropertyValueFromInput(source, propertyModel, configIdentity, requiredConfigurationSets)); }
private void UpdateOptions(object source, IMultipleOptionPropertyDefinition model, IEnumerable <ConfigurationSet> configurationSets, ConfigurationIdentity configIdentity) { if (model is ConfigurationPropertyWithMultipleOptionValuesModelDefinition valueModel) { UpdateMultipleOptions(source, valueModel, configurationSets, configIdentity); } else { UpdateMultipleOptions(source, model, configurationSets, configIdentity); } }
private object GetPropertyValue(object source, IMultipleOptionPropertyDefinition propertyModel) { var collection = propertyModel.GetPropertyValue(source) as IEnumerable ?? new List <object>(); var isOptionValue = propertyModel is ConfigurationPropertyWithMultipleOptionValuesModelDefinition; var result = new List <string>(); foreach (var item in collection) { var itemValue = isOptionValue? item.ToString() : optionSetFactory.GetKeyFromObject(item, propertyModel); result.Add(itemValue); } return(result); }
private object GetConfigMultipleOptionPropertyValueFromInput(JObject source, IMultipleOptionPropertyDefinition propertyModel, ConfigurationIdentity configIdentity, IEnumerable <ConfigurationSet> requiredConfigurationSets) { var collectionBuilder = propertyModel.GetCollectionBuilder(); var optionSet = optionSetFactory.Build(propertyModel, configIdentity, requiredConfigurationSets); foreach (var key in source.GetValue(propertyModel.ConfigurationPropertyName.ToLowerCamelCase())?.Select(s => s.ToObject <string>()) ?? Enumerable.Empty <string>()) { if (optionSet.TryGetValue(key, out var option)) { collectionBuilder.Add(option); } } return(collectionBuilder.Collection); }
private void UpdateMultipleOptions(object source, IMultipleOptionPropertyDefinition model, IEnumerable <ConfigurationSet> configurationSets, ConfigurationIdentity configIdentity) { var optionSet = optionSetFactory.Build(model, configIdentity, configurationSets); var collectionBuilder = model.GetCollectionBuilder(); var items = model.GetPropertyValue(source) as IEnumerable; foreach (var item in items ?? Enumerable.Empty <object>()) { if (optionSet.TryGetValue(item, out var actualValue)) { collectionBuilder.Add(actualValue); } } model.SetPropertyValue(source, collectionBuilder.Collection); }
private ValidationResult ValidateProperty(object target, IMultipleOptionPropertyDefinition propertyModel, ConfigurationIdentity configIdentity, IEnumerable <ConfigurationSet> configurationSets) { var errors = new List <string>(); var propertyValue = propertyModel.GetPropertyValue(target) as IEnumerable; var options = optionSetFactory.Build(propertyModel, configIdentity, configurationSets); var isOptionValue = propertyModel is ConfigurationPropertyWithMultipleOptionValuesModelDefinition; foreach (var value in propertyValue) { if ((isOptionValue && options.ContainsKey(value)) || (!isOptionValue && options.OptionKeyInSet(value))) { continue; } errors.Add(ValidationStrings.OptionNotFound(propertyModel.ConfigurationPropertyName)); break; } return(new ValidationResult(errors)); }