public PropertiesEntry GetPropertiesEntry() { var key = Key.Replace("-", "."); var propertiesSet = PropertiesProvider.GetInstance(key); var entry = new PropertiesEntry(key); var propertiesValues = new List <PropertiesValue>(); foreach (var propertiesElement in Properties) { var property = propertiesSet.GetType().GetProperty(propertiesElement.Key.Replace("-", ".")); if (property != null) { foreach (var propertyValue in propertiesElement.Values) { var value = ParsePropertyValue(property.PropertyType, propertyValue.Value); var propertiesValue = propertiesValues.FirstOrDefault(v => v.SiteId == propertyValue.SiteId); if (propertiesValue == null) { propertiesValue = new PropertiesValue(propertyValue.SiteId, PropertiesProvider.GetInstance(key)); propertiesValues.Add(propertiesValue); } property.SetValue(propertiesValue.Value, value); } } } entry.Properties.AddRange(propertiesValues); return(entry); }
public async Task <ActionResult <ListResponse <PropertiesOption> > > GetAsync( string setKey, string propertyKey) { var propertiesSet = PropertiesProvider.GetInstance(setKey.Replace("-", ".")); if (propertiesSet == null) { return(NotFound()); } var resolver = _resolvers.FirstOrDefault(r => r.CanResolve(propertiesSet)); if (resolver == null) { return(NotFound()); } var options = await resolver.ResolveAsync(propertiesSet, propertyKey.Replace("-", ".")); return(new ListResponse <PropertiesOption>(options, options.Count)); }