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