Пример #1
0
    public virtual async Task <GetFeatureListResultDto> GetAsync([NotNull] string providerName, string providerKey)
    {
        await CheckProviderPolicy(providerName, providerKey);

        var result = new GetFeatureListResultDto
        {
            Groups = new List <FeatureGroupDto>()
        };

        foreach (var group in FeatureDefinitionManager.GetGroups())
        {
            var groupDto = new FeatureGroupDto
            {
                Name        = group.Name,
                DisplayName = group.DisplayName.Localize(StringLocalizerFactory),
                Features    = new List <FeatureDto>()
            };

            foreach (var featureDefinition in group.GetFeaturesWithChildren())
            {
                if (providerName == TenantFeatureValueProvider.ProviderName &&
                    CurrentTenant.Id == null &&
                    providerKey == null &&
                    !featureDefinition.IsAvailableToHost)
                {
                    continue;
                }

                var feature = await FeatureManager.GetOrNullWithProviderAsync(featureDefinition.Name, providerName, providerKey);

                groupDto.Features.Add(new FeatureDto
                {
                    Name        = featureDefinition.Name,
                    DisplayName = featureDefinition.DisplayName?.Localize(StringLocalizerFactory),
                    ValueType   = featureDefinition.ValueType,
                    Description = featureDefinition.Description?.Localize(StringLocalizerFactory),
                    ParentName  = featureDefinition.Parent?.Name,
                    Value       = feature.Value,
                    Provider    = new FeatureProviderDto
                    {
                        Name = feature.Provider?.Name,
                        Key  = feature.Provider?.Key
                    }
                });
            }

            SetFeatureDepth(groupDto.Features, providerName, providerKey);

            if (groupDto.Features.Any())
            {
                result.Groups.Add(groupDto);
            }
        }

        return(result);
    }
Пример #2
0
        public static FeatureGroupDto ToDto(this FeatureGroup feature)
        {
            var dto = new FeatureGroupDto
            {
                Name        = feature.Name,
                DisplayName = feature.DisplayName
            };

            ((IData)feature).ToDto((IDataDto)dto);
            return(dto);
        }
Пример #3
0
        public static FeatureGroup ToDomain(this FeatureGroupDto feature, FeatureGroup originalFeature = null)
        {
            if (originalFeature != null && originalFeature.Id == feature.Id)
            {
                originalFeature.Name        = feature.Name;
                originalFeature.DisplayName = feature.DisplayName;

                ((IDataDto)feature).ToDomain((IData)originalFeature);
                return(originalFeature);
            }

            var data = new FeatureGroup
            {
                Name        = feature.Name,
                DisplayName = feature.DisplayName
            };

            ((IDataDto)feature).ToDomain((IData)data);
            return(data);
        }
Пример #4
0
        public void Post()
        {
            try
            {
                using (var server = TestServer.Create <MyStartup>())
                {
                    var dto = new FeatureGroupDto
                    {
                        Id          = 0,
                        Name        = "Group 1",
                        DisplayName = "Group 1"
                    };

                    HttpResponseMessage response;
                    response = server.HttpClient.PostAsJsonAsync("api/FeatureGroup", dto).Result;
                }
            }
            catch (Exception ex)
            {
            }
        }