Exemple #1
0
 public static UiViewButton Create(IUiViewButtonCreateIo input)
 {
     Debug.Assert(input.Id != null, "input.Id != null");
     return(new UiViewButton(input.Id.Value)
     {
         ButtonId = input.ButtonId,
         UiViewId = input.UiViewId,
         FunctionId = input.FunctionId,
         IsEnabled = input.IsEnabled
     });
 }
Exemple #2
0
 public static UiViewButton Create(IUiViewButtonCreateIo input)
 {
     Debug.Assert(input.Id != null, "input.Id != null");
     return new UiViewButton
         {
             Id = input.Id.Value,
             ButtonId = input.ButtonId,
             UiViewId = input.UiViewId,
             FunctionId = input.FunctionId,
             IsEnabled = input.IsEnabled
         };
 }
Exemple #3
0
                private void Handle(IAcSession acSession, IUiViewButtonCreateIo input, bool isCommand)
                {
                    var acDomain             = _set._acDomain;
                    var viewButtonsByUiView  = _set._viewButtonsByUiView;
                    var viewButtonDicById    = _set._viewButtonDicById;
                    var viewButtonRepository = acDomain.RetrieveRequiredService <IRepository <UiViewButton> >();

                    if (!input.Id.HasValue)
                    {
                        throw new ValidationException("标识是必须的");
                    }
                    UiViewButton entity;

                    lock (Locker)
                    {
                        ButtonState button;
                        if (!acDomain.ButtonSet.TryGetButton(input.ButtonId, out button))
                        {
                            throw new ValidationException("按钮不存在");
                        }
                        UiViewState view;
                        if (!acDomain.UiViewSet.TryGetUiView(input.UiViewId, out view))
                        {
                            throw new ValidationException("界面视图不存在");
                        }
                        if (input.FunctionId.HasValue)
                        {
                            FunctionState function;
                            if (!acDomain.FunctionSet.TryGetFunction(input.FunctionId.Value, out function))
                            {
                                throw new ValidationException("托管功能不存在");
                            }
                        }
                        if (acDomain.UiViewSet.GetUiViewButtons().Any(a => a.Id == input.Id.Value))
                        {
                            throw new ValidationException("给定标识的界面视图按钮已经存在");
                        }

                        entity = UiViewButton.Create(input);

                        var state = UiViewButtonState.Create(acDomain, entity);
                        if (!viewButtonsByUiView.ContainsKey(view))
                        {
                            viewButtonsByUiView.Add(view, new List <UiViewButtonState>());
                        }
                        if (!viewButtonsByUiView[view].Contains(state))
                        {
                            viewButtonsByUiView[view].Add(state);
                        }
                        if (!viewButtonDicById.ContainsKey(state.Id))
                        {
                            viewButtonDicById.Add(state.Id, state);
                        }
                        if (isCommand)
                        {
                            try
                            {
                                viewButtonRepository.Add(entity);
                                viewButtonRepository.Context.Commit();
                            }
                            catch
                            {
                                if (viewButtonsByUiView.ContainsKey(view))
                                {
                                    if (viewButtonsByUiView[view].Any(a => a.Id == entity.Id))
                                    {
                                        var item = viewButtonsByUiView[view].First(a => a.Id == entity.Id);
                                        viewButtonsByUiView[view].Remove(item);
                                    }
                                }
                                if (viewButtonDicById.ContainsKey(entity.Id))
                                {
                                    viewButtonDicById.Remove(entity.Id);
                                }
                                viewButtonRepository.Context.Rollback();
                                throw;
                            }
                        }
                    }
                    if (isCommand)
                    {
                        acDomain.MessageDispatcher.DispatchMessage(new UiViewButtonAddedEvent(acSession, entity, input, isPrivate: true));
                    }
                }