private List ExecuteRuleCollectionSchemaCheck()

in src/IdFix/Rules/RulesRunner.cs [238:269]


        private List<string> ExecuteRuleCollectionSchemaCheck(RuleCollection collection, LdapConnection connection)
        {
            this.OnStatusUpdate?.Invoke(StringLiterals.LdapConnectionEstablishing);
            var schemaDistinguishedName = this.GetSchemaDistinguishedName(connection);
            using (var searcher = collection.CreateSchemaSearcher(schemaDistinguishedName))
            {
                this.OnStatusUpdate?.Invoke(StringLiterals.LdapConnectionEstablished);
                this.OnStatusUpdate?.Invoke(StringLiterals.BeginningQuery);

                if (this.CancellationPending)
                {
                    return null;
                }

                var replicatedAttributes = new List<string>();
                var results = searcher.FindAll();

                foreach (System.DirectoryServices.SearchResult entry in results)
                {
                    if (entry.Properties.Contains(Constants.IsMemberOfPartialAttributeSetAttribute)
                     && entry.Properties[Constants.IsMemberOfPartialAttributeSetAttribute].Count > 0
                     && (bool)entry.Properties[Constants.IsMemberOfPartialAttributeSetAttribute][0] == true)
                    {
                        replicatedAttributes.Add(entry.Properties[Constants.LdapDisplayNameAttribute][0].ToString());
                    }
                }

                var notReplicatedAttributes = collection.AttributesToQuery.Where(_ => !replicatedAttributes.Contains(_, StringComparer.InvariantCultureIgnoreCase)).ToList();

                return notReplicatedAttributes;
            }
        }