Пример #1
0
        private void ExecuteCommandHandler(object parameter)
        {
            MainWindowViewModel mainWindow = Services.GetService <MainWindowViewModel>();

            IMetadataService metadata = Services.GetService <IMetadataService>();

            metadata.AttachDatabase(string.IsNullOrWhiteSpace(MyServer.Address) ? MyServer.Name : MyServer.Address, MyDatabase);

            IScriptingService scripting    = Services.GetService <IScriptingService>();
            string            sql          = scripting.PrepareScript(ScriptCode, out IList <ParseError> errors);
            string            errorMessage = string.Empty;

            foreach (ParseError error in errors)
            {
                errorMessage += error.Message + Environment.NewLine;
            }
            if (errors.Count > 0)
            {
                ScriptEditorViewModel scriptEditor = Services.GetService <ScriptEditorViewModel>();
                scriptEditor.Name       = "Errors";
                scriptEditor.ScriptCode = errorMessage;
                ScriptEditorView scriptView = new ScriptEditorView()
                {
                    DataContext = scriptEditor
                };
                mainWindow.AddNewTab(scriptEditor.Name, scriptView);
                return;
            }

            string json = "[]";

            try
            {
                json = scripting.ExecuteScript(sql, out IList <ParseError> executeErrors);
                foreach (ParseError error in executeErrors)
                {
                    errorMessage += error.Message + Environment.NewLine;
                }
                if (executeErrors.Count > 0)
                {
                    ScriptEditorViewModel scriptEditor = Services.GetService <ScriptEditorViewModel>();
                    scriptEditor.Name       = "Errors";
                    scriptEditor.ScriptCode = errorMessage;
                    ScriptEditorView scriptView = new ScriptEditorView()
                    {
                        DataContext = scriptEditor
                    };
                    mainWindow.AddNewTab(scriptEditor.Name, scriptView);
                    return;
                }
            }
            catch (Exception ex)
            {
                ScriptEditorViewModel scriptEditor = Services.GetService <ScriptEditorViewModel>();
                scriptEditor.Name       = "Errors";
                scriptEditor.ScriptCode = ex.Message;
                ScriptEditorView scriptView = new ScriptEditorView()
                {
                    DataContext = scriptEditor
                };
                mainWindow.AddNewTab(scriptEditor.Name, scriptView);
                return;
            }
            JsonSerializerOptions serializerOptions = new JsonSerializerOptions();

            serializerOptions.Converters.Add(new DynamicJsonConverter());
            dynamic data = JsonSerializer.Deserialize <dynamic>(json, serializerOptions);

            DataGrid dataView = DynamicGridCreator.CreateDynamicDataGrid(data);

            mainWindow.AddNewTab($"{Name} (result)", dataView);
        }