private System.Collections.IEnumerable GetDataSource(TransferObjectType type, bool moveable) { switch (type) { case TransferObjectType.None: break; case TransferObjectType.Members: yield return new { Description = "人员添加到群组", Mode = TransferActionType.UserCopyToGroup }; yield return new { Description = "人员添加到组织", Mode = TransferActionType.UserCopyToOrg }; if (moveable) { yield return new { Description = "人员移动到组织", Mode = TransferActionType.UserMoveToOrg }; } break; case TransferObjectType.Groups: if (moveable) { yield return new { Description = "群组移动到组织", Mode = TransferActionType.GroupMoveToOrg }; } break; case TransferObjectType.Orgnizations: if (moveable) { yield return new { Description = "组织转移", Mode = TransferActionType.OrgTransfer }; } break; case TransferObjectType.RootOrgnizations: break; default: if (moveable) { yield return new { Description = "混合移动到组织", Mode = TransferActionType.MixedToOrg }; } break; } yield break; }
/// <summary> /// 获取可用的操作类型 /// </summary> /// <param name="keys"></param> /// <returns><see cref="TransferObjectType"/>的组合值</returns> internal static TransferObjectType GetAvailableOperation(string[] keys) { TransferObjectType result = TransferObjectType.None; if (keys != null) { var relations = DbUtil.LoadCurrentParentRelations(keys, SchemaInfo.FilterByCategory("Organizations").ToSchemaNames()); bool existRootOrg = false; foreach (var r in relations) { if (Util.IsOrganization(r.ChildSchemaType) && r.ParentID == PC.SCOrganization.RootOrganizationID) { existRootOrg = true; // 一级组织原则上不允许转移,如果含有一级组织,则什么都做不成 break; } } if (existRootOrg == false) { foreach (var item in DbUtil.LoadObjects(keys)) { if (item is SCUser) { result |= TransferObjectType.Members; } else if (item is SCGroup) { result |= TransferObjectType.Groups; } else if (item is SCOrganization) { result |= TransferObjectType.Orgnizations; } } } } return(result); }