User Group Assignments

This commit is contained in:
Jonathan Jenne 2019-02-20 16:05:33 +01:00
parent 6131182d64
commit 08e3ca9dd3
15 changed files with 330 additions and 82 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -116,6 +116,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="ApplicationEvents.vb" />
<Compile Include="ClassCommonCommands.vb" />
<Compile Include="ClassConfig.vb" />
<Compile Include="ClassConstants.vb" />
<Compile Include="ClassDragDrop.vb" />

View File

@ -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
'

View File

@ -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)
ViewNotAssignedToParent.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect
ViewNotAssignedToParent.OptionsSelection.MultiSelect = 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))
GridAssignedToParent.DataSource = MaybeCopyToDataTable(oAssignedChildren)
GridNotAssignedToParent.DataSource = MaybeCopyToDataTable(oNotAssignedChildren)
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

View File

@ -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

View File

@ -175,45 +175,69 @@
</data>
<data name="BarButtonAssign.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAG3RFWHRUaXRsZQBBZGQ7UGx1
cztCYXJzO1JpYmJvbjuVBjMvAAAAYElEQVQ4T92MUQqAMAxDd0Ev5am8XbTSlEwyRBwIfrzRpelrAF5h
Q7KsG5KYbceG5EeCnG3HhkQFI86HxadMFRTxJ1q85NXtAiXzEuiOzBOMOEqdQHfEhoSCOP5GcA/aDplf
q/kc1pC+AAAAAElFTkSuQmCC
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAbdEVYdFRpdGxlAEFkZDtQbHVzO0JhcnM7UmliYm9u
O5UGMy8AAABgSURBVDhP3YxRCoAwDEN3QS/lqbxdtNKUTDJEHAh+vNGl6WsAXmFDsqwbkphtx4bkR4Kc
bceGRAUjzofFp0wVFPEnWrzk1e0CJfMS6I7ME4w4Sp1Ad8SGhII4/kZwD9oOmV+r+RzWkL4AAAAASUVO
RK5CYII=
</value>
</data>
<data name="BarButtonAssign.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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==
</value>
</data>
<data name="BarButtonItem1.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="BarButtonItem1.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAjdEVYdFRpdGxlAENhbmNlbDtTdG9wO0V4aXQ7QmFy
cztSaWJib247TJaWsgAAAW5JREFUWEfFlk1KBDEUhGfmAg56JTcuHEGP4FFFFMVZz1VcxaomD57pek1e
hLj4FilSP9Dd0LtSyr8ixZlIcSZSnIkUL8+3f6LJOvhzixRr0BV4AXf13I3LuQev4OjzPVKEgeUfoIBv
kBpRM1hOLzM+gRyxEnDxALiaRiM7wpcbzNy3fb8OBi4+gTagd4Qq5/lBda0EgsvksRrboK0RqXIiRRiM
zIh0OZEiTJ6eEUPlRIowtmyNGC4nUoRZEY0YLidSRECEGuFJlRMpImSLaMRSDmRmhBQZsoF65jZgeTFV
ZoQUGRIQlRvLCJUZIUWEKKK3XWndI6SIgN5yPvPwE1XZLVKEubfc7gyPkCKMmXJjaIQUYSJR+Qn4Yk96
hBRhGCk3UiNWAi7uwVs1+oCeckONeAfdPyTX4Ksas+WW4UecwU3bQ1YCwWXCEVydKicuhyOYIcuJFC0I
8P/Qn7tosvK/5TOR4kykOBMpzqPsfgBphQ1j4i+mWAAAAABJRU5ErkJggg==
</value>
</data>
<data name="BarButtonItem2.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAJ3RFWHRUaXRsZQBSZWZyZXNo
O1JlcGVhdDtCYXJzO1JpYmJvbjtSZWxvYWTNTfbpAAAA0klEQVQ4T6WSsQ3CQBAEjUQBNGDRgXOKsMhI
yB0iR5DTBCWQkpmMfmji2X39nk7oHoEJRjrt3u2/fd+klP4iFH/Biv58Fy0YwQSeBdbU6OW+WsACHECq
cAMbEAasQA8YcgIDWBdYP4BC2ihgXxoYYrrzO6CQUbpMDumaOUQNHui8Cf1JWjQsLCTwjI8mh4/XyxJ1
9RB/Pa6K4iDNw+bi2zB138A90+CP6qQ734fY5/kGPhKuSCHva9wBhdicDyB8JAqJ2ILcWwsg857yXELx
e1LzAv/sh1p6xTM7AAAAAElFTkSuQmCC
</value>
</data>
<data name="BarButtonItem2.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
</root>

View File

@ -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

View File

@ -6,6 +6,7 @@
<xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
<xsd:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMService" />
<xsd:import namespace="http://schemas.datacontract.org/2004/07/System.Data" />
<xsd:import namespace="http://schemas.datacontract.org/2004/07/System" />
<xsd:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Modules.Filesystem" />
</xsd:schema>
</wsdl:types>

View File

@ -28,6 +28,7 @@
<MetadataFile FileName="service.xsd" MetadataType="Schema" ID="e3578761-b797-44ca-b8c5-3c9c25394c73" SourceId="1" SourceUrl="net.tcp://172.24.12.67:9000/DigitalData/Services/Main/mex" />
<MetadataFile FileName="DigitalData.Services.EDMService1.xsd" MetadataType="Schema" ID="32726e00-1240-449f-a580-881af6e8839c" SourceId="1" SourceUrl="net.tcp://172.24.12.67:9000/DigitalData/Services/Main/mex" />
<MetadataFile FileName="System.Data.xsd" MetadataType="Schema" ID="726d8c80-557e-49ba-9cfd-3da491f48c1e" SourceId="1" SourceUrl="net.tcp://172.24.12.67:9000/DigitalData/Services/Main/mex" />
<MetadataFile FileName="System.xsd" MetadataType="Schema" ID="d73cd0a9-b834-4be2-9d31-4d8175f9e00c" SourceId="1" SourceUrl="net.tcp://172.24.12.67:9000/DigitalData/Services/Main/mex" />
<MetadataFile FileName="DigitalData.Modules.Filesystem.xsd" MetadataType="Schema" ID="72dd325b-17bf-4ec7-8a3e-933c17eca5d5" SourceId="1" SourceUrl="net.tcp://172.24.12.67:9000/DigitalData/Services/Main/mex" />
</Metadata>
<Extensions>

View File

@ -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

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/System" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/System" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="DBNull">
<xs:sequence />
</xs:complexType>
<xs:element name="DBNull" nillable="true" type="tns:DBNull" />
</xs:schema>

View File

@ -133,6 +133,9 @@
<None Include="Connected Services\EDMIServiceReference\System.Data.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Connected Services\EDMIServiceReference\System.xsd">
<SubType>Designer</SubType>
</None>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>

View File

@ -2,6 +2,7 @@
<Serializable>
<DataContract>
<KnownType(GetType(DBNull))>
Public Class TableResult
<DataMember>
Public Property OK As Boolean
@ -19,6 +20,7 @@ End Class
<Serializable>
<DataContract>
<KnownType(GetType(DBNull))>
Public Class ScalarResult
<DataMember>
Public Property OK As Boolean
@ -36,6 +38,7 @@ End Class
<Serializable>
<DataContract>
<KnownType(GetType(DBNull))>
Public Class NonQueryResult
<DataMember>
Public Property OK As Boolean