Exemple #1
0
        /// <summary>
        /// 通过数据过滤规则获取用户。
        /// </summary>
        /// <param name="rol">数据过滤规则操作。</param>
        /// <param name="organization">待过滤的组织数据。</param>
        /// <param name="user">待过滤的用户数据。</param>
        /// <returns></returns>
        private UserList GetUserListByOperation(List <ResourceOperation> rol, User user, Organization organization)
        {
            UserList           userList       = new UserList();
            DataConstraintRule constraintRule = DataConstraintRule.All;

            if (null != rol)
            {
                foreach (var operation in rol)
                {
                    DataConstraintRule currentConstraintRule;
                    currentConstraintRule = System.Enum.TryParse(operation.OperationName, out currentConstraintRule) ? currentConstraintRule : DataConstraintRule.Own;
                    var value = constraintRule.CompareTo(currentConstraintRule);
                    if (value < 0)
                    {
                        constraintRule = currentConstraintRule;
                    }
                }
            }

            if (constraintRule == DataConstraintRule.Own)
            {
                userList.Add(user);
            }
            else if (constraintRule == DataConstraintRule.OwnCompany)
            {
                userList.AddRange(this.GetUserListByOwnCompanyRule(organization));
            }
            else if (constraintRule == DataConstraintRule.Lower)
            {
                userList.AddRange(this.GetUserListByLowerRule(organization));
            }

            return(userList);
        }
Exemple #2
0
        private OrganizationList GetOrganizationByOperation(List <ResourceOperation> list, Organization organization)
        {
            OrganizationList orgList = new OrganizationList();

            orgList.AutoTreeIndexEnabled = false;

            DataConstraintRule constraintRule = DataConstraintRule.All;

            if (null != list)
            {
                foreach (var operation in list)
                {
                    DataConstraintRule currentConstraintRule;
                    currentConstraintRule = System.Enum.TryParse(operation.OperationName, out currentConstraintRule) ? currentConstraintRule : DataConstraintRule.Own;
                    var value = constraintRule.CompareTo(currentConstraintRule);
                    if (value < 0)
                    {
                        constraintRule = currentConstraintRule;
                    }
                }
            }

            if (constraintRule == DataConstraintRule.OwnCompany)
            {
                orgList.Add(organization);
            }
            else if (constraintRule == DataConstraintRule.Lower)
            {
                orgList.AddRange(HierarchicalStructureDataCache.OrganizationList.Where(o => o.TreeIndex.StartsWith(organization.TreeIndex)));
            }
            else if (constraintRule == DataConstraintRule.All)
            {
                orgList.AddRange(HierarchicalStructureDataCache.OrganizationList);
            }

            return(orgList);
        }