Пример #1
0
        private async void setChildrenButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (forestTreeView.SelectedItem == null)
                {
                    return;
                }

                EnableGUIWait();

                // Set GUI
                ADObject parent = (ADObject)forestTreeView.SelectedItem;
                parent.GetAllChildren().ForEach(child => child.Tier = parent.Tier);
                forestTreeView.Focus();

                if (parent.Type.Equals(ADObjectType.Domain))
                {
                    // Delete current tier label
                    await DBConnection.Query(@"
                        CALL db.labels()
                        YIELD label WHERE label STARTS WITH 'Tier'
                        WITH COLLECT(label) AS labels
                        MATCH (n {domain:'" + parent.Name + @"'}) WHERE EXISTS(n.distinguishedname)
                        WITH COLLECT(n) AS nodes, labels
                        CALL apoc.create.removeLabels(nodes, labels) YIELD node
                        RETURN NULL
                    ");

                    // Add new tier label
                    await DBConnection.Query(@"
                        MATCH (n {domain:'" + parent.Name + @"'}) WHERE EXISTS(n.distinguishedname)
                        WITH COLLECT(n) AS nodes
                        CALL apoc.create.addLabels(nodes, ['Tier" + parent.Tier + @"']) YIELD node
                        RETURN NULL
                    ");
                }
                else
                {
                    // Delete current tier label
                    await DBConnection.Query(@"
                        CALL db.labels()
                        YIELD label WHERE label STARTS WITH 'Tier'
                        WITH COLLECT(label) AS labels
                        MATCH (n) WHERE n.distinguishedname ENDS WITH '," + parent.Distinguishedname + @"'
                        WITH COLLECT(n) AS nodes, labels
                        CALL apoc.create.removeLabels(nodes, labels) YIELD node
                        RETURN NULL
                    ");

                    // Add new tier label
                    await DBConnection.Query(@"
                        MATCH (n) WHERE n.distinguishedname ENDS WITH '," + parent.Distinguishedname + @"'
                        WITH COLLECT(n) AS nodes
                        CALL apoc.create.addLabels(nodes, ['Tier" + parent.Tier + @"']) YIELD node
                        RETURN NULL
                    ");
                }

                DisableGUIWait();
            }
            catch (Exception err)
            {
                // Error
                MessageBox.Show(err.Message.ToString(), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                DisableGUIWait();
                MainWindow.BackToConnectPage();
            }
        }