예제 #1
0
        private void FillHtmlList()
        {
            ListViewDelegates.ClearItems(lstWebResources);

            if (webResourcesHtmlCache == null || webResourcesHtmlCache.Count == 0)
            {
                webResourcesHtmlCache = new List <Entity>();

                QueryExpression qe = new QueryExpression("webresource");

                ConditionExpression ce = new ConditionExpression();
                ce.AttributeName = "webresourcetype";

                if (requestedType == (int)WebResourceType.Image)
                {
                    ce.Operator = ConditionOperator.In;
                    ce.Values.AddRange(5, 6, 7);
                }
                else
                {
                    ce.Operator = ConditionOperator.Equal;
                    ce.Values.Add(requestedType);
                }

                qe.Criteria.AddCondition(ce);
                qe.ColumnSet.AllColumns = true;

                EntityCollection ec = service.RetrieveMultiple(qe);

                foreach (Entity webresource in ec.Entities)
                {
                    webResourcesHtmlCache.Add(webresource);
                }
            }

            foreach (Entity webresource in webResourcesHtmlCache)
            {
                ListViewItem item = new ListViewItem(webresource.Contains("displayname") ? webresource["displayname"].ToString() : "N/A");
                item.SubItems.Add(webresource["name"].ToString());
                item.Tag = webresource;

                ListViewDelegates.AddItem(lstWebResources, item);
            }

            ListViewDelegates.Sort(lstWebResources);
            ListViewDelegates.SetEnableState(lstWebResources, true);
            CommonDelegates.SetEnableState(btnWebResourcePickerCancel, true);
            CommonDelegates.SetEnableState(btnWebResourcePickerValidate, true);
            CommonDelegates.SetEnableState(btnNewResource, true);
            CommonDelegates.SetEnableState(btnRefresh, true);
        }
예제 #2
0
        private void BwFillViewsDoWork(object sender, DoWorkEventArgs e)
        {
            string entityLogicalName = e.Argument.ToString();

            List <Entity> viewsList = ViewHelper.RetrieveViews(entityLogicalName, entitiesCache, service);

            viewsList.AddRange(ViewHelper.RetrieveUserViews(entityLogicalName, entitiesCache, service));

            foreach (Entity view in viewsList)
            {
                bool display = true;

                var item = new ListViewItem(view["name"].ToString());
                item.Tag = view;

                display = ShouldDisplayItem(item);

                if (display)
                {
                    if (view.Contains("statecode"))
                    {
                        int statecodeValue = ((OptionSetValue)view["statecode"]).Value;
                        switch (statecodeValue)
                        {
                        case ViewHelper.VIEW_STATECODE_ACTIVE:
                            item.SubItems.Add("Active");
                            break;

                        case ViewHelper.VIEW_STATECODE_INACTIVE:
                            item.SubItems.Add("Inactive");
                            break;
                        }
                    }
                    // Add view to each list of views (source and target)
                    ListViewItem clonedItem = (ListViewItem)item.Clone();
                    ListViewDelegates.AddItem(lvSourceViews, item);

                    if (view.Contains("iscustomizable") &&
                        ((BooleanManagedProperty)view["iscustomizable"]).Value == false)
                    {
                        clonedItem.ForeColor   = Color.Gray;
                        clonedItem.ToolTipText = "This view has not been defined as customizable";
                    }

                    //ListViewDelegates.AddItem(lvTargetViews, clonedItem);
                }
            }
        }
예제 #3
0
        private void BwTransferViewsDoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                List <Entity> checkedViews = new List <Entity>();

                foreach (ListViewItem item in ListViewDelegates.GetSelectedItems(lvSourceViews))
                {
                    checkedViews.Add((Entity)item.Tag);
                }

                e.Result = ViewHelper.TransferViews(checkedViews, service, targetService, _savedQueryMetadata);
            }
            catch (Exception error)
            {
                CommonDelegates.DisplayMessageBox(ParentForm, error.Message, "Error", MessageBoxButtons.OK,
                                                  MessageBoxIcon.Error);
            }
        }
