Esempio n. 1
0
 public InfoDicAddedEvent(IAcSession acSession, InfoDicBase source, IInfoDicCreateIo output)
     : base(acSession, source)
 {
     if (output == null)
     {
         throw new System.ArgumentNullException("output");
     }
     this.Output = output;
 }
Esempio n. 2
0
 public InfoDicAddedEvent(IAcSession acSession, InfoDicBase source, IInfoDicCreateIo output)
     : base(acSession, source)
 {
     if (output == null)
     {
         throw new System.ArgumentNullException("output");
     }
     this.Output = output;
 }
Esempio n. 3
0
 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
     });
 }
Esempio n. 4
0
 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
     };
 }
Esempio n. 5
0
 internal InfoDicAddedEvent(IAcSession acSession, InfoDicBase source, IInfoDicCreateIo input, bool isPrivate)
     : this(acSession, source, input)
 {
     this.IsPrivate = isPrivate;
 }
Esempio n. 6
0
            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));
                }
            }
Esempio n. 7
0
 internal InfoDicAddedEvent(IAcSession acSession, InfoDicBase source, IInfoDicCreateIo input, bool isPrivate)
     : this(acSession, source, input)
 {
     this.IsPrivate = isPrivate;
 }
Esempio n. 8
0
 public static void AddInfoDic(this IAcDomain acDomain, IAcSession acSession, IInfoDicCreateIo input)
 {
     acDomain.Handle(new AddInfoDicCommand(acSession, input));
 }
Esempio n. 9
0
 public static void AddInfoDic(this IAcDomain acDomain, IAcSession acSession, IInfoDicCreateIo input)
 {
     acDomain.Handle(new AddInfoDicCommand(acSession, input));
 }