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()); }