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());
                }
            });
        }
Exemple #2
0
        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;
                }
            });
        }
Exemple #4
0
        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;
            });
        }
Exemple #5
0
        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());
                }
            });
        }
Exemple #6
0
        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);
                    }
                }
            });