Exemple #1
0
        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("指定条件容器对象不存在。");
            }
        }
Exemple #5
0
        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()));
        }
Exemple #6
0
        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();
            }));
        }
Exemple #7
0
        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));
                }
            }
        }
Exemple #9
0
		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()));
		}
Exemple #10
0
		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();
			}));
		}
Exemple #11
0
		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");
 }
		public AUUpdateConditionsExecutor(AUOperationType opType, AUAdminScope scope, SCCondition condition)
			: base(opType)
		{
			(this.scope = scope).NullCheck("scope");
			(this.condition = condition).NullCheck("condition");
		}