Ejemplo n.º 1
0
        private void ResetUsersFiltersToDefault()
        {
            crmUserList1.Service = Service;
            crmUserList1.ConnectionDetail = ConnectionDetail;

            var selectedUsers = crmUserList1.GetSelectedUsers();

            if (selectedUsers.Count == 0)
            {
                return;
            }

            if (DialogResult.Yes ==
                MessageBox.Show(this,
                "This action will replace all synchronization rules for the selected user(s) with the organization’s default local data rules. Any user-created rules will be removed.\r\n\r\n(Note: Although there can be multiple filters per entity listed in the Default Local Data Rules, CRM only allows one rule per entity to have the “Is Default” attribute set to “True” - Only Default Local Data Rules where the “Is Default” attribute is “True” will be copied to the selected user.)\r\n\r\nDo you want to continue?",
                    "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
            {
                tabCtrl.Enabled = false;

                WorkAsync("Reseting users local data rules...",
                   (bw, e) =>
                   {
                       var rm = new RuleManager("userquery", Service, ConnectionDetail);
                       rm.ResetUsersRulesFromDefault((List<Entity>)e.Argument, bw);
                   },
                   e =>
                   {
                       if (e.Error != null)
                       {
                           MessageBox.Show(this, "Error while updating users Local Data Rules: " + e.Error.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                       }

                       tabCtrl.Enabled = true;
                   },
                   e => SetWorkingMessage(e.UserState.ToString()),
                   selectedUsers);
            }
        }
Ejemplo n.º 2
0
        private void bwReplaceFilters_DoWork(object sender, DoWorkEventArgs e)
        {
            var worker = (BackgroundWorker)sender;
            var sourceUser = (Entity)((object[])e.Argument)[0];
            var targetUsers = (List<Entity>)((object[])e.Argument)[1];

            var rManager = new RuleManager("userquery", service, connectionDetail);
            rManager.AddRulesFromUser(sourceUser, targetUsers, worker);
        }
Ejemplo n.º 3
0
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            var arguments = (object[]) e.Argument;
            var rm = new RuleManager(entityName, service);

            if (DisplaySystemView)
            {
                var query = new QueryExpression("savedquery")
                {
                    ColumnSet = new ColumnSet(true),
                    Criteria = new FilterExpression
                    {
                        Conditions =
                        {
                            new ConditionExpression("querytype", ConditionOperator.Equal, 0),
                            new ConditionExpression("fetchxml", ConditionOperator.NotNull)
                        }
                    }
                };

                if (arguments.Length > 1 && arguments[1] != null)
                    query.Criteria.AddCondition("returnedtypecode", ConditionOperator.Equal, arguments[1].ToString());

                e.Result = service.RetrieveMultiple(query);
            }
            else
            {
                string expectedReturnTypeCode = arguments.Length > 1 && arguments[1] != null ? arguments[1].ToString() : string.Empty;

                if (DisplaySystemRules)
                {
                    e.Result = rm.GetRules(new[] { 16, 256 }, expectedReturnedType: expectedReturnTypeCode,  worker: (BackgroundWorker)sender);
                }
                else if (DisplayRulesTemplate)
                {
                    e.Result = rm.GetRules(new[] { 131072, 8192 }, expectedReturnedType: expectedReturnTypeCode, worker: (BackgroundWorker)sender);
                }
                else
                {
                    e.Result = rm.GetRules(new[] { 16, 256 }, (List<Entity>)arguments[0], worker: (BackgroundWorker)sender);
                }
            }
        }
Ejemplo n.º 4
0
        void bwUpdateRule_DoWork(object sender, DoWorkEventArgs e)
        {
            e.Result = 0;

            var rule = (Entity)((object[])e.Argument)[0];
            var view = (Entity)((object[])e.Argument)[1];
            var isSystem = (bool)((object[])e.Argument)[2];

            var rm = new RuleManager("savedquery", service);
            rm.UpdateRuleFromSystemView(view, rule, (BackgroundWorker)sender);

            e.Result = 1;

            if (!isSystem)
            {
                ApplyTemplateToUsers(
                    new List<Guid> {rule.Id},
                    "Do you want to apply this new template to some users?",
                    rm,
                    (BackgroundWorker) sender);
            }
        }
Ejemplo n.º 5
0
        void bwEnable_DoWork(object sender, DoWorkEventArgs e)
        {
            var rm = new RuleManager(entityName, service);

            var activatedItems = new List<ListViewItem>();

            foreach (ListViewItem item in (ListView.SelectedListViewItemCollection) e.Argument)
            {
                var rule = (Entity) item.Tag;

                rm.EnableRule(rule.Id);

                activatedItems.Add(item);
            }

            e.Result = activatedItems;
        }
Ejemplo n.º 6
0
        private void bwCreateFilterFromView_DoWork(object sender, DoWorkEventArgs e)
        {
            var argument = (object[]) e.Argument;
            var worker = (BackgroundWorker) sender;
            var items = (ListView.SelectedListViewItemCollection)argument[0];
            var rm = new RuleManager("savedquery", service);

            var views = (from ListViewItem item in items select (Entity) item.Tag).ToList();

            var rulesIds = rm.CreateRuleFromSystemView(views, (int)argument[1]);

            e.Result = 1;

            if (!(bool) argument[2])
            {
                ApplyTemplateToUsers(rulesIds, "Do you want to apply this new template to some users?", rm, worker);
            }
        }
Ejemplo n.º 7
0
        void bwApplyFiltersToUsers_DoWork(object sender, DoWorkEventArgs e)
        {
            var bw = (BackgroundWorker) sender;
            var rm = new RuleManager("savedquery", service);
            var templates = ((EntityReferenceCollection) ((object[]) e.Argument)[0]);
            var users = (List<Entity>) ((object[]) e.Argument)[1];
            if (users == null)
            {
                rm.ApplyRuleToActiveUsers(templates);
            }
            else
            {
                foreach (var user in users)
                {
                    bw.ReportProgress(0,
                        string.Format("Applying filter(s) for user {0}...", user.GetAttributeValue<string>("fullname")));

                    rm.ApplyRulesToUser(templates, user.Id);
                }
            }
        }
Ejemplo n.º 8
0
        private void ApplyTemplateToUsers(List<Guid> rulesIds, string question, RuleManager rm, BackgroundWorker worker)
        {
            worker.ReportProgress(0, "Waiting for input...");

            if (
               MessageBox.Show(this, question, "Question",
                   MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                var usDialog = new UserSelectionDialog(service);
                if (usDialog.ShowDialog() == DialogResult.OK)
                {
                    foreach (var user in usDialog.SelectedUsers)
                    {
                        worker.ReportProgress(0, string.Format("Applying rule(s) to user(s) '{0}'", user.GetAttributeValue<string>("fullname")));

                        var erc = new EntityReferenceCollection();
                        foreach (var ruleId in rulesIds)
                        {
                            erc.Add(new EntityReference("savedquery", ruleId));
                        }

                        rm.ApplyRulesToUser(erc, user.Id);
                    }
                }
            }
        }
Ejemplo n.º 9
0
        private void bwDelete_DoWork(object sender, DoWorkEventArgs e)
        {
            var deletedItems = new List<ListViewItem>();

            var rm = new RuleManager(entityName, service, connectionDetail);

            foreach (ListViewItem item in (ListView.SelectedListViewItemCollection)e.Argument)
            {
                var rule = (Entity)item.Tag;

                rm.DeleteRule(rule.Id);

                deletedItems.Add(item);
            }

            e.Result = deletedItems;
        }