예제 #1
0
        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));
        }