예제 #1
0
        public void ChangeOwnerTest()
        {
            SCOrganization root = SCOrganization.GetRoot();

            SCUser user = SCObjectGenerator.PrepareUserObject();

            SCObjectOperations.Instance.AddUser(user, root);

            SCOrganization sidelineOrg = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(sidelineOrg, root);

            //设置了兼职
            SCObjectOperations.Instance.AddUser(user, sidelineOrg);

            SCObjectOperations.Instance.ChangeOwner(user, sidelineOrg);

            user = (SCUser)SchemaObjectAdapter.Instance.Load(user.ID);

            user.ClearRelativeData();
            sidelineOrg.ClearRelativeData();
            root.ClearRelativeData();

            Console.WriteLine(user.OwnerName);
            Assert.AreEqual(sidelineOrg.ID, user.OwnerID);
        }
		public SCMoveObjectExecutor(SCOperationType opType, SCOrganization originalOrg, SCBase obj, SCOrganization targetOrg)
			: base(opType)
		{
			obj.NullCheck("obj");
			targetOrg.NullCheck("targetOrg");

			obj.ClearRelativeData();
			targetOrg.ClearRelativeData();

			if (originalOrg != null)
				originalOrg.ClearRelativeData();

			this._Object = obj;
			this._OriginalOrganization = originalOrg;
			this._TargetOrganization = targetOrg;

			this._NeedChangeOwner = PrepareNeedChangeOwner(originalOrg, targetOrg, obj);

			if (originalOrg != null && originalOrg.ID == targetOrg.ID)
			{
				this._RelationExisted = true;
			}
			else
			{
				this._OriginalRelation = PreprareOriginalRelation(originalOrg, obj);
				this._TargetRelation = PrepareTargetRelation(targetOrg, obj);
				this._NeedGenerateFullPaths = (obj is ISCRelationContainer) && (((ISCRelationContainer)obj).GetCurrentChildrenCount() > 0);
			}
		}
예제 #3
0
        public void UpdateOrganizationNameTest()
        {
            SCOrganization root = SCOrganization.GetRoot();

            SCOrganization newOrg = SCObjectGenerator.PrepareOrganizationObject();
            SCUser         user   = SCObjectGenerator.PrepareUserObject();

            SCObjectOperations.Instance.AddOrganization(newOrg, root);

            SchemaObjectBase objLoaded = SchemaObjectAdapter.Instance.Load(newOrg.ID);

            Assert.AreEqual(newOrg.Name, objLoaded.Properties.GetValue("Name", string.Empty));
            Assert.IsTrue(objLoaded.CurrentParents.Count > 0);
            Assert.AreEqual(root.ID, objLoaded.CurrentParents[0].ID);

            SCObjectOperations.Instance.AddUser(user, newOrg);

            newOrg.ClearRelativeData();

            newOrg.Name = "ChangedOrgName";

            SCObjectOperations.Instance.UpdateOrganization(newOrg);

            Console.WriteLine("Org ID: {0}, User ID: {1}", newOrg.ID, user.ID);
        }
예제 #4
0
        public void MoveUserNotChangeOwnerTest()
        {
            SCOrganization root = SCOrganization.GetRoot();

            SCUser user = SCObjectGenerator.PrepareUserObject();

            SCObjectOperations.Instance.AddUser(user, root);

            SCOrganization sidelineOrg = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(sidelineOrg, root);

            //设置了兼职
            SCObjectOperations.Instance.AddUser(user, sidelineOrg);

            SCOrganization targetOrg = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(targetOrg, root);

            SCObjectOperations.Instance.MoveObjectToOrganization(sidelineOrg, user, targetOrg);

            user = (SCUser)SchemaObjectAdapter.Instance.Load(user.ID);

            user.ClearRelativeData();
            targetOrg.ClearRelativeData();
            sidelineOrg.ClearRelativeData();
            root.ClearRelativeData();

            Assert.IsTrue(user.CurrentParents.ContainsKey(targetOrg.ID));
            Assert.IsTrue(targetOrg.CurrentChildren.ContainsKey(user.ID));
            Assert.IsFalse(sidelineOrg.CurrentChildren.ContainsKey(user.ID));
            Assert.AreNotEqual(targetOrg.ID, user.OwnerID);
        }
