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