Пример #1
0
        public async Task <IEnumerable <ApiResource> > FindApiResourcesByScopeAsync(IEnumerable <string> scopeNames)
        {
            var list      = $"|{string.Join("|", scopeNames)}|";
            var dataTable = await _dataFetcher.FetchAsync("FindApiResourcesByScope", new SqlParameter("@Scopes", list));

            var resources = new List <ApiResource>();

            foreach (DataRow row in dataTable.Rows)
            {
                var resourceName = row["ResourceName"].ToString();

                var resource = resources.SingleOrDefault(r => r.Name == resourceName);

                if (resource == null)
                {
                    resource = new ApiResource
                    {
                        Name        = resourceName,
                        DisplayName = row["ResourceDisplayName"].ToString()
                    };
                    resources.Add(resource);
                }

                resource.Scopes.Add(new Scope
                {
                    Name                    = row["ScopeName"].ToString(),
                    DisplayName             = row["ScopeDisplayName"].ToString(),
                    Description             = row["ScopeDescription"].ToString(),
                    Required                = (bool)row["ScopeRequired"],
                    Emphasize               = (bool)row["ScopeEmphasize"],
                    ShowInDiscoveryDocument = (bool)row["ScopeShowInDiscoveryDocument"]
                });
            }

            return(resources);
        }