protected override void CustomizeControls() { var isCurrentUserSeller = SecurityService.IsCurrentUserSeller; var isCurrentUserPurchaser = SecurityService.IsCurrentUserPurchaser; switch (Mode) { case EditFormMode.View: base.CustomizeControls(); break; case EditFormMode.Create: CheckHelper.WithinCondition(isCurrentUserSeller, "Only seller can create order item."); ControlCustomizeHelper.CustomizeControl(_orderReferenceEditor, EditFormMode.Create); ControlCustomizeHelper.CustomizeControl(_productSizeReferenceEditor, EditFormMode.Create); ControlCustomizeHelper.CustomizeControl(_quantityNumericUpDown, EditFormMode.Create); ControlCustomizeHelper.CustomizeControl(_priceNumericUpDown, EditFormMode.Create); ControlCustomizeHelper.CustomizeControl(_activeCheckBox, EditFormMode.Create); ControlCustomizeHelper.CustomizeControl(_purchaserPaidNumericUpDown, isCurrentUserPurchaser ? EditFormMode.Create : EditFormMode.View); break; case EditFormMode.Edit: CheckHelper.WithinCondition( isCurrentUserPurchaser || isCurrentUserSeller, "Only purchaser and seller can change order item."); var editFormModeForPurchaser = isCurrentUserPurchaser ? EditFormMode.Edit : EditFormMode.View; var editFormModeForSeller = Dto.IsCurrentUserSellerForOrderItem() ? EditFormMode.Edit : EditFormMode.View; ControlCustomizeHelper.CustomizeControl(_orderReferenceEditor, editFormModeForSeller); ControlCustomizeHelper.CustomizeControl(_productSizeReferenceEditor, editFormModeForSeller); ControlCustomizeHelper.CustomizeControl(_quantityNumericUpDown, editFormModeForSeller); ControlCustomizeHelper.CustomizeControl(_priceNumericUpDown, editFormModeForSeller); ControlCustomizeHelper.CustomizeControl(_activeCheckBox, editFormModeForSeller); ControlCustomizeHelper.CustomizeControl(_purchaserPaidNumericUpDown, editFormModeForPurchaser); break; default: throw new NotSupportedException(Mode.ToString()); } }