private EntityReference GetPrincipalReference(CrmPrincipalType type, Guid id) { string logicalName = null; switch (type) { case CrmPrincipalType.User: logicalName = "systemuser"; break; case CrmPrincipalType.Team: logicalName = "team"; break; default: break; } return(new EntityReference(logicalName, id)); }
public static IEnumerable <Entity> GetRolesForPrincipal(ContentRepository repository, CrmPrincipalType principalType, Guid principalId) { string linkedEntityName = null; string filterAttributeName = null; switch (principalType) { case CrmPrincipalType.User: linkedEntityName = "systemuserroles"; filterAttributeName = "systemuserid"; break; case CrmPrincipalType.Team: linkedEntityName = "teamroles"; filterAttributeName = "teamid"; break; default: break; } QueryExpression query = new QueryExpression("role") { ColumnSet = new ColumnSet(true), Orders = { new OrderExpression("name", OrderType.Ascending) }, LinkEntities = { new LinkEntity("role", linkedEntityName, "roleid", "roleid", JoinOperator.Inner) { LinkCriteria = { Conditions = { new ConditionExpression(filterAttributeName, ConditionOperator.Equal, principalId) } } } } }; return(repository.Get(query)); }
public static IEnumerable <Entity> GetPrincipalsInRole(ContentRepository repository, CrmPrincipalType principalType, Guid roleId) { string resultEntityName = null; string linkedEntityName = null; string linkedAttributeName = null; string sortAttributeName = null; switch (principalType) { case CrmPrincipalType.User: resultEntityName = "systemuser"; linkedEntityName = "systemuserroles"; linkedAttributeName = "systemuserid"; sortAttributeName = "fullname"; break; case CrmPrincipalType.Team: resultEntityName = "team"; linkedEntityName = "teamroles"; linkedAttributeName = "teamid"; sortAttributeName = "name"; break; default: break; } QueryExpression query = new QueryExpression(resultEntityName) { ColumnSet = new ColumnSet(true), Orders = { new OrderExpression(sortAttributeName, OrderType.Ascending) }, LinkEntities = { new LinkEntity(resultEntityName, linkedEntityName, linkedAttributeName, linkedAttributeName, JoinOperator.Inner) { LinkCriteria = { Conditions = { new ConditionExpression("roleid", ConditionOperator.Equal, roleId) } } } } }; return(repository.Get(query)); }