From 08e3ca9dd36a12fafc28c27f2c55b16a0a55c3bd Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Wed, 20 Feb 2019 16:05:33 +0100 Subject: [PATCH] User Group Assignments --- EDMI_ClientSuite/ClassCommonCommands.vb | 47 ++++++ EDMI_ClientSuite/ClassDragDrop.vb | 3 +- EDMI_ClientSuite/ClassUIUtils.vb | 2 +- EDMI_ClientSuite/ClientSuite.vbproj | 1 + .../UserControlAssignment.Designer.vb | 7 + .../UserManager/UserControlAssignment.vb | 155 +++++++++++++++--- .../UserManager/frmUserManager.Designer.vb | 70 +++++--- .../UserManager/frmUserManager.resx | 76 ++++++--- .../UserManager/frmUserManager.vb | 35 +++- .../DigitalData.Services.EDMService.wsdl | 1 + .../EDMIServiceReference/Reference.svcmap | 1 + .../EDMIServiceReference/Reference.vb | 1 + .../EDMIServiceReference/System.xsd | 7 + EDMI_FILE_OPs/EDMIFileOps.vbproj | 3 + .../DDEDM_NetworkService/DatabaseResult.vb | 3 + 15 files changed, 330 insertions(+), 82 deletions(-) create mode 100644 EDMI_ClientSuite/ClassCommonCommands.vb create mode 100644 EDMI_FILE_OPs/Connected Services/EDMIServiceReference/System.xsd diff --git a/EDMI_ClientSuite/ClassCommonCommands.vb b/EDMI_ClientSuite/ClassCommonCommands.vb new file mode 100644 index 00000000..f8bd4096 --- /dev/null +++ b/EDMI_ClientSuite/ClassCommonCommands.vb @@ -0,0 +1,47 @@ +Imports DigitalData.Modules.Logging + +Public Class ClassCommonCommands + Private _LogConfig As LogConfig + Private _Logger As Logger + + Public Sub New(LogConfig As LogConfig) + _LogConfig = LogConfig + _Logger = LogConfig.GetLogger() + End Sub + + Public Async Function FNICM_RADM_NEW_USER2GROUP(GroupId As Integer, UserId As Integer) As Task(Of Integer) + Try + Dim oSQL = "SELECT FNICM_RADM_NEW_USER2GROUP({0},{1}, '{2}') FROM RDB$DATABASE;" + Dim oRequest = Await My.Channel.CreateDatabaseRequestAsync($"Add User To Group", False) + Dim oRecordIds As New List(Of Integer) + + Dim oResult = Await My.Channel.ReturnScalarAsync(String.Format(oSQL, UserId, GroupId, Environment.UserName)) + Await My.Channel.CloseDatabaseRequestAsync() + + If oResult.OK Then + Return oResult.Scalar + Else + Return Nothing + End If + Catch ex As Exception + _Logger.Error(ex) + Throw ex + End Try + End Function + + Public Async Function FNICM_DELETE_RECORD_FINALLY(RecordId As Integer) As Task(Of Boolean) + Try + Dim oSQL = "SELECT FNICM_DELETE_RECORD_FINALLY({0},'{1}') FROM RDB$DATABASE;" + Dim oRequest = Await My.Channel.CreateDatabaseRequestAsync($"Delete Record", False) + + Dim oResult = Await My.Channel.ReturnScalarAsync(String.Format(oSQL, RecordId, Environment.UserName)) + Await My.Channel.CloseDatabaseRequestAsync() + + Return oResult.OK + Catch ex As Exception + _Logger.Error(ex) + Throw ex + End Try + End Function + +End Class diff --git a/EDMI_ClientSuite/ClassDragDrop.vb b/EDMI_ClientSuite/ClassDragDrop.vb index 9c729fd3..fbe05751 100644 --- a/EDMI_ClientSuite/ClassDragDrop.vb +++ b/EDMI_ClientSuite/ClassDragDrop.vb @@ -68,13 +68,14 @@ Public Class ClassDragDrop Private Sub grid_DragOver(sender As Object, e As DragEventArgs) Dim multipleDropped As Boolean = e.Data.GetDataPresent(GetType(GridView)) + Dim singleDroppped As Boolean = e.Data.GetDataPresent(GetType(DataRow)) ' TODO: Check which kind of record was dragged 'Dim singleUserDropped As Boolean = e.Data.GetDataPresent(GetType(TBDD_USERRow)) 'Dim singleGroupDropped As Boolean = e.Data.GetDataPresent(GetType(DS_ChangeS.TBDD_GROUPSRow)) 'If multipleDropped Or singleUserDropped Or singleGroupDropped Then - If multipleDropped Then + If multipleDropped Or singleDroppped Then e.Effect = DragDropEffects.Move Else e.Effect = DragDropEffects.None diff --git a/EDMI_ClientSuite/ClassUIUtils.vb b/EDMI_ClientSuite/ClassUIUtils.vb index 2145f3a7..0c0e386d 100644 --- a/EDMI_ClientSuite/ClassUIUtils.vb +++ b/EDMI_ClientSuite/ClassUIUtils.vb @@ -18,7 +18,7 @@ Public Class ClassUIUtils Public Shared Function ConfigureGridViewReadOnly(View As GridView) View.OptionsBehavior.Editable = False View.OptionsBehavior.ReadOnly = True - View.OptionsSelection.MultiSelectMode = GridMultiSelectMode.RowSelect + Return View End Function Public Shared Function ConfigureGridControlDefaults(Grid As GridControl, Optional [ReadOnly] As Boolean = False) As GridControl diff --git a/EDMI_ClientSuite/ClientSuite.vbproj b/EDMI_ClientSuite/ClientSuite.vbproj index acb820ef..20ac0fdc 100644 --- a/EDMI_ClientSuite/ClientSuite.vbproj +++ b/EDMI_ClientSuite/ClientSuite.vbproj @@ -116,6 +116,7 @@ + diff --git a/EDMI_ClientSuite/UserManager/UserControlAssignment.Designer.vb b/EDMI_ClientSuite/UserManager/UserControlAssignment.Designer.vb index b024815b..2301f147 100644 --- a/EDMI_ClientSuite/UserManager/UserControlAssignment.Designer.vb +++ b/EDMI_ClientSuite/UserManager/UserControlAssignment.Designer.vb @@ -71,6 +71,7 @@ Partial Class UserControlAssignment ' 'GridNotAssignedToParent ' + Me.GridNotAssignedToParent.AllowDrop = True Me.GridNotAssignedToParent.Dock = System.Windows.Forms.DockStyle.Fill Me.GridNotAssignedToParent.Location = New System.Drawing.Point(0, 41) Me.GridNotAssignedToParent.MainView = Me.ViewNotAssignedToParent @@ -83,6 +84,8 @@ Partial Class UserControlAssignment ' Me.ViewNotAssignedToParent.GridControl = Me.GridNotAssignedToParent Me.ViewNotAssignedToParent.Name = "ViewNotAssignedToParent" + Me.ViewNotAssignedToParent.OptionsSelection.MultiSelect = True + Me.ViewNotAssignedToParent.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CheckBoxRowSelect ' 'PanelControl2 ' @@ -157,18 +160,22 @@ Partial Class UserControlAssignment ' 'GridAssignedToParent ' + Me.GridAssignedToParent.AllowDrop = True Me.GridAssignedToParent.Dock = System.Windows.Forms.DockStyle.Fill Me.GridAssignedToParent.Location = New System.Drawing.Point(0, 41) Me.GridAssignedToParent.MainView = Me.ViewAssignedToParent Me.GridAssignedToParent.Name = "GridAssignedToParent" Me.GridAssignedToParent.Size = New System.Drawing.Size(282, 406) Me.GridAssignedToParent.TabIndex = 2 + Me.GridAssignedToParent.Tag = "001" Me.GridAssignedToParent.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.ViewAssignedToParent}) ' 'ViewAssignedToParent ' Me.ViewAssignedToParent.GridControl = Me.GridAssignedToParent Me.ViewAssignedToParent.Name = "ViewAssignedToParent" + Me.ViewAssignedToParent.OptionsSelection.MultiSelect = True + Me.ViewAssignedToParent.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CheckBoxRowSelect ' 'PanelControl3 ' diff --git a/EDMI_ClientSuite/UserManager/UserControlAssignment.vb b/EDMI_ClientSuite/UserManager/UserControlAssignment.vb index 02b31802..3682d4c1 100644 --- a/EDMI_ClientSuite/UserManager/UserControlAssignment.vb +++ b/EDMI_ClientSuite/UserManager/UserControlAssignment.vb @@ -1,10 +1,8 @@ -Imports DevExpress.XtraGrid.Views.Base +Imports DevExpress.XtraGrid +Imports DevExpress.XtraGrid.Views.Base +Imports DevExpress.XtraGrid.Views.Grid Public Class UserControlAssignment - Public Property TextParentList As String - Public Property TextAssignedToParent As String - Public Property TextNotAssignedToParent As String - Private _DragDropManager As ClassDragDrop Private _ParentIdColumn As String @@ -14,6 +12,15 @@ Public Class UserControlAssignment Private _ChildList As DataTable Private _AssignmentList As DataTable + Private _ParentRecordId As Integer + + Public Property TextParentList As String + Public Property TextAssignedToParent As String + Public Property TextNotAssignedToParent As String + + Public Event ChildRemoved(ParentId As Integer, ChildId As Integer, RelationRecordId As Integer) + Public Event ChildAdded(ParentId As Integer, ChildId As Integer, RelationRecordId As Integer) + Private Sub UserControlAssignment_Load(sender As Object, e As EventArgs) Handles Me.Load _DragDropManager = New ClassDragDrop() _DragDropManager.AddGridView(ViewAssignedToParent) @@ -26,28 +33,14 @@ Public Class UserControlAssignment ' Load grid customizations GridParentList = ClassUIUtils.ConfigureGridControlDefaults(GridParentList, [ReadOnly]:=True) - GridNotAssignedToParent = ClassUIUtils.ConfigureGridControlDefaults(GridNotAssignedToParent, [ReadOnly]:=True) - GridAssignedToParent = ClassUIUtils.ConfigureGridControlDefaults(GridAssignedToParent, [ReadOnly]:=True) - - AddHandler ViewParentList.FocusedRowChanged, AddressOf ViewParentList_FocusedRowChanged - End Sub - - Private Sub ViewParentList_FocusedRowChanged(sender As Object, e As FocusedRowChangedEventArgs) - Dim oRowHandle = e.FocusedRowHandle - Dim oParentRecordId = ViewParentList.GetRowCellValue(oRowHandle, ClassConstants.ATTRIBUTE_ID_COLUMN) - - Dim oAssignedChildIds = From oRow In _AssignmentList.AsEnumerable() - Where oRow.Item(_ParentIdColumn) = oParentRecordId - Select oRow.Item(_ChildIdColumn) - - Dim oAssignedChildren As EnumerableRowCollection(Of DataRow) = From oRow In _ChildList.AsEnumerable() - Where oAssignedChildIds.Contains(oRow.Item(ClassConstants.ATTRIBUTE_ID_COLUMN)) - Dim oNotAssignedChildren As EnumerableRowCollection(Of DataRow) = From oRow In _ChildList.AsEnumerable() - Where Not oAssignedChildIds.Contains(oRow.Item(ClassConstants.ATTRIBUTE_ID_COLUMN)) + GridNotAssignedToParent = ClassUIUtils.ConfigureGridControlDefaults(GridNotAssignedToParent, [ReadOnly]:=True) + ViewNotAssignedToParent.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect + ViewNotAssignedToParent.OptionsSelection.MultiSelect = True - GridAssignedToParent.DataSource = MaybeCopyToDataTable(oAssignedChildren) - GridNotAssignedToParent.DataSource = MaybeCopyToDataTable(oNotAssignedChildren) + GridAssignedToParent = ClassUIUtils.ConfigureGridControlDefaults(GridAssignedToParent, [ReadOnly]:=True) + ViewAssignedToParent.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect + ViewAssignedToParent.OptionsSelection.MultiSelect = True End Sub Private Function MaybeCopyToDataTable(RowCollection As EnumerableRowCollection(Of DataRow)) As DataTable @@ -58,7 +51,6 @@ Public Class UserControlAssignment End If End Function - Public Sub Init(ParentList As DataTable, ChildrenList As DataTable, AssignmentList As DataTable, ParentIdColumn As String, ChildIdColumn As String) _ParentList = ParentList _ChildList = ChildrenList @@ -71,4 +63,115 @@ Public Class UserControlAssignment GridParentList.DataSource = ParentList End Sub + Public Sub UpdateData(ParentList As DataTable, ChildrenList As DataTable, AssignmentList As DataTable) + _ParentList = ParentList + _ChildList = ChildrenList + _AssignmentList = AssignmentList + + Dim oFocusedParentRow = ViewParentList.FocusedRowHandle + + ViewParentList.BeginDataUpdate() + GridParentList.DataSource = ParentList + ViewParentList.EndDataUpdate() + + ViewParentList.FocusedRowHandle = oFocusedParentRow + End Sub + + Private Function GetIdsFromDataRows(Rows As List(Of DataRow)) As List(Of Integer) + Dim oIds As New List(Of Integer) + + For Each oRow As DataRow In Rows + oIds.Add(oRow.Item(ClassConstants.ATTRIBUTE_ID_COLUMN)) + Next + + Return oIds + End Function + + Private Function GetModifiedRows(Grid As GridControl, Data As IDataObject) As List(Of DataRow) + Dim oTable As DataTable = Grid.DataSource + Dim oModifiedRows As New List(Of DataRow) + Dim oPrimaryKeys As New List(Of Integer) + + For Each oRow As DataRow In oTable.Rows + oPrimaryKeys.Add(oRow.Item(ClassConstants.ATTRIBUTE_ID_COLUMN)) + Next + + If Data.GetDataPresent(GetType(GridView)) Then + Dim oView As GridView = Data.GetData(GetType(GridView)) + Dim oSelectedRows() As Integer = oView.GetSelectedRows() + + If oSelectedRows.Length = 0 Then + Return oModifiedRows + End If + + ' Die ausgewählten Rows auslesen und gridUsersAssigned hinzufügen + For Each oRowIndex As Integer In oView.GetSelectedRows() + Dim oRowView As DataRowView = oView.GetRow(oRowIndex) + Dim oRow As DataRow = oRowView.Row + + If Not oPrimaryKeys.Contains(oRow.Item(ClassConstants.ATTRIBUTE_ID_COLUMN)) Then + oModifiedRows.Add(oRow) + End If + Next + + ElseIf Data.GetDataPresent(GetType(DataRow)) Then + Dim oRow As DataRow = Data.GetData(GetType(DataRow)) + + If Not oPrimaryKeys.Contains(oRow.Item(ClassConstants.ATTRIBUTE_ID_COLUMN)) Then + oModifiedRows.Add(oRow) + End If + End If + + Return oModifiedRows + End Function + + Private Function GetAssignmentRecord(ParentId As Integer, ChildId As Integer) + Dim oRows = _AssignmentList.Select($"{_ParentIdColumn} = {ParentId} And {_ChildIdColumn} = {ChildId}").ToList() + + If oRows.Count = 0 Then + Return Nothing + Else + Return oRows.First().Item(ClassConstants.ATTRIBUTE_ID_COLUMN) + End If + End Function + + Private Sub GridNotAssignedToParent_DragDrop(sender As Object, e As DragEventArgs) Handles GridNotAssignedToParent.DragDrop + Dim oGrid As GridControl = sender + Dim oChildIds = GetIdsFromDataRows(GetModifiedRows(oGrid, e.Data)) + + For Each oChildId In oChildIds + Dim oRelationRecordId = GetAssignmentRecord(_ParentRecordId, oChildId) + + RaiseEvent ChildAdded(_ParentRecordId, oChildId, oRelationRecordId) + Next + End Sub + + Private Sub GridAssignedToParent_DragDrop(sender As Object, e As DragEventArgs) Handles GridAssignedToParent.DragDrop + Dim oGrid As GridControl = sender + Dim oChildIds = GetIdsFromDataRows(GetModifiedRows(oGrid, e.Data)) + + For Each oChildId In oChildIds + Dim oRelationRecordId = GetAssignmentRecord(_ParentRecordId, oChildId) + + RaiseEvent ChildRemoved(_ParentRecordId, oChildId, oRelationRecordId) + Next + End Sub + + Private Sub ViewParentList_FocusedRowObjectChanged(sender As Object, e As FocusedRowObjectChangedEventArgs) Handles ViewParentList.FocusedRowObjectChanged + Dim oRowHandle = e.FocusedRowHandle + _ParentRecordId = ViewParentList.GetRowCellValue(oRowHandle, ClassConstants.ATTRIBUTE_ID_COLUMN) + + Dim oAssignedChildIds = From oRow In _AssignmentList.AsEnumerable() + Where oRow.Item(_ParentIdColumn) = _ParentRecordId + Select oRow.Item(_ChildIdColumn) + + Dim oAssignedChildren As EnumerableRowCollection(Of DataRow) = From oRow In _ChildList.AsEnumerable() + Where oAssignedChildIds.Contains(oRow.Item(ClassConstants.ATTRIBUTE_ID_COLUMN)) + + Dim oNotAssignedChildren As EnumerableRowCollection(Of DataRow) = From oRow In _ChildList.AsEnumerable() + Where Not oAssignedChildIds.Contains(oRow.Item(ClassConstants.ATTRIBUTE_ID_COLUMN)) + + GridAssignedToParent.DataSource = MaybeCopyToDataTable(oAssignedChildren) + GridNotAssignedToParent.DataSource = MaybeCopyToDataTable(oNotAssignedChildren) + End Sub End Class diff --git a/EDMI_ClientSuite/UserManager/frmUserManager.Designer.vb b/EDMI_ClientSuite/UserManager/frmUserManager.Designer.vb index 4a64d968..cd81a3a7 100644 --- a/EDMI_ClientSuite/UserManager/frmUserManager.Designer.vb +++ b/EDMI_ClientSuite/UserManager/frmUserManager.Designer.vb @@ -23,17 +23,19 @@ Partial Class frmUserManager Me.RibbonControl = New DevExpress.XtraBars.Ribbon.RibbonControl() Me.BarButtonUserEdit = New DevExpress.XtraBars.BarButtonItem() Me.BarButtonGroupEdit = New DevExpress.XtraBars.BarButtonItem() + Me.BarButtonAssign = New DevExpress.XtraBars.BarButtonItem() + Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem() Me.RibbonPageCategoryUserManager = New DevExpress.XtraBars.Ribbon.RibbonPageCategory() Me.RibbonPageUserManager = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() + Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonStatusBar = New DevExpress.XtraBars.Ribbon.RibbonStatusBar() Me.XtraTabControl1 = New DevExpress.XtraTab.XtraTabControl() Me.TabPageUserToGroup = New DevExpress.XtraTab.XtraTabPage() Me.UCUserToGroup = New DigitalData.GUIs.ClientSuite.UserControlAssignment() Me.TabPageGroupToGroup = New DevExpress.XtraTab.XtraTabPage() - Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() - Me.BarButtonAssign = New DevExpress.XtraBars.BarButtonItem() - Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem() + Me.RibbonPageGroup3 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() + Me.BarButtonRefresh = New DevExpress.XtraBars.BarButtonItem() CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.XtraTabControl1, System.ComponentModel.ISupportInitialize).BeginInit() Me.XtraTabControl1.SuspendLayout() @@ -43,9 +45,9 @@ Partial Class frmUserManager 'RibbonControl ' Me.RibbonControl.ExpandCollapseItem.Id = 0 - Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.BarButtonUserEdit, Me.BarButtonGroupEdit, Me.BarButtonAssign, Me.BarButtonItem1}) + Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.BarButtonUserEdit, Me.BarButtonGroupEdit, Me.BarButtonAssign, Me.BarButtonItem1, Me.BarButtonRefresh}) Me.RibbonControl.Location = New System.Drawing.Point(0, 0) - Me.RibbonControl.MaxItemId = 8 + Me.RibbonControl.MaxItemId = 9 Me.RibbonControl.MdiMergeStyle = DevExpress.XtraBars.Ribbon.RibbonMdiMergeStyle.Always Me.RibbonControl.Name = "RibbonControl" Me.RibbonControl.PageCategories.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageCategory() {Me.RibbonPageCategoryUserManager}) @@ -68,6 +70,22 @@ Partial Class frmUserManager Me.BarButtonGroupEdit.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonGroupEdit.ImageOptions.LargeImage"), System.Drawing.Image) Me.BarButtonGroupEdit.Name = "BarButtonGroupEdit" ' + 'BarButtonAssign + ' + Me.BarButtonAssign.Caption = "Zuordnen" + Me.BarButtonAssign.Id = 6 + Me.BarButtonAssign.ImageOptions.Image = CType(resources.GetObject("BarButtonAssign.ImageOptions.Image"), System.Drawing.Image) + Me.BarButtonAssign.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonAssign.ImageOptions.LargeImage"), System.Drawing.Image) + Me.BarButtonAssign.Name = "BarButtonAssign" + ' + 'BarButtonItem1 + ' + Me.BarButtonItem1.Caption = "Zuordnung aufheben" + Me.BarButtonItem1.Id = 7 + Me.BarButtonItem1.ImageOptions.Image = CType(resources.GetObject("BarButtonItem1.ImageOptions.Image"), System.Drawing.Image) + Me.BarButtonItem1.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonItem1.ImageOptions.LargeImage"), System.Drawing.Image) + Me.BarButtonItem1.Name = "BarButtonItem1" + ' 'RibbonPageCategoryUserManager ' Me.RibbonPageCategoryUserManager.Name = "RibbonPageCategoryUserManager" @@ -76,9 +94,9 @@ Partial Class frmUserManager ' 'RibbonPageUserManager ' - Me.RibbonPageUserManager.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2}) + Me.RibbonPageUserManager.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2, Me.RibbonPageGroup3}) Me.RibbonPageUserManager.Name = "RibbonPageUserManager" - Me.RibbonPageUserManager.Text = "Sprungmarken" + Me.RibbonPageUserManager.Text = "Allgemein" ' 'RibbonPageGroup1 ' @@ -87,6 +105,13 @@ Partial Class frmUserManager Me.RibbonPageGroup1.Name = "RibbonPageGroup1" Me.RibbonPageGroup1.Text = "Sprungmarken" ' + 'RibbonPageGroup2 + ' + Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonAssign) + Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonItem1) + Me.RibbonPageGroup2.Name = "RibbonPageGroup2" + Me.RibbonPageGroup2.Text = "Zuordnung" + ' 'RibbonStatusBar ' Me.RibbonStatusBar.Location = New System.Drawing.Point(0, 519) @@ -130,28 +155,19 @@ Partial Class frmUserManager Me.TabPageGroupToGroup.Size = New System.Drawing.Size(966, 371) Me.TabPageGroupToGroup.Text = "Gruppe zu Gruppe" ' - 'RibbonPageGroup2 + 'RibbonPageGroup3 ' - Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonAssign) - Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonItem1) - Me.RibbonPageGroup2.Name = "RibbonPageGroup2" - Me.RibbonPageGroup2.Text = "RibbonPageGroup2" + Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonRefresh) + Me.RibbonPageGroup3.Name = "RibbonPageGroup3" + Me.RibbonPageGroup3.Text = "Daten" ' - 'BarButtonAssign + 'BarButtonRefresh ' - Me.BarButtonAssign.Caption = "Zuordnen" - Me.BarButtonAssign.Id = 6 - Me.BarButtonAssign.ImageOptions.Image = CType(resources.GetObject("BarButtonAssign.ImageOptions.Image"), System.Drawing.Image) - Me.BarButtonAssign.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonAssign.ImageOptions.LargeImage"), System.Drawing.Image) - Me.BarButtonAssign.Name = "BarButtonAssign" - ' - 'BarButtonItem1 - ' - Me.BarButtonItem1.Caption = "Zuordnung aufheben" - Me.BarButtonItem1.Id = 7 - Me.BarButtonItem1.ImageOptions.Image = CType(resources.GetObject("BarButtonItem1.ImageOptions.Image"), System.Drawing.Image) - Me.BarButtonItem1.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonItem1.ImageOptions.LargeImage"), System.Drawing.Image) - Me.BarButtonItem1.Name = "BarButtonItem1" + Me.BarButtonRefresh.Caption = "Neu Laden" + Me.BarButtonRefresh.Id = 8 + Me.BarButtonRefresh.ImageOptions.Image = CType(resources.GetObject("BarButtonItem2.ImageOptions.Image"), System.Drawing.Image) + Me.BarButtonRefresh.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonItem2.ImageOptions.LargeImage"), System.Drawing.Image) + Me.BarButtonRefresh.Name = "BarButtonRefresh" ' 'frmUserManager ' @@ -188,4 +204,6 @@ Partial Class frmUserManager Friend WithEvents BarButtonAssign As DevExpress.XtraBars.BarButtonItem Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup + Friend WithEvents BarButtonRefresh As DevExpress.XtraBars.BarButtonItem + Friend WithEvents RibbonPageGroup3 As DevExpress.XtraBars.Ribbon.RibbonPageGroup End Class diff --git a/EDMI_ClientSuite/UserManager/frmUserManager.resx b/EDMI_ClientSuite/UserManager/frmUserManager.resx index b824379b..6a561110 100644 --- a/EDMI_ClientSuite/UserManager/frmUserManager.resx +++ b/EDMI_ClientSuite/UserManager/frmUserManager.resx @@ -175,45 +175,69 @@ - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAG3RFWHRUaXRsZQBBZGQ7UGx1 - cztCYXJzO1JpYmJvbjuVBjMvAAAAYElEQVQ4T92MUQqAMAxDd0Ev5am8XbTSlEwyRBwIfrzRpelrAF5h - Q7KsG5KYbceG5EeCnG3HhkQFI86HxadMFRTxJ1q85NXtAiXzEuiOzBOMOEqdQHfEhoSCOP5GcA/aDplf - q/kc1pC+AAAAAElFTkSuQmCC + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAbdEVYdFRpdGxlAEFkZDtQbHVzO0JhcnM7UmliYm9u + O5UGMy8AAABgSURBVDhP3YxRCoAwDEN3QS/lqbxdtNKUTDJEHAh+vNGl6WsAXmFDsqwbkphtx4bkR4Kc + bceGRAUjzofFp0wVFPEnWrzk1e0CJfMS6I7ME4w4Sp1Ad8SGhII4/kZwD9oOmV+r+RzWkL4AAAAASUVO + RK5CYII= - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAG3RFWHRUaXRsZQBBZGQ7UGx1 - cztCYXJzO1JpYmJvbjuVBjMvAAAAj0lEQVRYR+3OUQqEMAxFUTfoplyVu4vNhyDpRR4Sokg+DsKdafsW - M3sVxkoYK2GshLESRsW67XYVf1dhVPSAHtAD/j0gXp4lvuOm4OhwhviOm4KjwxniO24Kjg5niO+4KaiU - yxUYFTRgfG9dz58wKsaF3xvwBEZFD6AB44v/vYNR0QOyYKyEsRLGShjr2HIAeeWOhN7Trl4AAAAASUVO - RK5CYII= + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAbdEVYdFRpdGxlAEFkZDtQbHVzO0JhcnM7UmliYm9u + O5UGMy8AAACPSURBVFhH7c5RCoQwDEVRN+imXJW7i82HIOlFHhKiSD4Owp1p+xYzexXGShgrYayEsRJG + xbrtdhV/V2FU9IAe0AP+PSBeniW+46bg6HCG+I6bgqPDGeI7bgqODmeI77gpqJTLFRgVNGB8b13PnzAq + xoXfG/AERkUPoAHji/+9g1HRA7JgrISxEsZKGOvYcgB55Y6E3tOuXgAAAABJRU5ErkJggg== - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAI3RFWHRUaXRsZQBDYW5jZWw7 - U3RvcDtFeGl0O0JhcnM7UmliYm9uO0yWlrIAAADCSURBVDhPjZNLCgIxEERzOGFWegkvIH4QRhyv6UkU - V20VpCTpTquLB0n9GAZSzKzct6s1mHn+B2Qv7PCs8gsYuPqwB5lbzbKzoXCqgkhH4Kks9jLOzggj0Hz5 - SL0NpCM4D8vkM1CDfmQBaZl0AwQBP9LSlUl3EQiORkKZBIEg7D+bLKNsEBAclUUY6S4I+PIBhB/bdr6W - Gy8d+VkW0IYjNPgwWiOUBTw/MlOcwKMKaVkgo5EnmCRyZOfDGcjyAU5mVt7SQJzMJkqbYgAAAABJRU5E - rkJggg== + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAjdEVYdFRpdGxlAENhbmNlbDtTdG9wO0V4aXQ7QmFy + cztSaWJib247TJaWsgAAAMJJREFUOE+Nk0sKAjEQRHM4YVZ6CS8gfhBGHK/pSRRXbRWkJOlOq4sHSf0Y + BlLMrNy3qzWYef4HZC/s8KzyCxi4+rAHmVvNsrOhcKqCSEfgqSz2Ms7OCCPQfPlIvQ2kIzgPy+QzUIN+ + ZAFpmXQDBAE/0tKVSXcRCI5GQpkEgSDsP5sso2wQEByVRRjpLgj48gGEH9t2vpYbLx35WRbQhiM0+DBa + I5QFPD8yU5zAowppWSCjkSeYJHJk58MZyPIBTmZW3tJAnMwmSptiAAAAAElFTkSuQmCC + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAjdEVYdFRpdGxlAENhbmNlbDtTdG9wO0V4aXQ7QmFy + cztSaWJib247TJaWsgAAAW5JREFUWEfFlk1KBDEUhGfmAg56JTcuHEGP4FFFFMVZz1VcxaomD57pek1e + hLj4FilSP9Dd0LtSyr8ixZlIcSZSnIkUL8+3f6LJOvhzixRr0BV4AXf13I3LuQev4OjzPVKEgeUfoIBv + kBpRM1hOLzM+gRyxEnDxALiaRiM7wpcbzNy3fb8OBi4+gTagd4Qq5/lBda0EgsvksRrboK0RqXIiRRiM + zIh0OZEiTJ6eEUPlRIowtmyNGC4nUoRZEY0YLidSRECEGuFJlRMpImSLaMRSDmRmhBQZsoF65jZgeTFV + ZoQUGRIQlRvLCJUZIUWEKKK3XWndI6SIgN5yPvPwE1XZLVKEubfc7gyPkCKMmXJjaIQUYSJR+Qn4Yk96 + hBRhGCk3UiNWAi7uwVs1+oCeckONeAfdPyTX4Ksas+WW4UecwU3bQ1YCwWXCEVydKicuhyOYIcuJFC0I + 8P/Qn7tosvK/5TOR4kykOBMpzqPsfgBphQ1j4i+mWAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAJ3RFWHRUaXRsZQBSZWZyZXNo + O1JlcGVhdDtCYXJzO1JpYmJvbjtSZWxvYWTNTfbpAAAA0klEQVQ4T6WSsQ3CQBAEjUQBNGDRgXOKsMhI + yB0iR5DTBCWQkpmMfmji2X39nk7oHoEJRjrt3u2/fd+klP4iFH/Biv58Fy0YwQSeBdbU6OW+WsACHECq + cAMbEAasQA8YcgIDWBdYP4BC2ihgXxoYYrrzO6CQUbpMDumaOUQNHui8Cf1JWjQsLCTwjI8mh4/XyxJ1 + 9RB/Pa6K4iDNw+bi2zB138A90+CP6qQ734fY5/kGPhKuSCHva9wBhdicDyB8JAqJ2ILcWwsg857yXELx + e1LzAv/sh1p6xTM7AAAAAElFTkSuQmCC + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAI3RFWHRUaXRsZQBDYW5jZWw7 - U3RvcDtFeGl0O0JhcnM7UmliYm9uO0yWlrIAAAFuSURBVFhHxZZNSgQxFIRn5gIOeiU3LhxBj+BRRRTF - Wc9VXMWqJg+e6XpNXoS4+BYpUj/Q3dC7Usq/IsWZSHEmUpyJFC/Pt3+iyTr4c4sUa9AVeAF39dyNy7kH - r+Do8z1ShIHlH6CAb5AaUTNYTi8zPoEcsRJw8QC4mkYjO8KXG8zct32/DgYuPoE2oHeEKuf5QXWtBILL - 5LEa26CtEalyIkUYjMyIdDmRIkyenhFD5USKMLZsjRguJ1KEWRGNGC4nUkRAhBrhSZUTKSJki2jEUg5k - ZoQUGbKBeuY2YHkxVWaEFBkSEJUbywiVGSFFhCiit11p3SOkiIDecj7z8BNV2S1ShLm33O4Mj5AijJly - Y2iEFGEiUfkJ+GJPeoQUYRgpN1IjVgIu7sFbNfqAnnJDjXgH3T8k1+CrGrPlluFHnMFN20NWAsFlwhFc - nSonLocjmCHLiRQtCPD/0J+7aLLyv+UzkeJMpDgTKc6j7H4AaYUNY+IvplgAAAAASUVORK5CYII= + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAJ3RFWHRUaXRsZQBSZWZyZXNo + O1JlcGVhdDtCYXJzO1JpYmJvbjtSZWxvYWTNTfbpAAABzklEQVRYR8WWPU7DUBCEUwSadEgUKBQUIOUE + 0CUn8FVS0iZCQhwBbuAD0HCAdNSpKCi4Ar2ZQd5o32Ze7BDxUnxKPG92d+S/50HTNEdFiiWRYkmkWBIp + lkSKOaqHtwmYgxqswXcL/1Pj2kTV5pBiBE3HYAk+QNMBPfSOVa+IFD1odAteQRzUBWumqqdHigYakAvw + CdSQLlZgZwgpEhSSqv29AhbiHSzADJy18D81rsUQPBPZyyFFgiIOZwMf4hHcKD/hGngBMcRS+cmWcF8/ + D1Fgww0LcRL9EXhGIIbgjSmfjuQAw89hjMONynt3AS/PRLwcc+VNDmDKDTf2CcF7wtfWyrf5A0PXcKNX + CPh4Y/q6tfKZue9wIwnB47Del+qg4gND/NZvGniwyHe7N8+ULwLf3pdxqwmBgRuLL1gonwLerhDJmUuK + DZi4q/kiPlLZF1AE3lyIio+69yaFBozcduPOx5fLSPk98JwCFYLDh9GfHHhQwC3VNyAM0fUqfgLXwIdI + TrtHigRF/AZQ23CfzegL+BByBpGigcIp4JYaQ/SBIS6B7G1I0YMGDPHXD5I71dMjxQgaHe+TzIOmx/ko + /U+kWBIplkSKJZFiOZrBD//k8vo54AqiAAAAAElFTkSuQmCC \ No newline at end of file diff --git a/EDMI_ClientSuite/UserManager/frmUserManager.vb b/EDMI_ClientSuite/UserManager/frmUserManager.vb index ebfc45a4..54f54217 100644 --- a/EDMI_ClientSuite/UserManager/frmUserManager.vb +++ b/EDMI_ClientSuite/UserManager/frmUserManager.vb @@ -2,6 +2,7 @@ Public Class frmUserManager Private _Logger As Logger + Private _CommonCommands As ClassCommonCommands Public Sub New() ' Dieser Aufruf ist für den Designer erforderlich. @@ -9,14 +10,42 @@ Public Class frmUserManager ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. _Logger = My.LogConfig.GetLogger() + _CommonCommands = New ClassCommonCommands(My.LogConfig) End Sub Private Async Sub frmUserManager_Load(sender As Object, e As EventArgs) Handles MyBase.Load + Await InitUserToGroupData() + + AddHandler UCUserToGroup.ChildRemoved, AddressOf HandleUserAssignedToGroup + AddHandler UCUserToGroup.ChildAdded, AddressOf HandleUserDismissedFromGroup + End Sub + + Private Async Function InitUserToGroupData() As Task Dim oUserTable = Await GetAttributeListAsync("User") Dim oGroupTable = Await GetAttributeListAsync("Group") - Dim oUserGroupTable = Await GetAttributeListAsync("User_Group") + Dim oUserGroupTable = Await GetAttributeListAsync("User2Group") UCUserToGroup.Init(oGroupTable, oUserTable, oUserGroupTable, "GROUP_ID", "USER_ID") + End Function + + Private Async Function UpdateUserToGroupData() As Task + Dim oUserTable = Await GetAttributeListAsync("User") + Dim oGroupTable = Await GetAttributeListAsync("Group") + Dim oUserGroupTable = Await GetAttributeListAsync("User2Group") + + UCUserToGroup.UpdateData(oGroupTable, oUserTable, oUserGroupTable) + End Function + + Private Async Sub HandleUserAssignedToGroup(GroupId As Integer, UserId As Integer, RelationRecordId As Integer) + Dim oRecordId = Await _CommonCommands.FNICM_RADM_NEW_USER2GROUP(GroupId, UserId) + + Await UpdateUserToGroupData() + End Sub + + Private Async Sub HandleUserDismissedFromGroup(GroupId As Integer, UserId As Integer, RelationRecordId As Integer) + Dim oResult = Await _CommonCommands.FNICM_DELETE_RECORD_FINALLY(RelationRecordId) + + Await UpdateUserToGroupData() End Sub Private Async Function GetAttributeListAsync(AttributeName As String) As Task(Of DataTable) @@ -48,5 +77,7 @@ Public Class frmUserManager oForm.Show() End Sub - + Private Async Sub BarButtonRefresh_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonRefresh.ItemClick + Await UpdateUserToGroupData() + End Sub End Class \ No newline at end of file diff --git a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Services.EDMService.wsdl b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Services.EDMService.wsdl index 47d71092..e4fa8f9c 100644 --- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Services.EDMService.wsdl +++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Services.EDMService.wsdl @@ -6,6 +6,7 @@ + diff --git a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/Reference.svcmap b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/Reference.svcmap index 8b273439..dbd80746 100644 --- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/Reference.svcmap +++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/Reference.svcmap @@ -28,6 +28,7 @@ + diff --git a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/Reference.vb b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/Reference.vb index 04d51826..1d74e893 100644 --- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/Reference.vb +++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/Reference.vb @@ -102,6 +102,7 @@ Namespace EDMIServiceReference System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.TableResult)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NonQueryResult)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ContainerResult)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(System.DBNull)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.FileContainerInner))> _ Partial Public Class ScalarResult Inherits Object diff --git a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/System.xsd b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/System.xsd new file mode 100644 index 00000000..554d75bc --- /dev/null +++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/System.xsd @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/EDMI_FILE_OPs/EDMIFileOps.vbproj b/EDMI_FILE_OPs/EDMIFileOps.vbproj index 61dc73f2..29f5eb4f 100644 --- a/EDMI_FILE_OPs/EDMIFileOps.vbproj +++ b/EDMI_FILE_OPs/EDMIFileOps.vbproj @@ -133,6 +133,9 @@ Designer + + Designer + MyApplicationCodeGenerator Application.Designer.vb diff --git a/SERVICES/DDEDM_NetworkService/DatabaseResult.vb b/SERVICES/DDEDM_NetworkService/DatabaseResult.vb index 625fc335..45c957d3 100644 --- a/SERVICES/DDEDM_NetworkService/DatabaseResult.vb +++ b/SERVICES/DDEDM_NetworkService/DatabaseResult.vb @@ -2,6 +2,7 @@ + Public Class TableResult Public Property OK As Boolean @@ -19,6 +20,7 @@ End Class + Public Class ScalarResult Public Property OK As Boolean @@ -36,6 +38,7 @@ End Class + Public Class NonQueryResult Public Property OK As Boolean