public InfoDicAddedEvent(IAcSession acSession, InfoDicBase source, IInfoDicCreateIo output) : base(acSession, source) { if (output == null) { throw new System.ArgumentNullException("output"); } this.Output = output; }
public static InfoDic Create(IInfoDicCreateIo input) { Debug.Assert(input.Id != null, "input.Id != null"); return(new InfoDic(input.Id.Value) { Code = input.Code, IsEnabled = input.IsEnabled, Name = input.Name, Description = input.Description, SortCode = input.SortCode }); }
public static InfoDic Create(IInfoDicCreateIo input) { Debug.Assert(input.Id != null, "input.Id != null"); return new InfoDic { Code = input.Code, Id = input.Id.Value, IsEnabled = input.IsEnabled, Name = input.Name, Description = input.Description, SortCode = input.SortCode }; }
internal InfoDicAddedEvent(IAcSession acSession, InfoDicBase source, IInfoDicCreateIo input, bool isPrivate) : this(acSession, source, input) { this.IsPrivate = isPrivate; }
private void Handle(IAcSession acSession, IInfoDicCreateIo input, bool isCommand) { var acDomain = _set._acDomain; var infoDicDicById = _set._infoDicDicById; var infoDicDicByCode = _set._infoDicDicByCode; var infoDicRepository = acDomain.RetrieveRequiredService <IRepository <InfoDic, Guid> >(); if (string.IsNullOrEmpty(input.Code)) { throw new ValidationException("编码不能为空"); } if (!input.Id.HasValue) { throw new ValidationException("标识是必须的"); } InfoDic entity; lock (Locker) { InfoDicState infoDic; if (acDomain.NodeHost.InfoDics.TryGetInfoDic(input.Id.Value, out infoDic)) { throw new ValidationException("给定标识标识的记录已经存在"); } if (acDomain.NodeHost.InfoDics.TryGetInfoDic(input.Code, out infoDic) && infoDic.Id != input.Id.Value) { throw new ValidationException("重复的编码"); } entity = InfoDic.Create(input); var state = InfoDicState.Create(acDomain, entity); if (!infoDicDicById.ContainsKey(entity.Id)) { infoDicDicById.Add(entity.Id, state); } if (!infoDicDicByCode.ContainsKey(entity.Code)) { infoDicDicByCode.Add(entity.Code, state); } if (isCommand) { try { infoDicRepository.Add(entity); infoDicRepository.Context.Commit(); } catch { if (infoDicDicById.ContainsKey(entity.Id)) { infoDicDicById.Remove(entity.Id); } if (infoDicDicByCode.ContainsKey(entity.Code)) { infoDicDicByCode.Remove(entity.Code); } infoDicRepository.Context.Rollback(); throw; } } } if (isCommand) { acDomain.MessageDispatcher.DispatchMessage(new InfoDicAddedEvent(acSession, entity, input, isPrivate: true)); } }
public static void AddInfoDic(this IAcDomain acDomain, IAcSession acSession, IInfoDicCreateIo input) { acDomain.Handle(new AddInfoDicCommand(acSession, input)); }