| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | using System.Collections.Generic;using System.Linq;using System.Windows;using InABox.Clients;using InABox.Core;using InABox.DynamicGrid;using InABox.WPF;using ScriptEditor = InABox.DynamicGrid.ScriptEditorWindow;namespace PRSServer.Formd.DatabaseScripts{    public class DatabaseScriptGrid : DynamicDataGrid<Script>    {        public DatabaseScriptGrid()        {            HiddenColumns.Add(x => x.Section);            HiddenColumns.Add(x => x.Code);            ActionColumns.Add(new DynamicImageColumn(Properties.Resources.script.AsBitmapImage(), EditScript));            OnCustomiseEditor += CustomiseEditor;        }        protected override void DoReconfigure(FluentList<DynamicGridOption> options)        {            base.DoReconfigure(options);            options.AddRange(                DynamicGridOption.AddRows,                DynamicGridOption.EditRows,                DynamicGridOption.DeleteRows,                DynamicGridOption.RecordCount,                DynamicGridOption.SelectColumns            );        }        protected override void DoValidate(Script[] items, List<string> errors)        {            base.DoValidate(items, errors);            if (items.Any(x => string.IsNullOrWhiteSpace(x.Section)))                errors.Add("[Section] must not be blank");            if (items.Any(x => x.ScriptType == ScriptType.None))                errors.Add("[Script Type] must not be None or empty");        }        private bool EditScript(CoreRow? arg)        {            if (arg is null)            {                MessageBox.Show("Please select a module first");                return false;            }            var script = arg.ToObject<Script>();            var code = script.Code;            var editor = new ScriptEditor(code);            if (editor.ShowDialog() == true)            {                script.Code = editor.Script;                new Client<Script>().Save(script, "Updated by User");                return true;            }            return false;        }        private void CustomiseEditor(IDynamicEditorForm sender, Script[]? items, DynamicGridColumn column, BaseEditor editor)        {            if (string.Equals(column.ColumnName, "Section"))            {                var script = items?.FirstOrDefault();                editor.Editable = !string.IsNullOrWhiteSpace(script?.Section) ? Editable.Disabled : Editable.Enabled;            }        }    }}
 |