private void PrepareToBeAddedScopes(string[] items, PendingActionCollection pendingActions) { foreach (string scope in items) { foreach (AdminUnit au in allCurrentAUs) { var existed = Adapters.AUSnapshotAdapter.Instance.LoadAUScope(au.ID, scope, false, false, DateTime.MinValue); if (existed.Count == 0) { pendingActions.Add(new AddMemberAction(au, new AUAdminScope() { ID = UuidHelper.NewUuidString(), ScopeSchemaType = scope })); } else { // 尽量恢复已经删除的Scope,而不是重新创建一个 if (existed.GetUniqueNormalObject <AUAdminScope>() == null) { AUAdminScope onlyScope = (AUAdminScope)existed.First(); onlyScope.Status = SchemaObjectStatus.Normal; pendingActions.Add(new EnableMemberAction(au, onlyScope)); } // 否则,这个Scope已经是正常状态了? } } } }
private void PrepareScopesForAdd() { var scopeNames = this.schema.Scopes.Split(AUCommon.Spliter, StringSplitOptions.RemoveEmptyEntries); foreach (string name in scopeNames) { AUAdminScope existingScope = AUCommon.FindMatchScope(this.existingUnitScopes, name); AUAdminScope inputScope = this.InputAdminScopes != null?AUCommon.FindMatchScope(this.InputAdminScopes, name) : null; if (inputScope != null && existingScope != null && inputScope.ID != existingScope.ID) { throw new AUObjectException(string.Format("导入的管理范围{0}与现有管理范围{1}的ID不一致,导致无法继续执行导入。", inputScope.ID, existingScope.ID)); } if (existingScope == null) { if (inputScope == null) { inputScope = new AUAdminScope() { ID = UuidHelper.NewUuidString(), ScopeSchemaType = name } } ; pendingActions.Add(new AddMemberAction((AdminUnit)this.Data, inputScope)); } else if (existingScope.Status != SchemaObjectStatus.Normal) { pendingActions.Add(new EnableMemberAction((AdminUnit)this.Data, existingScope)); } } }
protected override void PrepareData(AUObjectOperationContext context) { base.PrepareData(context); this.scope = (AUAdminScope)SchemaObjectAdapter.Instance.Load(this.scope.ID); if (this.scope == null || this.scope.Status != SchemaObjectStatus.Normal) throw new SCStatusCheckException("指定条件容器对象不存在。"); }
protected override void PrepareData(AUObjectOperationContext context) { base.PrepareData(context); this.scope = (AUAdminScope)SchemaObjectAdapter.Instance.Load(this.scope.ID); if (this.scope == null || this.scope.Status != SchemaObjectStatus.Normal) { throw new SCStatusCheckException("指定条件容器对象不存在。"); } }
public void UpdateScopeCondition(AUAdminScope scope, SCCondition condition) { AdminUnit unit = scope.GetOwnerUnit(); CheckUnitPermission(AUOperationType.AddAdminUnit, "EditAdminScope", unit); if (condition.OwnerID != scope.ID) { throw new AUObjectValidationException("条件的OwnerID必须是Scope的ID"); } AUUpdateConditionsExecutor executor = new AUUpdateConditionsExecutor(AUOperationType.UpdateScopeCondition, scope, condition) { }; ExecuteWithActions(AUOperationType.UpdateScopeCondition, () => SCActionContext.Current.DoActions(() => executor.Execute())); }
public void AddObjectToScope(AUAdminScopeItem item, AUAdminScope scope) { AdminUnit unit = scope.GetOwnerUnit(); CheckUnitPermission(AUOperationType.AddAdminUnit, "EditAdminScope", unit); AUMemberRelativeExecutor executor = new AUMemberRelativeExecutor(AUOperationType.AddAUScopeItem, scope, item) { SaveTargetData = false, NeedValidation = this.NeedValidationAndStatusCheck, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck, }; ExecuteWithActions(AUOperationType.AddAUScopeItem, () => SCActionContext.Current.DoActions(() => { executor.Execute(); })); }
public void AddAdminUnitWithMembers(ClientAdminUnit unit, ClientAdminUnit parent, ClientAURole[] roles, ClientAUAdminScope[] scopes) { roles.NullCheck("roles"); scopes.NullCheck("scopes"); CheckIDProvided(unit); AURole[] auRoles = new AURole[roles.Length]; for (int i = roles.Length - 1; i >= 0; i--) { auRoles[i] = (AURole)roles[i].ToSchemaObject(); } AUAdminScope[] auScopes = new AUAdminScope[scopes.Length]; for (int i = scopes.Length - 1; i >= 0; i--) { auScopes[i] = (AUAdminScope)scopes[i].ToSchemaObject(); } EnsureID(unit); AdminUnit auParent = parent != null ? (AdminUnit)parent.ToSchemaObject(true) : null; this.Facade.AddAdminUnitWithMembers((AdminUnit)unit.ToSchemaObject(false), auParent, auRoles, auScopes); }
private void PrepareScopesForAdd() { var scopeNames = this.schema.Scopes.Split(AUCommon.Spliter, StringSplitOptions.RemoveEmptyEntries); foreach (string name in scopeNames) { AUAdminScope existingScope = AUCommon.FindMatchScope(this.existingUnitScopes, name); AUAdminScope inputScope = this.InputAdminScopes != null ? AUCommon.FindMatchScope(this.InputAdminScopes, name) : null; if (inputScope != null && existingScope != null && inputScope.ID != existingScope.ID) throw new AUObjectException(string.Format("导入的管理范围{0}与现有管理范围{1}的ID不一致,导致无法继续执行导入。", inputScope.ID, existingScope.ID)); if (existingScope == null) { if (inputScope == null) inputScope = new AUAdminScope() { ID = UuidHelper.NewUuidString(), ScopeSchemaType = name }; pendingActions.Add(new AddMemberAction((AdminUnit)this.Data, inputScope)); } else if (existingScope.Status != SchemaObjectStatus.Normal) { pendingActions.Add(new EnableMemberAction((AdminUnit)this.Data, existingScope)); } } }
public void UpdateScopeCondition(AUAdminScope scope, SCCondition condition) { AdminUnit unit = scope.GetOwnerUnit(); CheckUnitPermission(AUOperationType.AddAdminUnit, "EditAdminScope", unit); if (condition.OwnerID != scope.ID) throw new AUObjectValidationException("条件的OwnerID必须是Scope的ID"); AUUpdateConditionsExecutor executor = new AUUpdateConditionsExecutor(AUOperationType.UpdateScopeCondition, scope, condition) { }; ExecuteWithActions(AUOperationType.UpdateScopeCondition, () => SCActionContext.Current.DoActions(() => executor.Execute())); }
public void RemoveObjectFromScope(AUAdminScopeItem item, AUAdminScope scope) { AdminUnit unit = scope.GetOwnerUnit(); CheckUnitPermission(AUOperationType.AddAdminUnit, "EditAdminScope", unit); AUMemberRelativeExecutor executor = new AUMemberRelativeExecutor(AUOperationType.AddAUScopeItem, scope, item) { SaveTargetData = false, NeedValidation = this.NeedValidationAndStatusCheck, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck, }; executor.Data.Status = SchemaObjectStatus.Deleted; executor.Relation.Status = SchemaObjectStatus.Deleted; ExecuteWithActions(AUOperationType.AddAUScopeItem, () => SCActionContext.Current.DoActions(() => { executor.Execute(); })); }
public void AddAdminUnitWithMembers(AdminUnit unit, AdminUnit parent, AURole[] roles, AUAdminScope[] scopes) { if (parent == null) CheckAUSchemaPermission(unit.GetUnitSchema()); else CheckUnitPermission(AUOperationType.AddAdminUnit, "AddSubUnit", parent); AdminUnitExecutor executor = new Executors.AdminUnitExecutor(AUOperationType.AddAdminUnit, parent, unit) { NeedValidation = this.NeedValidationAndStatusCheck, NeedParentStatusCheck = this.NeedValidationAndStatusCheck, InputRoles = roles, InputAdminScopes = scopes }; ExecuteWithActions(AUOperationType.AddAdminUnit, () => SCActionContext.Current.DoActions(() => { executor.Execute(); })); }
public AUUpdateConditionsExecutor(AUOperationType opType, AUAdminScope scope, SCCondition condition) : base(opType) { (this.scope = scope).NullCheck("scope"); (this.condition = condition).NullCheck("condition"); }