예제 #4
0
        private void LvTargetViewsItemChecked(object sender, ItemCheckedEventArgs e)
        {
            if (e.Item.Checked && e.Item.ForeColor == Color.Gray)
            {
                MessageBox.Show(this, "This view has not been defined as customizable. It can't be customized!",
                                "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                e.Item.Checked = false;
            }

            if (ListViewDelegates.GetCheckedItems(lvTargetViews).Length > 0)
            {
                tsbSaveViews.Enabled     = true;
                tsbPublishEntity.Enabled = true;
            }
            else
            {
                tsbSaveViews.Enabled     = false;
                tsbPublishEntity.Enabled = false;
            }
        }
예제 #5
0
        /// <summary>
        /// Fills the list of entities
        /// </summary>
        private void FillEntities()
        {
            // Checks the application cache and load it if needed
            //if (entityCache == null || entityCache.Count == 0)
            //{
            //    entityCache = new List<EntityMetadata>();

            //    var request = new RetrieveAllEntitiesRequest
            //    {
            //        EntityFilters = EntityFilters.Entity
            //    };

            //    var response = (RetrieveAllEntitiesResponse)SiteMapEditor.service.Execute(request);

            //    foreach (var emd in response.EntityMetadata)
            //    {
            //        SiteMapEditor.entityCache.Add(emd);
            //    }
            //}

            // Displays entities
            foreach (var emd in entityCache)
            {
                if ((emd.IsCustomizable.Value || emd.IsManaged.Value == false) && emd.DisplayName.UserLocalizedLabel != null)
                {
                    var item = new ListViewItem
                    {
                        Text = emd.DisplayName.UserLocalizedLabel.Label,
                        Tag  = emd
                    };

                    ListViewDelegates.AddItem(lvSelectedEntities, item);
                }
            }

            // Enables controls
            ListViewDelegates.Sort(lvSelectedEntities);
            ListViewDelegates.SetEnableState(lvSelectedEntities, true);
            CommonDelegates.SetEnableState(btnCancel, true);
            CommonDelegates.SetEnableState(btnValidate, true);
        }
예제 #6
0
        /// <summary>
        /// Fills the entities listview
        /// </summary>
        public void FillEntitiesList()
        {
            try
            {
                ListViewDelegates.ClearItems(lvEntities);

                foreach (EntityMetadata emd in entitiesCache)
                {
                    var item = new ListViewItem {
                        Text = emd.DisplayName.UserLocalizedLabel.Label, Tag = emd.LogicalName
                    };
                    item.SubItems.Add(emd.LogicalName);
                    ListViewDelegates.AddItem(lvEntities, item);
                }
            }
            catch (Exception error)
            {
                string errorMessage = CrmExceptionHelper.GetErrorMessage(error, true);
                CommonDelegates.DisplayMessageBox(ParentForm, errorMessage, "Error", MessageBoxButtons.OK,
                                                  MessageBoxIcon.Error);
            }
        }
예제 #7
0
        private void FillList()
        {
            try
            {
                ListViewDelegates.ClearItems(lstSolutions);

                EntityCollection ec = RetrieveSolutions();

                foreach (Entity solution in ec.Entities)
                {
                    ListViewItem item = new ListViewItem(solution["friendlyname"].ToString());
                    item.SubItems.Add(solution["version"].ToString());
                    item.SubItems.Add(((EntityReference)solution["publisherid"]).Name);
                    item.Tag = solution;

                    ListViewDelegates.AddItem(lstSolutions, item);
                }
            }
            catch (Exception error)
            {
                CommonDelegates.DisplayMessageBox(this, error.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #8
0
        /// <summary>
        /// Initializes a new instance of class WebResourcePicker
        /// </summary>
        /// <param name="type">Type of web resource to select</param>
        public WebResourcePicker(WebResourceType type, List <Entity> webResourcesImageCache, List <Entity> webResourcesHtmlCache, IOrganizationService service)
        {
            InitializeComponent();

            this.webResourcesImageCache = webResourcesImageCache;
            this.webResourcesHtmlCache  = webResourcesHtmlCache;
            this.service = service;

            requestedType = (int)type;

            // Disables controls
            ListViewDelegates.SetEnableState(lstWebResources, false);
            CommonDelegates.SetEnableState(btnWebResourcePickerCancel, false);
            CommonDelegates.SetEnableState(btnWebResourcePickerValidate, false);
            CommonDelegates.SetEnableState(btnNewResource, false);

            // Run work
            var worker = new BackgroundWorker();

            worker.DoWork             += worker_DoWork;
            worker.RunWorkerCompleted += worker_RunWorkerCompleted;
            worker.RunWorkerAsync();
        }
예제 #9
0
        void DoWork()
        {
            var filterTerm = txtSearch.Text;
            IEnumerable <Entity> matchingPrivileges = null;

            if (filterTerm.Length != 0)
            {
                matchingPrivileges =
                    privileges.Where(
                        x => x["name"].ToString().ToLower().IndexOf(filterTerm.ToLower(), StringComparison.Ordinal) >= 0);
            }
            else
            {
                matchingPrivileges = privileges;
            }

            var lviList = new List <ListViewItem>();
            var lvgList = new List <ListViewGroup>();

            foreach (var privilege in matchingPrivileges)
            {
                var groupName = string.Empty;
                var group     = (from entity in entities
                                 where entity.Privileges.Any(p => p.PrivilegeId == privilege.Id)
                                 select new { entity.LogicalName, entity.DisplayName.UserLocalizedLabel.Label }).FirstOrDefault();
                var entitySchemaName = (from entity in entities
                                        where entity.Privileges.Any(p => p.Name == privilege["name"].ToString())
                                        select entity.SchemaName).FirstOrDefault();

                if (group == null)
                {
                    if (privilege["name"].ToString().EndsWith("Entity"))
                    {
                        groupName = "Entity";
                    }
                    else if (privilege["name"].ToString().EndsWith("Attribute"))
                    {
                        groupName = "Attribute";
                    }
                    else if (privilege["name"].ToString().EndsWith("Relationship"))
                    {
                        groupName = "Relationship";
                    }
                    else if (privilege["name"].ToString().EndsWith("OptionSet"))
                    {
                        groupName = "OptionSet";
                    }
                    else
                    {
                        groupName = "_Common";
                    }
                }
                else
                {
                    if (group.LogicalName == "customeraddress")
                    {
                        groupName =
                            entities.First(x => x.LogicalName == "account").DisplayName.UserLocalizedLabel.Label;
                    }

                    else if (group.LogicalName == "email" || group.LogicalName == "task" ||
                             group.LogicalName == "letter" || group.LogicalName == "phonecall" ||
                             group.LogicalName == "appointment" || group.LogicalName == "serviceappointment" ||
                             group.LogicalName == "campaignresponse" || group.LogicalName == "fax")
                    {
                        groupName =
                            entities.First(x => x.LogicalName == "activitypointer").DisplayName.UserLocalizedLabel.Label;
                    }

                    else
                    {
                        groupName = group.Label;
                    }
                }

                var lvGroup = lvgList.FirstOrDefault(f => f.Name == groupName);

                if (lvGroup == null)
                {
                    lvgList.Add(new ListViewGroup(groupName, groupName));
                }

                var item = new ListViewItem
                {
                    Text       = privilege["name"].ToString().Remove(0, 3),
                    ImageIndex = 1,
                    Tag        = privilege,
                    Group      =
                        groupName != null
                            ? lvgList.First(f => f.Name == groupName)
                            : lvgList.First(f => f.Name == "_Common")
                };

                if (entitySchemaName != null)
                {
                    item.Text = item.Text.Replace(entitySchemaName, "");
                }

                lviList.Add(item);
            }

            ListViewDelegates.AddGroupsRange(lvPrivileges, lvgList.ToArray());
            ListViewDelegates.AddItemsRange(lvPrivileges, lviList.ToArray());

            ListViewDelegates.SortGroup(lvPrivileges, true);
            ListViewDelegates.Sort(lvPrivileges, true);

            CommonDelegates.SetEnableState(btnAdd, true);
            CommonDelegates.SetEnableState(btnRemove, true);
        }
        public void UpdateFormEventHanders(Entity form, string eventName, List <FormEvent> formEvents)
        {
            WorkAsync(new WorkAsyncInfo
            {
                Message = "Updating Form " + form.GetAttributeValue <string>("name") + "...",
                Work    = (bw, e) =>
                {
                    try
                    {
                        var manager = new FormManager(Service);
                        manager.UpdateFormEventHandlers(form, eventName, formEvents);

                        bw.ReportProgress(0, string.Format("Publishing entity '{0}'...", form.GetAttributeValue <string>("objecttypecode")));
                        new FormManager(Service).PublishEntity(form.GetAttributeValue <string>("objecttypecode"));

                        ListViewDelegates.AddItem(lvLogs,
                                                  new ListViewItem
                        {
                            Text     = form.GetAttributeValue <string>("objecttypecode"),
                            SubItems =
                            {
                                new ListViewItem.ListViewSubItem {
                                    Text = form.GetAttributeValue <string>("name")
                                },
                                new ListViewItem.ListViewSubItem {
                                    Text = eventName
                                },
                                new ListViewItem.ListViewSubItem {
                                    Text = "Updated!"
                                }
                            },
                            ForeColor = Color.Green
                        });
                    }
                    catch (Exception error)
                    {
                        ListViewDelegates.AddItem(lvLogs,
                                                  new ListViewItem
                        {
                            Text     = form.GetAttributeValue <string>("objecttypecode"),
                            SubItems =
                            {
                                new ListViewItem.ListViewSubItem {
                                    Text = form.GetAttributeValue <string>("name")
                                },
                                new ListViewItem.ListViewSubItem {
                                    Text = eventName
                                },
                                new ListViewItem.ListViewSubItem {
                                    Text = error.Message
                                }
                            },
                            ForeColor = Color.Red
                        });
                    }
                },
                PostWorkCallBack = e =>
                {
                    if (e.Error != null)
                    {
                        MessageBox.Show(ParentForm, "An error occured:" + e.Error.Message, "Error", MessageBoxButtons.OK,
                                        MessageBoxIcon.Error);
                    }
                },
                ProgressChanged = e => { SetWorkingMessage(e.UserState.ToString()); }
            });
        }
        private void tsbRemoveCheckedScripts_Click(object sender, EventArgs e)
        {
            lvLogs.Items.Clear();
            var scriptsParam = crmScriptsTreeView1.GetSelectedScripts();
            var formsParam   = crmForms1.GetSelectedForms();

            if (scriptsParam.Count == 0)
            {
                MessageBox.Show(ParentForm, "Please select at least one script", "Warning", MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);

                return;
            }

            if (formsParam.Count == 0)
            {
                MessageBox.Show(ParentForm, "Please select at least one form", "Warning", MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);

                return;
            }

            WorkAsync(new WorkAsyncInfo
            {
                Message       = "Updating forms...",
                AsyncArgument = new[] { scriptsParam, formsParam },
                Work          = (bw, evt) =>
                {
                    var argArray = (List <Entity>[])evt.Argument;
                    var scripts  = argArray[0];
                    var forms    = argArray[1];

                    var fManager = new FormManager(Service);

                    bool atLeastOneSuccess        = false;
                    bool atLeastOneSuccessForForm = false;

                    foreach (var form in forms)
                    {
                        bw.ReportProgress(0, string.Format("Updating form '{0}' ({1})...", form.GetAttributeValue <string>("name"), form.GetAttributeValue <string>("objecttypecode")));

                        foreach (var script in scripts)
                        {
                            try
                            {
                                if (fManager.RemoveLibrary(form, script.GetAttributeValue <string>("name"), ParentForm))
                                {
                                    atLeastOneSuccessForForm = true;

                                    ListViewDelegates.AddItem(lvLogs,
                                                              new ListViewItem
                                    {
                                        Text     = form.GetAttributeValue <string>("objecttypecode"),
                                        SubItems =
                                        {
                                            new ListViewItem.ListViewSubItem {
                                                Text = form.GetAttributeValue <string>("name")
                                            },
                                            new ListViewItem.ListViewSubItem {
                                                Text = script.GetAttributeValue <string>("name")
                                            },
                                            new ListViewItem.ListViewSubItem {
                                                Text = "Removed!"
                                            }
                                        },
                                        ForeColor = Color.Green
                                    });
                                }
                                else
                                {
                                    ListViewDelegates.AddItem(lvLogs,
                                                              new ListViewItem
                                    {
                                        Text     = form.GetAttributeValue <string>("objecttypecode"),
                                        SubItems =
                                        {
                                            new ListViewItem.ListViewSubItem {
                                                Text = form.GetAttributeValue <string>("name")
                                            },
                                            new ListViewItem.ListViewSubItem {
                                                Text = script.GetAttributeValue <string>("name")
                                            },
                                            new ListViewItem.ListViewSubItem {
                                                Text = "Canceled!"
                                            }
                                        },
                                        ForeColor = Color.DarkOrange
                                    });
                                }
                            }
                            catch (Exception error)
                            {
                                ListViewDelegates.AddItem(lvLogs,
                                                          new ListViewItem
                                {
                                    Text     = form.GetAttributeValue <string>("objecttypecode"),
                                    SubItems =
                                    {
                                        new ListViewItem.ListViewSubItem {
                                            Text = form.GetAttributeValue <string>("name")
                                        },
                                        new ListViewItem.ListViewSubItem {
                                            Text = script.GetAttributeValue <string>("name")
                                        },
                                        new ListViewItem.ListViewSubItem {
                                            Text = error.Message
                                        }
                                    },
                                    ForeColor = Color.Red
                                });
                            }
                        }

                        if (atLeastOneSuccessForForm)
                        {
                            fManager.UpdateForm(form);
                            atLeastOneSuccess = true;
                        }
                    }

                    if (!atLeastOneSuccess)
                    {
                        return;
                    }

                    foreach (var entitiesToPublish in forms.Select(f => f.GetAttributeValue <string>("objecttypecode")).Distinct())
                    {
                        bw.ReportProgress(0, string.Format("Publishing entity '{0}'...", entitiesToPublish));
                        fManager.PublishEntity(entitiesToPublish);
                    }
                },
                PostWorkCallBack = evt =>
                {
                    if (evt.Error != null)
                    {
                        MessageBox.Show(ParentForm, "An error occured:" + evt.Error.Message, "Error", MessageBoxButtons.OK,
                                        MessageBoxIcon.Error);
                    }
                },
                ProgressChanged = evt => { SetWorkingMessage(evt.UserState.ToString()); }
            });
        }
        private void tsbAddCheckedScripts_Click(object sender, EventArgs e)
        {
            lvLogs.Items.Clear();
            var scripts = crmScriptsTreeView1.GetSelectedScripts();
            var forms   = crmForms1.GetSelectedForms();

            if (scripts.Count == 0)
            {
                MessageBox.Show(ParentForm, "Please select at least one script", "Warning", MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);

                return;
            }

            if (forms.Count == 0)
            {
                MessageBox.Show(ParentForm, "Please select at least one form", "Warning", MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);

                return;
            }

            var sod = new ScriptsOrderDialog(scripts, false)
            {
                StartPosition = FormStartPosition.CenterParent
            };

            if (sod.ShowDialog(ParentForm) == DialogResult.Cancel)
            {
                return;
            }

            WorkAsync(new WorkAsyncInfo
            {
                Message       = "Updating forms...",
                AsyncArgument = new object[] { sod.Scripts, sod.AddFirst, forms },
                Work          = (bw, evt) =>
                {
                    var scriptsArg   = (List <Entity>)((object[])evt.Argument)[0];
                    var addFirstArg  = (bool)((object[])evt.Argument)[1];
                    var formsArg     = (List <Entity>)((object[])evt.Argument)[2];
                    var formsUpdated = new HashSet <Entity>();

                    if (addFirstArg)
                    {
                        scripts.Reverse();
                    }

                    var fManager = new FormManager(Service);

                    bool atLeastOneSuccess = false;

                    foreach (var form in formsArg)
                    {
                        bw.ReportProgress(0, string.Format("Updating form '{0}' ({1})...", form.GetAttributeValue <string>("name"), form.GetAttributeValue <string>("objecttypecode")));

                        bool atLeastOneScriptSucess = false;

                        foreach (var script in scriptsArg)
                        {
                            try
                            {
                                fManager.AddLibrary(form, script.GetAttributeValue <string>("name"), addFirstArg);

                                atLeastOneScriptSucess = true;
                                atLeastOneSuccess      = true;
                                if (!formsUpdated.Contains(form))
                                {
                                    formsUpdated.Add(form);
                                }

                                ListViewDelegates.AddItem(lvLogs,
                                                          new ListViewItem
                                {
                                    Text     = form.GetAttributeValue <string>("objecttypecode"),
                                    SubItems =
                                    {
                                        new ListViewItem.ListViewSubItem {
                                            Text = form.GetAttributeValue <string>("name")
                                        },
                                        new ListViewItem.ListViewSubItem {
                                            Text = script.GetAttributeValue <string>("name")
                                        },
                                        new ListViewItem.ListViewSubItem {
                                            Text = "Added!"
                                        }
                                    },
                                    ForeColor = Color.Green
                                });
                            }
                            catch (Exception error)
                            {
                                ListViewDelegates.AddItem(lvLogs,
                                                          new ListViewItem
                                {
                                    Text     = form.GetAttributeValue <string>("objecttypecode"),
                                    SubItems =
                                    {
                                        new ListViewItem.ListViewSubItem {
                                            Text = form.GetAttributeValue <string>("name")
                                        },
                                        new ListViewItem.ListViewSubItem {
                                            Text = script.GetAttributeValue <string>("name")
                                        },
                                        new ListViewItem.ListViewSubItem {
                                            Text = error.Message
                                        }
                                    },
                                    ForeColor = Color.Red
                                });
                            }
                        }
                        if (atLeastOneScriptSucess)
                        {
                            fManager.UpdateForm(form);
                        }
                    }

                    if (!atLeastOneSuccess)
                    {
                        return;
                    }

                    foreach (var entityToPublish in formsUpdated.Select(f => f.GetAttributeValue <string>("objecttypecode")).Distinct())
                    {
                        bw.ReportProgress(0, string.Format("Publishing entity '{0}'...", entityToPublish));
                        fManager.PublishEntity(entityToPublish);
                    }
                },
                PostWorkCallBack = evt =>
                {
                    if (evt.Error != null)
                    {
                        MessageBox.Show(ParentForm, "An error occured:" + evt.Error.Message, "Error", MessageBoxButtons.OK,
                                        MessageBoxIcon.Error);
                    }
                },
                ProgressChanged = evt => { SetWorkingMessage(evt.UserState.ToString()); }
            });
        }
        public void UpdateFormLibraryOrder(Entity form, XmlNode formLibrariesNode)
        {
            WorkAsync(new WorkAsyncInfo
            {
                Message       = "Reordering Libraries For Form " + form.GetAttributeValue <string>("name") + "...",
                AsyncArgument = new object[] { form, formLibrariesNode },
                Work          = (bw, e) =>
                {
                    var selectedForm = (Entity)((object[])e.Argument)[0];
                    try
                    {
                        var node = (XmlNode)((object[])e.Argument)[1];
                        selectedForm["formxml"] = node.OwnerDocument.OuterXml;
                        Service.Update(selectedForm);

                        bw.ReportProgress(0, string.Format("Publishing entity '{0}'...", selectedForm.GetAttributeValue <string>("objecttypecode")));
                        new FormManager(Service).PublishEntity(selectedForm.GetAttributeValue <string>("objecttypecode"));

                        ListViewDelegates.AddItem(lvLogs,
                                                  new ListViewItem
                        {
                            Text     = selectedForm.GetAttributeValue <string>("objecttypecode"),
                            SubItems =
                            {
                                new ListViewItem.ListViewSubItem {
                                    Text = selectedForm.GetAttributeValue <string>("name")
                                },
                                new ListViewItem.ListViewSubItem {
                                    Text = "Reordering Form Libraries"
                                },
                                new ListViewItem.ListViewSubItem {
                                    Text = "Updated!"
                                }
                            },
                            ForeColor = Color.Green
                        });
                    }
                    catch (Exception error)
                    {
                        ListViewDelegates.AddItem(lvLogs,
                                                  new ListViewItem
                        {
                            Text     = selectedForm.GetAttributeValue <string>("objecttypecode"),
                            SubItems =
                            {
                                new ListViewItem.ListViewSubItem {
                                    Text = selectedForm.GetAttributeValue <string>("name")
                                },
                                new ListViewItem.ListViewSubItem {
                                    Text = "Reordering Form Libraries"
                                },
                                new ListViewItem.ListViewSubItem {
                                    Text = error.Message
                                }
                            },
                            ForeColor = Color.Red
                        });
                    }
                },
                PostWorkCallBack = e =>
                {
                    if (e.Error != null)
                    {
                        MessageBox.Show(ParentForm, "An error occured:" + e.Error.Message, "Error", MessageBoxButtons.OK,
                                        MessageBoxIcon.Error);
                    }
                },
                ProgressChanged = e => { SetWorkingMessage(e.UserState.ToString()); }
            });
        }
        void DoWork()
        {
            var filterTerm = textBox1.Text;
            IEnumerable <Entity> privileges = rManager.Privileges;

            if (filterTerm.Length != 0)
            {
                privileges =
                    rManager.Privileges.Where(
                        x => x["name"].ToString().ToLower().IndexOf(filterTerm.ToLower(), StringComparison.Ordinal) >= 0);
            }

            var items = new List <ListViewItem>();

            foreach (var privilege in privileges)
            {
                var groupName = string.Empty;
                var group     = (from entity in entities
                                 where entity.Privileges.Any(p => p.PrivilegeId == privilege.Id)
                                 select new{ entity.LogicalName, entity.DisplayName.UserLocalizedLabel.Label }).FirstOrDefault();
                var entitySchemaName = (from entity in entities
                                        where entity.Privileges.Any(p => p.Name == privilege["name"].ToString())
                                        select entity.SchemaName).FirstOrDefault();

                if (group == null)
                {
                    if (privilege["name"].ToString().EndsWith("Entity"))
                    {
                        groupName = "Entity";
                    }
                    else if (privilege["name"].ToString().EndsWith("Attribute"))
                    {
                        groupName = "Attribute";
                    }
                    else if (privilege["name"].ToString().EndsWith("Relationship"))
                    {
                        groupName = "Relationship";
                    }
                    else if (privilege["name"].ToString().EndsWith("OptionSet"))
                    {
                        groupName = "OptionSet";
                    }
                    else
                    {
                        groupName = "_Common";
                    }
                }
                else
                {
                    if (group.LogicalName == "customeraddress")
                    {
                        groupName =
                            entities.First(x => x.LogicalName == "account").DisplayName.UserLocalizedLabel.Label;
                    }

                    else if (group.LogicalName == "email" || group.LogicalName == "task" ||
                             group.LogicalName == "letter" || group.LogicalName == "phonecall" ||
                             group.LogicalName == "appointment" || group.LogicalName == "serviceappointment" ||
                             group.LogicalName == "campaignresponse" || group.LogicalName == "fax")
                    {
                        groupName =
                            entities.First(x => x.LogicalName == "activitypointer").DisplayName.UserLocalizedLabel.Label;
                    }

                    else
                    {
                        groupName = group.Label;
                    }
                }

                if (ListViewDelegates.GetGroup(lvPrivileges, groupName) == null)
                {
                    ListViewDelegates.AddGroup(lvPrivileges, groupName);
                }

                var item = new ListViewItem
                {
                    Text  = privilege["name"].ToString().Remove(0, 3),
                    Tag   = privilege,
                    Group =
                        groupName != null
                            ? ListViewDelegates.GetGroup(lvPrivileges, groupName)
                            : ListViewDelegates.GetGroup(lvPrivileges, "_Common")
                };

                if (entitySchemaName != null)
                {
                    item.Text = item.Text.Replace(entitySchemaName, "");
                }

                items.Add(item);
            }

            ListViewDelegates.AddRange(lvPrivileges, items);
            ListViewDelegates.SortGroup(lvPrivileges, true);
            ListViewDelegates.Sort(lvPrivileges, true);
        }
예제 #15
0
        private void DoWork()
        {
            var filterTerm = txtSearch.Text;
            IEnumerable <Entity> matchingPrivileges;

            if (filterTerm.Length != 0)
            {
                matchingPrivileges =
                    privileges.Where(
                        x => x["name"].ToString().ToLower().IndexOf(filterTerm.ToLower(), StringComparison.Ordinal) >= 0 ||
                        entities.Any(e => e.DisplayName?.UserLocalizedLabel?.Label.ToLower().IndexOf(filterTerm.ToLower()) >= 0 && e.Privileges.Any(p => p.PrivilegeId == x.Id)));
            }
            else
            {
                matchingPrivileges = privileges;
            }

            var lviList = new List <ListViewItem>();
            var lvgList = new List <ListViewGroup>();

            foreach (var privilege in matchingPrivileges)
            {
                string entitySchemaName      = null;
                var    groupName             = string.Empty;
                var    entitiesWithPrivilege = (from emd in entities
                                                where emd.Privileges.Any(p => p.PrivilegeId == privilege.Id)
                                                select emd).ToList();
                EntityMetadata entity;
                if (entitiesWithPrivilege.Count > 0 && entitiesWithPrivilege.Any(g => g.IsActivity.Value))
                {
                    entity           = entitiesWithPrivilege.FirstOrDefault(g => g.LogicalName == "activitypointer");
                    entitySchemaName = "Activity";
                }
                else
                {
                    entity = entitiesWithPrivilege.FirstOrDefault();
                    if (entity != null)
                    {
                        entitySchemaName = entity.SchemaName;
                    }
                }

                if (entity == null)
                {
                    if (privilege["name"].ToString().EndsWith("Entity"))
                    {
                        groupName = "Entity";
                    }
                    else if (privilege["name"].ToString().EndsWith("Attribute"))
                    {
                        groupName = "Attribute";
                    }
                    else if (privilege["name"].ToString().EndsWith("Relationship"))
                    {
                        groupName = "Relationship";
                    }
                    else if (privilege["name"].ToString().EndsWith("OptionSet"))
                    {
                        groupName = "OptionSet";
                    }
                    else
                    {
                        groupName = "_Common";
                    }
                }
                else
                {
                    if (entity.LogicalName == "customeraddress")
                    {
                        groupName =
                            entities.First(x => x.LogicalName == "account").DisplayName.UserLocalizedLabel.Label;
                    }
                    else if (entity.IsActivity.Value || entity.LogicalName == "bulkoperation")
                    {
                        groupName =
                            entities.First(x => x.LogicalName == "activitypointer").DisplayName.UserLocalizedLabel.Label;
                    }
                    else
                    {
                        groupName = entity.DisplayName.UserLocalizedLabel.Label;
                    }
                }

                var lvGroup = lvgList.FirstOrDefault(f => f.Name == groupName);

                if (lvGroup == null)
                {
                    lvgList.Add(new ListViewGroup(groupName, groupName));
                }

                var item = new ListViewItem
                {
                    Text       = privilege["name"].ToString().Remove(0, 3),
                    ImageIndex = 1,
                    Tag        = privilege,
                    Group      =
                        groupName != null
                            ? lvgList.First(f => f.Name == groupName)
                            : lvgList.First(f => f.Name == "_Common")
                };

                if (entitySchemaName != null)
                {
                    item.Text = item.Text.Replace(entitySchemaName, "");
                }

                lviList.Add(item);
            }

            ListViewDelegates.AddGroupsRange(lvPrivileges, lvgList.ToArray());
            ListViewDelegates.AddItemsRange(lvPrivileges, lviList.ToArray());

            ListViewDelegates.SortGroup(lvPrivileges, true);
            ListViewDelegates.Sort(lvPrivileges, true);

            CommonDelegates.SetEnableState(btnAdd, true);
            CommonDelegates.SetEnableState(btnRemove, true);
        }
예제 #16
0
        private void LvSourceViewsSelectedIndexChanged(object sender, System.EventArgs e)
        {
            lvSourceViewLayoutPreview.Columns.Clear();

            if (lvSourceViews.SelectedItems.Count > 0)
            {
                lvSourceViews.SelectedIndexChanged -= LvSourceViewsSelectedIndexChanged;
                lvSourceViewLayoutPreview.Items.Clear();
                lvSourceViews.Enabled = false;

                WorkAsync("Loading view layout...",
                          evt =>
                {
                    Entity currentSelectedView = (Entity)evt.Argument;
                    string layoutXml           = currentSelectedView["layoutxml"].ToString();
                    string fetchXml            = currentSelectedView.Contains("fetchxml")
                                              ? currentSelectedView["fetchxml"].ToString()
                                              : string.Empty;
                    string currentEntityDisplayName = ListViewDelegates.GetSelectedItems(lvEntities)[0].Text;

                    EntityMetadata currentEmd = entitiesCache.Find(
                        emd => emd.DisplayName.UserLocalizedLabel.Label == currentEntityDisplayName);

                    XmlDocument layoutDoc = new XmlDocument();
                    layoutDoc.LoadXml(layoutXml);

                    EntityMetadata emdWithItems = MetadataHelper.RetrieveEntity(currentEmd.LogicalName, Service);

                    var headers = new List <ColumnHeader>();

                    var item = new ListViewItem();

                    foreach (XmlNode columnNode in layoutDoc.SelectNodes("grid/row/cell"))
                    {
                        ColumnHeader header = new ColumnHeader();

                        header.Width = int.Parse(columnNode.Attributes["width"].Value);
                        header.Text  = MetadataHelper.RetrieveAttributeDisplayName(emdWithItems,
                                                                                   columnNode.Attributes["name"].Value,
                                                                                   fetchXml, Service);
                        headers.Add(header);

                        if (string.IsNullOrEmpty(item.Text))    //item.SubItems.Add("preview");
                        {
                            item.Text = columnNode.Attributes["width"].Value + "px";
                        }
                        else
                        {
                            item.SubItems.Add(columnNode.Attributes["width"].Value + "px");
                        }
                    }

                    evt.Result = new object[] { headers, item };
                },
                          evt =>
                {
                    if (evt.Error != null)
                    {
                        MessageBox.Show(ParentForm, "Error while displaying view: " + evt.Error.Message, "Error",
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        var args = (object[])evt.Result;

                        lvSourceViewLayoutPreview.Columns.AddRange(((List <ColumnHeader>)args[0]).ToArray());
                        lvSourceViewLayoutPreview.Items.Add((ListViewItem)args[1]);
                        lvSourceViewLayoutPreview.Enabled = true;
                    }

                    lvSourceViews.SelectedIndexChanged += LvSourceViewsSelectedIndexChanged;
                    lvSourceViews.Enabled = true;
                },
                          lvSourceViews.SelectedItems[0].Tag);
            }
        }
예제 #17
0
        private void BwFillViewsDoWork(object sender, DoWorkEventArgs e)
        {
            string entityLogicalName = e.Argument.ToString();

            List <Entity> viewsList = ViewHelper.RetrieveViews(entityLogicalName, entitiesCache, Service);

            viewsList.AddRange(ViewHelper.RetrieveUserViews(entityLogicalName, entitiesCache, Service));

            foreach (Entity view in viewsList)
            {
                bool display = true;

                var item = new ListViewItem(view["name"].ToString());
                item.Tag = view;

                #region Gestion de l'image associée à la vue

                switch ((int)view["querytype"])
                {
                case ViewHelper.VIEW_BASIC:
                {
                    if (view.LogicalName == "savedquery")
                    {
                        if ((bool)view["isdefault"])
                        {
                            item.SubItems.Add("Default public view");
                            item.ImageIndex = 3;
                        }
                        else

                        {
                            item.SubItems.Add("Public view");
                            item.ImageIndex = 0;
                        }
                    }
                    else
                    {
                        item.SubItems.Add("User view");
                        item.ImageIndex = 6;
                    }
                }
                break;

                case ViewHelper.VIEW_ADVANCEDFIND:
                {
                    item.SubItems.Add("Advanced find view");
                    item.ImageIndex = 1;
                }
                break;

                case ViewHelper.VIEW_ASSOCIATED:
                {
                    item.SubItems.Add("Associated view");
                    item.ImageIndex = 2;
                }
                break;

                case ViewHelper.VIEW_QUICKFIND:
                {
                    item.SubItems.Add("QuickFind view");
                    item.ImageIndex = 5;
                }
                break;

                case ViewHelper.VIEW_SEARCH:
                {
                    item.SubItems.Add("Lookup view");
                    item.ImageIndex = 4;
                }
                break;

                default:
                {
                    //item.SubItems.Add(view["name"].ToString());
                    display = false;
                }
                break;
                }

                #endregion

                if (display)
                {
                    // Add view to each list of views (source and target)
                    ListViewItem clonedItem = (ListViewItem)item.Clone();
                    ListViewDelegates.AddItem(lvSourceViews, item);

                    if (view.Contains("iscustomizable") && ((BooleanManagedProperty)view["iscustomizable"]).Value == false &&
                        view.Contains("ismanaged") && (bool)view["ismanaged"])
                    {
                        clonedItem.ForeColor   = Color.Gray;
                        clonedItem.ToolTipText = "This managed view has not been defined as customizable";
                    }

                    ListViewDelegates.AddItem(lvTargetViews, clonedItem);
                }
            }
        }
        private void DoWork()
        {
            var filterTerm = textBox1.Text;
            IEnumerable <Entity> privileges = rManager.Privileges;

            if (filterTerm.Length != 0)
            {
                privileges =
                    rManager.Privileges.Where(
                        x => x["name"].ToString().ToLower().IndexOf(filterTerm.ToLower(), StringComparison.Ordinal) >= 0);
            }

            var items = new List <ListViewItem>();

            foreach (var privilege in privileges)
            {
                string entitySchemaName      = null;
                var    groupName             = string.Empty;
                var    entitiesWithPrivilege = (from emd in entities
                                                where emd.Privileges.Any(p => p.PrivilegeId == privilege.Id)
                                                select emd).ToList();
                EntityMetadata entity;
                if (entitiesWithPrivilege.Count > 0 && entitiesWithPrivilege.Any(g => g.IsActivity.Value))
                {
                    entity           = entitiesWithPrivilege.FirstOrDefault(g => g.LogicalName == "activitypointer");
                    entitySchemaName = "Activity";
                }
                else
                {
                    entity = entitiesWithPrivilege.FirstOrDefault();
                    if (entity != null)
                    {
                        entitySchemaName = entity.SchemaName;
                    }
                }

                if (entity == null)
                {
                    if (privilege["name"].ToString().EndsWith("Entity"))
                    {
                        groupName = "Entity";
                    }
                    else if (privilege["name"].ToString().EndsWith("Attribute"))
                    {
                        groupName = "Attribute";
                    }
                    else if (privilege["name"].ToString().EndsWith("Relationship"))
                    {
                        groupName = "Relationship";
                    }
                    else if (privilege["name"].ToString().EndsWith("OptionSet"))
                    {
                        groupName = "OptionSet";
                    }
                    else
                    {
                        groupName = "_Common";
                    }
                }
                else
                {
                    if (entity.LogicalName == "customeraddress")
                    {
                        groupName =
                            entities.First(x => x.LogicalName == "account").DisplayName.UserLocalizedLabel.Label;
                    }
                    else if (entity.IsActivity.Value || entity.LogicalName == "bulkoperation")
                    {
                        groupName =
                            entities.First(x => x.LogicalName == "activitypointer").DisplayName.UserLocalizedLabel.Label;
                    }
                    else
                    {
                        groupName = entity.DisplayName.UserLocalizedLabel.Label;
                    }
                }

                if (ListViewDelegates.GetGroup(lvPrivileges, groupName) == null)
                {
                    ListViewDelegates.AddGroup(lvPrivileges, groupName);
                }

                var item = new ListViewItem
                {
                    Text  = privilege["name"].ToString().Remove(0, 3),
                    Tag   = privilege,
                    Group =
                        groupName != null
                            ? ListViewDelegates.GetGroup(lvPrivileges, groupName)
                            : ListViewDelegates.GetGroup(lvPrivileges, "_Common")
                };

                if (entitySchemaName != null)
                {
                    item.Text = item.Text.Replace(entitySchemaName, "");
                }


                items.Add(item);
            }

            ListViewDelegates.AddRange(lvPrivileges, items);
            ListViewDelegates.SortGroup(lvPrivileges, true);
            ListViewDelegates.Sort(lvPrivileges, true);
        }
예제 #19
0
        void BWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            foreach (ListViewItem item in ListViewDelegates.GetItems(lvFiles))
            {
                var fi        = (FileInfo)item.Tag;
                var extension = fi.Extension.Remove(0, 1).ToLower();

                var webR = new Entity("webresource");
                webR["displayname"]     = fi.Name;
                webR["webresourcetype"] = extension == "png"
                                              ? new OptionSetValue(5)
                                              : extension == "jpg" || extension == "jpeg"
                                                    ? new OptionSetValue(6)
                                                    : new OptionSetValue(7);

                webR["name"] = (txtPrefixToUse.Text + fi.Name).Replace(" ", "");

                var fs         = new FileStream(fi.FullName, FileMode.Open, FileAccess.Read);
                var binaryData = new byte[fs.Length];
                fs.Read(binaryData, 0, (int)fs.Length);
                fs.Close();
                webR["content"] = Convert.ToBase64String(binaryData, 0, binaryData.Length);

                bool processed = false;
                if (CheckBoxDelegates.IsChecked(chkOverwriteExistingImages))
                {
                    var existingWr = _service.RetrieveMultiple(new QueryByAttribute
                    {
                        EntityName = "webresource",
                        Attributes = { "name" },
                        Values     = { webR["name"] }
                    }).Entities.ToList().FirstOrDefault();

                    if (existingWr != null)
                    {
                        webR.Id = existingWr.Id;
                        _service.Update(webR);
                        processed = true;
                    }
                }

                if (!processed)
                {
                    Guid wrId = _service.Create(webR);
                    webR.Id = wrId;
                }

                if (!CheckBoxDelegates.IsChecked(chkAddToDefaultSolution))
                {
                    var request = new AddSolutionComponentRequest
                    {
                        ComponentType      = 61,
                        SolutionUniqueName = cbbSolutions.SelectedItem.ToString(),
                        ComponentId        = webR.Id
                    };

                    _service.Execute(request);
                }

                WebResourcesCreated.Add(webR);
            }
        }
예제 #20
0
        private void BwDisplayViewDoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                if (ListViewDelegates.GetSelectedItems(lvSourceViews).Count() > 1)
                {
                    ColumnHeader header = new ColumnHeader();
                    header.Width = 380;
                    header.Text  = "Layout preview cannot be displayed when multiple views are selected.";
                    ListViewDelegates.AddColumn(lvSourceViewLayoutPreview, header);
                }
                else
                {
                    // Gets current view data
                    Entity currentSelectedView = (Entity)ListViewDelegates.GetSelectedItems(lvSourceViews)[0].Tag;
                    string layoutXml           = currentSelectedView["layoutxml"].ToString();
                    string fetchXml            = currentSelectedView.Contains("fetchxml")
                                          ? currentSelectedView["fetchxml"].ToString()
                                          : string.Empty;
                    string currentEntityDisplayName = ListViewDelegates.GetSelectedItems(lvEntities)[0].Text;

                    EntityMetadata currentEmd =
                        entitiesCache.Find(
                            delegate(EntityMetadata emd)
                            { return(emd.DisplayName.UserLocalizedLabel.Label == currentEntityDisplayName); });

                    XmlDocument layoutDoc = new XmlDocument();
                    layoutDoc.LoadXml(layoutXml);

                    EntityMetadata emdWithItems = MetadataHelper.RetrieveEntity(currentEmd.LogicalName, service);

                    ListViewItem item = new ListViewItem();

                    foreach (XmlNode columnNode in layoutDoc.SelectNodes("grid/row/cell"))
                    {
                        ColumnHeader header = new ColumnHeader();

                        header.Text = MetadataHelper.RetrieveAttributeDisplayName(emdWithItems,
                                                                                  columnNode.Attributes["name"].Value,
                                                                                  fetchXml, service);

                        int columnWidth = columnNode.Attributes["width"] == null ? 0 : int.Parse(columnNode.Attributes["width"].Value);

                        header.Width = columnWidth;

                        ListViewDelegates.AddColumn(lvSourceViewLayoutPreview, header);

                        if (string.IsNullOrEmpty(item.Text))
                        {
                            item.Text = columnWidth == 0 ? "(undefined)": (columnWidth + "px");
                        }
                        else
                        {
                            item.SubItems.Add(columnWidth == 0 ? "(undefined)": (columnWidth + "px"));
                        }
                    }

                    ListViewDelegates.AddItem(lvSourceViewLayoutPreview, item);

                    GroupBoxDelegates.SetEnableState(gbSourceViewLayout, true);
                }
            }
            catch (Exception error)
            {
                CommonDelegates.DisplayMessageBox(ParentForm, "Error while displaying view: " + error.Message, "Error",
                                                  MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }