Beispiel #1
0
        private void EditDataServerCommand(object parameter)
        {
            if (!(parameter is TreeNodeViewModel treeNode))
            {
                return;
            }
            if (!(treeNode.NodePayload is DatabaseServer server))
            {
                return;
            }

            // make copy of server settings to rollback changes if needed
            DatabaseServer serverCopy = server.Copy();

            // edit server settings
            ConnectSQLServerDialogWindow dialog = new ConnectSQLServerDialogWindow(serverCopy);

            _ = dialog.ShowDialog();
            if (dialog.Result == null)
            {
                return;
            }

            string serverCopyName = string.IsNullOrWhiteSpace(serverCopy.Address)
                                ? serverCopy.Name
                                : $"{serverCopy.Name} ({serverCopy.Address})";

            // check if new server name already exists
            if (serverCopy.Name != server.Name)
            {
                if (DatabaseServerNameExists(serverCopy))
                {
                    MessageBox.Show("SQL сервер " + serverCopyName + " уже сущестует.",
                                    "DaJet", MessageBoxButton.OK, MessageBoxImage.Information);
                    return;
                }
            }
            // check if new server address already exists
            if (serverCopy.Address != server.Address)
            {
                if (DatabaseServerAddressExists(serverCopy))
                {
                    MessageBox.Show("SQL сервер " + serverCopyName + " уже сущестует.",
                                    "DaJet", MessageBoxButton.OK, MessageBoxImage.Information);
                    return;
                }
            }

            // persist server settings changes
            serverCopy.CopyTo(server);
            SaveMetadataSettings();

            // show server name and address changes in UI
            treeNode.NodeText = serverCopyName;
        }
Beispiel #2
0
        private void AddDataServerCommand(object parameter)
        {
            if (!(parameter is TreeNodeViewModel treeNode))
            {
                return;
            }
            if (treeNode.NodePayload != this)
            {
                return;
            }

            // get sql server address
            ConnectSQLServerDialogWindow dialog = new ConnectSQLServerDialogWindow();

            _ = dialog.ShowDialog();
            if (dialog.Result == null)
            {
                return;
            }

            // check if server name or address is already exists
            if (DatabaseServerExists(dialog.Result))
            {
                MessageBox.Show("SQL сервер " + dialog.Result.Name + " уже добавлен.",
                                "DaJet", MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }

            // setup server connection
            IMessagingService messaging = Services.GetService <IMessagingService>();

            messaging.UseServer(
                string.IsNullOrWhiteSpace(dialog.Result.Address)
                ? dialog.Result.Name
                : dialog.Result.Address);
            if (!string.IsNullOrWhiteSpace(dialog.Result.UserName))
            {
                messaging.UseCredentials(dialog.Result.UserName, dialog.Result.Password);
            }
            messaging.UseDatabase(string.Empty);

            // check connection
            string errorMessage;

            if (messaging.CheckConnection(out errorMessage))
            {
                int port = messaging.GetServiceBrokerPortNumber();
                if (port != 0)
                {
                    dialog.Result.ServiceBrokerPortNumber = port;
                }
                MessageBox.Show("Соединение открыто успешно." + Environment.NewLine + messaging.ConnectionString,
                                "DaJet", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else
            {
                MessageBox.Show("Соединение недоступно!"
                                + Environment.NewLine + messaging.ConnectionString
                                + Environment.NewLine + Environment.NewLine + errorMessage,
                                "DaJet", MessageBoxButton.OK, MessageBoxImage.Information);
            }

            MetadataSettings.Servers.Add(dialog.Result);
            SaveMetadataSettings();

            TreeNodeViewModel serverNode = CreateServerTreeNode(dialog.Result, !string.IsNullOrEmpty(errorMessage));

            serverNode.IsSelected = true;
            RootNode.TreeNodes.Add(serverNode);
        }