예제 #5
0
        public SCOrganizationRelativeExecutor(SCOperationType opType, SCOrganization parent, SCBase data)
            : base(opType, data)
        {
            parent.NullCheck("organization");

            data.ClearRelativeData();
            parent.ClearRelativeData();

            this._Parent   = parent;
            this._Relation = PrepareRelationObject(parent, data);

            if (this.OperationType == SCOperationType.AddOrganization)
            {
                this._AclContainer = PrepareAclContainer(parent, data);
            }

            if (data is SCUser)
            {
                this._TargetParentRelations = data.CurrentParentRelations;

                if (this.OperationType == SCOperationType.AddUser && this._TargetParentRelations.Count == 0)
                {
                    SCUser user = (SCUser)data;

                    user.OwnerID   = parent.ID;
                    user.OwnerName = parent.Properties.GetValue("Name", string.Empty);
                }
            }
        }
        public SCMoveObjectExecutor(SCOperationType opType, SCOrganization originalOrg, SCBase obj, SCOrganization targetOrg)
            : base(opType)
        {
            obj.NullCheck("obj");
            targetOrg.NullCheck("targetOrg");

            obj.ClearRelativeData();
            targetOrg.ClearRelativeData();

            if (originalOrg != null)
            {
                originalOrg.ClearRelativeData();
            }

            this._Object = obj;
            this._OriginalOrganization = originalOrg;
            this._TargetOrganization   = targetOrg;

            this._NeedChangeOwner = PrepareNeedChangeOwner(originalOrg, targetOrg, obj);

            if (originalOrg != null && originalOrg.ID == targetOrg.ID)
            {
                this._RelationExisted = true;
            }
            else
            {
                this._OriginalRelation      = PreprareOriginalRelation(originalOrg, obj);
                this._TargetRelation        = PrepareTargetRelation(targetOrg, obj);
                this._NeedGenerateFullPaths = (obj is ISCRelationContainer) && (((ISCRelationContainer)obj).GetCurrentChildrenCount() > 0);
            }
        }
		public SCOrganizationRelativeExecutor(SCOperationType opType, SCOrganization parent, SCBase data)
			: base(opType, data)
		{
			parent.NullCheck("organization");

			data.ClearRelativeData();
			parent.ClearRelativeData();

			this._Parent = parent;
			this._Relation = PrepareRelationObject(parent, data);

			if (this.OperationType == SCOperationType.AddOrganization)
				this._AclContainer = PrepareAclContainer(parent, data);

			if (data is SCUser)
			{
				this._TargetParentRelations = data.CurrentParentRelations;

				if (this.OperationType == SCOperationType.AddUser && this._TargetParentRelations.Count == 0)
				{
					SCUser user = (SCUser)data;

					user.OwnerID = parent.ID;
					user.OwnerName = parent.Properties.GetValue("Name", string.Empty);
				}
			}
		}
		/// <summary>
		/// 修改对象的Owner信息
		/// </summary>
		/// <param name="opType">操作类型</param>
		/// <param name="obj">需要调整Owner的对象</param>
		/// <param name="targetOrg">调整后的Owner</param>
		public SCChangeOwnerExecutor(SCOperationType opType, SCBase obj, SCOrganization targetOrg)
			: base(opType)
		{
			obj.NullCheck("obj");
			targetOrg.NullCheck("targetOrg");

			obj.ClearRelativeData();
			targetOrg.ClearRelativeData();

			this._Object = obj;
			this._TargetOrganization = targetOrg;
		}
        /// <summary>
        /// 修改对象的Owner信息
        /// </summary>
        /// <param name="opType">操作类型</param>
        /// <param name="obj">需要调整Owner的对象</param>
        /// <param name="targetOrg">调整后的Owner</param>
        public SCChangeOwnerExecutor(SCOperationType opType, SCBase obj, SCOrganization targetOrg)
            : base(opType)
        {
            obj.NullCheck("obj");
            targetOrg.NullCheck("targetOrg");

            obj.ClearRelativeData();
            targetOrg.ClearRelativeData();

            this._Object             = obj;
            this._TargetOrganization = targetOrg;
        }
예제 #10
0
        public void LoadSimpleObjectTest()
        {
            SCOrganization root = SCOrganization.GetRoot();

            SCOrganization newOrg = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(newOrg, root);

            root.ClearRelativeData();
            SCSimpleObjectCollection simpleChildren = root.CurrentChildren.ToSimpleObjects();

            SCSimpleObject simpleObj = simpleChildren.Find(obj => obj.ID == newOrg.ID);

            Console.WriteLine(simpleObj.DisplayName);

            Assert.IsNotNull(simpleObj);
            Assert.AreEqual(simpleObj.Name, simpleObj.DisplayName);
        }
예제 #11
0
        public void MoveGroupTest()
        {
            SCOrganization root = SCOrganization.GetRoot();

            SCGroup group = SCObjectGenerator.PrepareGroupObject();

            SCObjectOperations.Instance.AddGroup(group, root);

            SCOrganization newOrg = SCObjectGenerator.PrepareOrganizationObject();

            SCObjectOperations.Instance.AddOrganization(newOrg, root);

            SCObjectOperations.Instance.MoveObjectToOrganization(null, group, newOrg);

            group.ClearRelativeData();
            newOrg.ClearRelativeData();
            root.ClearRelativeData();

            Assert.IsTrue(group.CurrentParents.ContainsKey(newOrg.ID));
            Assert.IsTrue(newOrg.CurrentChildren.ContainsKey(group.ID));
            Assert.IsFalse(root.CurrentChildren.ContainsKey(group.ID));
        }
예제 #12
0
        public void AddUserInOrganizationTest()
        {
            SCOrganization org  = SCObjectGenerator.PrepareOrganizationObject();
            SCUser         user = SCObjectGenerator.PrepareUserObject();

            SCRelationObject relation = UpdateRelation(org, user);

            org.ClearRelativeData();

            SCRelationObject relationLoaded = SchemaRelationObjectAdapter.Instance.Load(org.ID, user.ID);

            Console.WriteLine("Org ID: {0}, User ID: {1}", org.ID, user.ID);

            Assert.IsNotNull(relationLoaded);
            Assert.AreEqual(org.ID, relationLoaded.ParentID);
            Assert.AreEqual(user.ID, relationLoaded.ID);
            Assert.AreEqual(user.VersionStartTime, org.VersionStartTime);
            Assert.AreEqual(relation.VersionStartTime, org.VersionStartTime);

            ChildrenCheck(SCOrganization.GetRoot(), org, user);
            ParentsCheck(user, org, SCOrganization.GetRoot());
        }