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 }); }
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 }; }
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)); } }