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;
		}
Exemple #2
0
        /// <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);
        }