public PrivilegeUpdatedEvent(IAcSession acSession, PrivilegeBase source, IPrivilegeUpdateIo output) : base(acSession, source) { if (output == null) { throw new System.ArgumentNullException("output"); } this.Output = output; }
private void Handle(IAcSession acSession, IPrivilegeUpdateIo input, bool isCommand) { var acDomain = _set._acDomain; var privilegeList = _set._privilegeList; var privilegeRepository = acDomain.RetrieveRequiredService <IRepository <Privilege, Guid> >(); Privilege entity = null; var stateChanged = false; lock (Locker) { entity = privilegeRepository.GetByKey(input.Id); if (entity == null) { throw new NotExistException("不存在的权限记录标识" + input.Id); } var bkState = acDomain.PrivilegeSet.FirstOrDefault(a => a.Id == input.Id); bool isAccountSubjectType = string.Equals(UserAcSubjectType.Account.ToName(), entity.SubjectType); entity.Update(input); var newState = PrivilegeState.Create(entity); stateChanged = newState != bkState; if (!isAccountSubjectType && stateChanged) { privilegeList.Remove(bkState); privilegeList.Add(newState); } if (isCommand) { try { privilegeRepository.Update(entity); privilegeRepository.Context.Commit(); } catch { if (!isAccountSubjectType && stateChanged) { privilegeList.Remove(newState); privilegeList.Add(bkState); } privilegeRepository.Context.Rollback(); throw; } } } if (isCommand && stateChanged) { acDomain.MessageDispatcher.DispatchMessage(new PrivilegeUpdatedEvent(acSession, entity, input, isPrivate: true)); } }
public void Update(IPrivilegeUpdateIo input) { this.AcContent = input.AcContent; }
internal PrivilegeUpdatedEvent(IAcSession acSession, PrivilegeBase source, IPrivilegeUpdateIo input, bool isPrivate) : this(acSession, source, input) { this.IsPrivate = isPrivate; }