public void FindScripts() { lvScripts.Items.Clear(); tsbMainFindScripts.Enabled = false; tsbExportToCsv.Enabled = false; WorkAsync(new WorkAsyncInfo { Message = "Loading scripts (this can take a while...)", AsyncArgument = null, Work = (bw, e) => { var lScripts = new List <ListViewItem>(); var sManager = new ScriptsManager(Service, bw); sManager.Find(new Version(ConnectionDetail.OrganizationVersion)); foreach (var script in sManager.Scripts) { var item = new ListViewItem(script.Type) { Tag = script }; item.SubItems.Add(script.EntityName); item.SubItems.Add(script.EntityLogicalName); item.SubItems.Add(script.Name); item.SubItems.Add(script.Event); item.SubItems.Add(script.Attribute); item.SubItems.Add(script.AttributeLogicalName); item.SubItems.Add(script.ScriptLocation); item.SubItems.Add(script.MethodCalled); item.SubItems.Add(script.PassExecutionContext?.ToString() ?? ""); item.SubItems.Add(script.Arguments); item.SubItems.Add(script.IsActive?.ToString() ?? ""); if (script.HasProblem) { item.ForeColor = Color.Red; } lScripts.Add(item); } e.Result = lScripts; }, PostWorkCallBack = e => { lvScripts.Items.AddRange(((List <ListViewItem>)e.Result).ToArray()); tsbMainFindScripts.Enabled = true; tsbExportToCsv.Enabled = true; }, ProgressChanged = e => { SetWorkingMessage(e.UserState.ToString()); } }); }
public void FindScripts() { lvScripts.Items.Clear(); tsbMainFindScripts.Enabled = false; tsbExportToCsv.Enabled = false; WorkAsync(new WorkAsyncInfo { Message = "Loading scripts (this can take a while...)", AsyncArgument = null, Work = (bw, e) => { var lScripts = new List <ListViewItem>(); var sManager = new ScriptsManager(Service); sManager.Find(); foreach (var script in sManager.Scripts) { var item = new ListViewItem(script.Type); item.SubItems.Add(script.EntityName); item.SubItems.Add(script.EntityLogicalName); item.SubItems.Add(script.Name); item.SubItems.Add(script.Event); item.SubItems.Add(script.Attribute); item.SubItems.Add(script.AttributeLogicalName); item.SubItems.Add(script.ScriptLocation); item.SubItems.Add(script.MethodCalled); item.SubItems.Add(script.Arguments); item.SubItems.Add(script.IsActive.HasValue ? script.IsActive.Value.ToString() : ""); if (script.HasProblem) { item.ForeColor = Color.Red; } lScripts.Add(item); } e.Result = lScripts; }, PostWorkCallBack = e => { lvScripts.Items.AddRange(((List <ListViewItem>)e.Result).ToArray()); tsbMainFindScripts.Enabled = true; tsbExportToCsv.Enabled = true; } }); }
public void FindScripts() { lvScripts.Items.Clear(); tsbMainFindScripts.Enabled = false; tsbExportToCsv.Enabled = false; WorkAsync(new WorkAsyncInfo { Message = "Loading scripts (this can take a while...)", AsyncArgument = null, Work = (bw, e) => { var lScripts = new List<ListViewItem>(); var sManager = new ScriptsManager(Service); sManager.Find(); foreach (var script in sManager.Scripts) { var item = new ListViewItem(script.Type); item.SubItems.Add(script.EntityName); item.SubItems.Add(script.EntityLogicalName); item.SubItems.Add(script.Name); item.SubItems.Add(script.Event); item.SubItems.Add(script.Attribute); item.SubItems.Add(script.AttributeLogicalName); item.SubItems.Add(script.ScriptLocation); item.SubItems.Add(script.MethodCalled); item.SubItems.Add(script.Arguments); item.SubItems.Add(script.IsActive.HasValue ? script.IsActive.Value.ToString() : ""); if (script.HasProblem) { item.ForeColor = Color.Red; } lScripts.Add(item); } e.Result = lScripts; }, PostWorkCallBack = e => { lvScripts.Items.AddRange(((List<ListViewItem>)e.Result).ToArray()); tsbMainFindScripts.Enabled = true; tsbExportToCsv.Enabled = true; } }); }
private void FindScripts() { lvScripts.Items.Clear(); tsbMainFindScripts.Enabled = false; tsbExportToCsv.Enabled = false; WorkAsync("Loading scripts (this can take a while...)", e => { var lScripts = new List <ListViewItem>(); var sManager = new ScriptsManager(Service); sManager.Find(); foreach (var script in sManager.Scripts) { var item = new ListViewItem(script.Type); item.SubItems.Add(script.EntityName); item.SubItems.Add(script.EntityLogicalName); item.SubItems.Add(script.Name); item.SubItems.Add(script.Event); item.SubItems.Add(script.Attribute); item.SubItems.Add(script.AttributeLogicalName); item.SubItems.Add(script.ScriptLocation); item.SubItems.Add(script.MethodCalled); if (script.HasProblem) { item.ForeColor = Color.Red; } lScripts.Add(item); } e.Result = lScripts; }, e => { lvScripts.Items.AddRange(((List <ListViewItem>)e.Result).ToArray()); tsbMainFindScripts.Enabled = true; tsbExportToCsv.Enabled = true; }); }
public void FindScripts(bool allEntities) { lvScripts.Items.Clear(); tsddFindScripts.Enabled = false; tsbExportToCsv.Enabled = false; var solutionList = new List <Entity>(); if (!allEntities) { var dialog = new SolutionPicker(Service); if (dialog.ShowDialog(this) == DialogResult.OK) { solutionList = dialog.SelectedSolution; } else { tsddFindScripts.Enabled = true; tsbExportToCsv.Enabled = true; return; } } WorkAsync(new WorkAsyncInfo { Message = "Loading scripts (this can take a while...)", AsyncArgument = solutionList, Work = (bw, e) => { _lScripts = new List <ListViewItem>(); var solutions = (List <Entity>)e.Argument; var sManager = new ScriptsManager(Service, bw); sManager.Find(solutions, loadManagedEntities, new Version(ConnectionDetail.OrganizationVersion)); _metadata = sManager.Metadata; _forms = sManager.Forms; _views = sManager.Views; _homePageGrids = sManager.HomePageGrids; _userLcid = sManager.UserLcid; foreach (var script in sManager.Scripts) { var item = new ListViewItem(script.Type) { Tag = script }; item.SubItems.Add(script.EntityName); item.SubItems.Add(script.EntityLogicalName); item.SubItems.Add(script.ItemName); item.SubItems.Add(script.FormType); item.SubItems.Add(script.FormState); item.SubItems.Add(script.Event); item.SubItems.Add(script.Attribute); item.SubItems.Add(script.AttributeLogicalName); item.SubItems.Add(script.Library); item.SubItems.Add(script.MethodCalled); item.SubItems.Add(script.PassExecutionContext?.ToString() ?? ""); item.SubItems.Add(script.Parameters); item.SubItems.Add(script.Enabled?.ToString() ?? ""); item.SubItems.Add(script.Problem); if (script.HasProblem) { item.ForeColor = Color.Red; } _lScripts.Add(item); } e.Result = _lScripts; }, PostWorkCallBack = e => { tsddFindScripts.Enabled = true; tsbExportToCsv.Enabled = true; if (e.Error != null) { MessageBox.Show(this, e.Error.Message, @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } lvScripts.Items.AddRange(((List <ListViewItem>)e.Result).ToArray()); tsbApplyChanges.Enabled = lvScripts.Items.Cast <ListViewItem>().Any(i => ((Script)i.Tag).RequiresUpdate); }, ProgressChanged = e => { SetWorkingMessage(e.UserState.ToString()); } }); }
private void tsbApplyChanges_Click(object sender, EventArgs e) { //lvScripts.Items.Cast<ListViewItem>() var scripts = _lScripts.Where(i => i.Tag is Script s && (s.Action == ScriptAction.Create || s.Action == ScriptAction.Delete || s.RequiresUpdate)) .Select(i => (Script)i.Tag).ToList(); int createLibrary = scripts.Count(s => (s.Type == "Form Library" || s.Type == "Homepage Grid Library") && s.Action == ScriptAction.Create); int updateLibrary = scripts.Count(s => (s.Type == "Form Library" || s.Type == "Homepage Grid Library") && s.Action == ScriptAction.Update); int deleteLibrary = scripts.Count(s => (s.Type == "Form Library" || s.Type == "Homepage Grid Library") && s.Action == ScriptAction.Delete); int createScript = scripts.Count(s => s.Type != "Form Library" && s.Type != "Homepage Grid Library" && s.Action == ScriptAction.Create); int updateScript = scripts.Count(s => s.Type != "Form Library" && s.Type != "Homepage Grid Library" && s.Action == ScriptAction.Update); int deleteScript = scripts.Count(s => s.Type != "Form Library" && s.Type != "Homepage Grid Library" && s.Action == ScriptAction.Delete); var message = $@"Are you sure you want to apply the following changes: Form Libraries: - {createLibrary} create - {updateLibrary} update - {deleteLibrary} delete Events: - {createScript} create - {updateScript} update - {deleteScript} delete"; if (MessageBox.Show(this, message, @"Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) { return; } foreach (var script in scripts) { script.UiItem.Attributes.Remove(script.ItemUpdateAttribute); } var orderedScripts = scripts.OrderBy(s => s.Order).ToList(); foreach (var script in orderedScripts) { script.ProcessChanges(orderedScripts); } WorkAsync(new WorkAsyncInfo { Message = "Updating forms...", Work = (bw, evt) => { var manager = new ScriptsManager(Service, bw); manager.UpdateForms(scripts); }, PostWorkCallBack = evt => { foreach (var script in scripts) { var lvi = _lScripts.First(i => i.Tag == script); switch (script.Action) { case ScriptAction.Create: lvi.Font = new Font(lvi.Font.FontFamily, lvi.Font.Size, script.RequiresUpdate ? FontStyle.Bold : FontStyle.Regular); lvi.ForeColor = script.UpdateErrorMessage == null ? DefaultForeColor : Color.Red; lvi.ImageIndex = script.UpdateErrorMessage == null ? -1 : lvi.ImageIndex; break; case ScriptAction.Update: lvi.Font = new Font(lvi.Font.FontFamily, lvi.Font.Size, script.RequiresUpdate ? FontStyle.Bold : FontStyle.Regular); lvi.SubItems[9].Text = script.Library; lvi.SubItems[10].Text = script.MethodCalled; lvi.SubItems[11].Text = script.PassExecutionContext?.ToString() ?? ""; lvi.SubItems[12].Text = script.Parameters; lvi.SubItems[13].Text = script.Enabled?.ToString() ?? ""; lvi.ForeColor = script.UpdateErrorMessage == null ? DefaultForeColor : Color.Red; lvi.ImageIndex = script.UpdateErrorMessage == null ? -1 : lvi.ImageIndex; break; case ScriptAction.Delete: lvScripts.Items.Remove(lvi); _lScripts.Remove(lvi); break; } script.Action = script.UpdateErrorMessage == null ? ScriptAction.None : script.Action; } tsbApplyChanges.Enabled = lvScripts.SelectedItems.Cast <ListViewItem>().Any(i => i.Tag is Script s && (s.Action == ScriptAction.Create || s.Action == ScriptAction.Delete || s.RequiresUpdate)); lvScripts_SelectedIndexChanged(null, null); if (evt.Error != null) { MessageBox.Show(this, $@"An error occured: {evt.Error.Message}", @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } });