private static void DoCopyUnit(StepContext context, AU.AdminUnit fromUnit, AU.AdminUnit targetParent, string newName, string newCodeName, bool copyRoleMembers, bool copyScopeMembers, bool copyScopeConditions) { AU.AdminUnit newUnit = CreateUnit(fromUnit, newName, newCodeName); int totalSteps = 1; if (copyRoleMembers) totalSteps++; if (copyScopeConditions) totalSteps++; if (copyScopeMembers) totalSteps++; context.TotalSteps = totalSteps; context.PassedSteps = 0; context.Div = 100.0 / totalSteps; ProcessProgress.Current.MinStep = 1; ProcessProgress.Current.CurrentStep = 1; ProcessProgress.Current.MaxStep = 100; context.Logger.WriteLine(ProcessProgress.Current.StatusText = "正在添加管理单元"); AU.Operations.Facade.InstanceWithPermissions.AddAdminUnit(newUnit, targetParent); context.ResetInnerSteps(); context.PassedSteps++; context.Response(); CopyRoleMembers(fromUnit, copyRoleMembers, newUnit, context); context.PassedSteps++; context.ResetInnerSteps(); context.Response(); if (copyScopeMembers || copyScopeConditions) { var srcScopes = fromUnit.GetNormalScopes(); var scopes = newUnit.GetNormalScopes(); if (copyScopeMembers) { foreach (AU.AUAdminScope srcScope in srcScopes) { var targetScope = scopes.GetScope(srcScope.ScopeSchemaType); if (targetScope != null) { CopyMembers(copyScopeMembers, srcScope, targetScope, context); } } context.PassedSteps++; context.ResetInnerSteps(); context.Response(); } if (copyScopeConditions) { foreach (AU.AUAdminScope srcScope in srcScopes) { var targetScope = scopes.GetScope(srcScope.ScopeSchemaType); if (targetScope != null) { CopyConditions(copyScopeConditions, srcScope, targetScope, context); context.PassedSteps++; context.ResetInnerSteps(); context.Response(); } } context.PassedSteps++; context.ResetInnerSteps(); } } }