/// <summary> /// 解除某人的秘书关系 /// </summary> /// <param name="secretary"></param> /// <param name="user"></param> /// <returns></returns> public SCSecretaryRelation RemoveSecretaryFromUser(SCUser secretary, SCUser user) { SCMemberRelativeExecutor executor = new SCMemberRelativeExecutor(SCOperationType.RemoveSecretaryFromUser, user, secretary) { OverrideExistedRelation = true, NeedStatusCheck = this.NeedValidationAndStatusCheck, NeedContainerStatusCheck = this.NeedValidationAndStatusCheck }; if (this._NeedCheckPermissions) { var hereParents = secretary.CurrentParentRelations; var thereParents = user.CurrentParentRelations; var hereIds = (from p in hereParents where p.Status == SchemaObjectStatus.Normal select p.ParentID).ToArray(); var thereIds = (from p in thereParents where p.Status == SchemaObjectStatus.Normal select p.ParentID).ToArray(); CheckPermissions(SCOperationType.RemoveSecretaryFromUser, SchemaDefine.GetSchema("Organizations"), "UpdateChildren", hereIds); CheckPermissions(SCOperationType.RemoveSecretaryFromUser, SchemaDefine.GetSchema("Organizations"), "UpdateChildren", thereIds); } executor.Relation.Status = SchemaObjectStatus.Deleted; SCSecretaryRelation result = null; ExecuteWithActions(SCOperationType.RemoveSecretaryFromUser, () => SCActionContext.Current.DoActions(() => result = (SCSecretaryRelation)executor.Execute())); return(result); }
public void AddSecretaryToUserExecutorTest() { SCUser secretary = SCObjectGenerator.PrepareUserObject("罗", "剑", "罗剑" + UuidHelper.NewUuidString()); SCObjectOperations.Instance.AddUser(secretary, SCOrganization.GetRoot()); SCUser user1 = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user1, SCOrganization.GetRoot()); SCSecretaryRelation sr = SCObjectOperations.Instance.AddSecretaryToUser(secretary, user1); Assert.AreEqual(secretary.SchemaType, sr.ContainerSchemaType); Assert.AreEqual(user1.SchemaType, sr.MemberSchemaType); SCUser user2 = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user2, SCOrganization.GetRoot()); SCObjectOperations.Instance.AddSecretaryToUser(secretary, user2); Assert.IsTrue(user1.CurrentSecretaries.ContainsKey(secretary.ID)); Assert.IsTrue(user2.CurrentSecretaries.ContainsKey(secretary.ID)); Assert.IsTrue(secretary.CurrentSecretariesOf.ContainsKey(user1.ID)); Assert.IsTrue(secretary.CurrentSecretariesOf.ContainsKey(user2.ID)); }
public void RemoveSecretaryFromUserExecutorTest() { SCUser secretary = SCObjectGenerator.PrepareUserObject("罗", "剑", "罗剑" + UuidHelper.NewUuidString()); SCObjectOperations.Instance.AddUser(secretary, SCOrganization.GetRoot()); SCUser user1 = SCObjectGenerator.PrepareUserObject(); SCObjectOperations.Instance.AddUser(user1, SCOrganization.GetRoot()); SCSecretaryRelation sr = SCObjectOperations.Instance.AddSecretaryToUser(secretary, user1); Assert.IsTrue(user1.CurrentSecretaries.ContainsKey(secretary.ID)); Assert.IsTrue(secretary.CurrentSecretariesOf.ContainsKey(user1.ID)); secretary.ClearRelativeData(); user1.ClearRelativeData(); SCObjectOperations.Instance.RemoveSecretaryFromUser(secretary, user1); Assert.IsFalse(user1.CurrentSecretaries.ContainsKey(secretary.ID)); Assert.IsFalse(secretary.CurrentSecretariesOf.ContainsKey(user1.ID)); }