示例#1
0
        private void btnGetTeams_Click(object sender, EventArgs e)
        {
            WorkAsync(new WorkAsyncInfo
            {
                Message = "Loading Access Teams",
                Work    = (worker, args) =>
                {
                    var q       = new QueryExpression("team");
                    q.ColumnSet = new ColumnSet(true);
                    q.AddCriteria("teamtype", 1);
                    //q.AddCriteria("teamtemplateid", teamTemplateId);
                    q.AddCriteria("regardingobjectid", new Guid(txtEntityId.Text));
                    var l         = q.AddLink("teamtemplate", "teamtemplateid", "teamtemplateid");
                    l.Columns     = new ColumnSet("teamtemplatename");
                    l.EntityAlias = "tt";

                    args.Result = Service.GetMultiple(q);

                    foreach (var team in (args.Result as List <Entity>))
                    {
                        var accessRequest = new RetrieveSharedPrincipalsAndAccessRequest
                        {
                            Target = new EntityReference((cBoxEntities.SelectedItem as EntityInfo).LogicalName, new Guid(txtEntityId.Text))
                        };

                        var accessResponse = (RetrieveSharedPrincipalsAndAccessResponse)Service.Execute(accessRequest);

                        var p = accessResponse.PrincipalAccesses.SingleOrDefault(x => x.Principal.Id == team.Id);
                        if (p != null)
                        {
                            team["accessrights"] = p.AccessMask;
                        }
                    }
                },
                PostWorkCallBack = (args) =>
                {
                    if (args.Error != null)
                    {
                        MessageBox.Show(args.Error.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    lvTeams.Items.Clear();
                    lvTeamMembers.Items.Clear();

                    var result = args.Result as List <Entity>;
                    if (result != null)
                    {
                        foreach (var team in result)
                        {
                            var item = new ListViewItem {
                                Text = team.GetValue <string>("tt.teamtemplatename"), Tag = team
                            };
                            item.SubItems.Add(team["accessrights"].ToString());
                            lvTeams.Items.Add(item);
                        }
                    }
                }
            });
        }
        public static bool AccessTeamExists(this IOrganizationService service, EntityReference record, Guid teamTemplateId)
        {
            var q = new QueryExpression("team");

            q.AddCriteria("teamtype", 1);
            q.AddCriteria("teamtemplateid", teamTemplateId);
            q.AddCriteria("regardingobjectid", record.Id);

            return(service.GetMultiple(q).Any());
        }
        public static Entity GetEntityByName(this IOrganizationService service, string entityName, string nameFieldName, string nameValue)
        {
            var q = new QueryExpression(entityName);

            q.ColumnSet = new ColumnSet(true);
            q.AddCriteria(nameFieldName, nameValue);

            return(service.GetMultiple(q).SingleOrDefault());
        }