928 lines
39 KiB
VB.net
928 lines
39 KiB
VB.net
Imports DevExpress.XtraGrid
|
|
Imports DevExpress.XtraGrid.Views.Grid
|
|
Imports DDUserManager.UserDataSet
|
|
|
|
''' <summary>
|
|
''' Anmerkungen:
|
|
''' - DateTimePicker sollten Binding auf die Text Eigenschaft erhalten, nicht auf die Value Eigenschaft:
|
|
''' https://stackoverflow.com/questions/21270697/argumentoutofrangeexception-with-data-binding-when-debugger-is-running-vs2010#28550637
|
|
''' </summary>
|
|
Public Class frmMain
|
|
Private CurrentUser As TBDD_USERRow = Nothing
|
|
Private DragDropManager As ClassDragDrop = Nothing
|
|
|
|
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|
If TBDD_USERTableAdapter.IsUserManagerAdmin(Environment.UserName) > 0 Then
|
|
Dim userRow As TBDD_USERRow = GetCurrentUserRow(Environment.UserName)
|
|
tsLabelUser.Text = $"Angemeldeter Benutzer: {userRow.USERNAME}"
|
|
CurrentUser = userRow
|
|
|
|
' Grunddaten aus Tabellen laden
|
|
' Davon abhängige Daten werden in den `focusedRowChanged`-Events der Grids geladen
|
|
LoadData()
|
|
|
|
'Spalten an Inhalte anpassen
|
|
gvUsers.BestFitColumns()
|
|
viewClients_AllClients.BestFitColumns()
|
|
viewGroups_AllGroups.BestFitColumns()
|
|
|
|
' Dragdrop Events für Grids anlegen
|
|
DragDropManager = New ClassDragDrop()
|
|
DragDropManager.AddGridView(viewGroups_AvailableUsers)
|
|
DragDropManager.AddGridView(viewGroups_AssignedUsers)
|
|
DragDropManager.AddGridView(viewModules_AvailableUsers)
|
|
DragDropManager.AddGridView(viewModules_AssignedUsers)
|
|
DragDropManager.AddGridView(viewClients_AvailableUsers)
|
|
DragDropManager.AddGridView(viewClients_AssignedUsers)
|
|
DragDropManager.AddGridView(viewClientsGroups_AssignedGroups)
|
|
DragDropManager.AddGridView(viewClientsGroups_AvailableGroups)
|
|
DragDropManager.AddGridView(viewModulesGroups_AssignedGroups)
|
|
DragDropManager.AddGridView(viewModulesGroups_AvailableGroups)
|
|
|
|
Else
|
|
MsgBox($"Der Benutzer '{Environment.UserName}' ist nicht zur Benutzerverwaltung berechtigt. {vbCrLf & vbCrLf}Bitte kontaktieren Sie den Administrator, wenn dies ein Fehler ist.", MsgBoxStyle.Critical, "UserManager")
|
|
Application.Exit()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub btnImportUsers_Click(sender As Object, e As EventArgs) Handles btnImportUsers.Click
|
|
Dim frm As New frmADImport_Users()
|
|
frm.ShowDialog()
|
|
|
|
LoadData()
|
|
End Sub
|
|
|
|
Private Sub btnImportGroups_Click(sender As Object, e As EventArgs) Handles btnImportGroups.Click
|
|
Dim frm As New frmADImport_Groups()
|
|
frm.ShowDialog()
|
|
|
|
LoadData()
|
|
End Sub
|
|
|
|
Private Sub grvwAllGroups_FocusedRowChanged(sender As Object, e As Views.Base.FocusedRowChangedEventArgs) Handles viewGroups_AllGroups.FocusedRowChanged
|
|
If e.FocusedRowHandle < 0 Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim group As TBDD_GROUPSRow = GetSelectedGroup()
|
|
|
|
labelGroups_AssignedUsers.Text = String.Format("Benutzer in Gruppe {0}:", group.NAME)
|
|
|
|
gridGroups_AssignedUsers.DataSource = GetAssignedUsersByGroupId(group.GUID)
|
|
gridGroups_AvailableUsers.DataSource = GetAvailableUsersByGroupId(group.GUID)
|
|
End Sub
|
|
|
|
Private Sub gvClients_AllClients_FocusedRowChanged(sender As Object, e As Views.Base.FocusedRowChangedEventArgs) Handles viewClients_AllClients.FocusedRowChanged
|
|
If e.FocusedRowHandle < 0 Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim client As TBDD_CLIENTRow = GetSelectedClient()
|
|
|
|
labelClients_AssignedUsers.Text = String.Format("Benutzer in Mandant {0}:", client.CLIENT_NAME)
|
|
|
|
gridClients_AssignedUsers.DataSource = GetAssignedUsersByClientId(client.GUID)
|
|
gridClients_AvailableUsers.DataSource = GetAvailableUsersByClientId(client.GUID)
|
|
End Sub
|
|
|
|
Private Sub gvModules_AllModules_FocusedRowChanged(sender As Object, e As Views.Base.FocusedRowChangedEventArgs) Handles viewModules_AllModules.FocusedRowChanged
|
|
If e.FocusedRowHandle < 0 Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim [module] As TBDD_MODULESRow = GetSelectedModule()
|
|
|
|
labelModules_AssignedUsers.Text = String.Format("Benutzer in Modul {0}:", [module].NAME)
|
|
|
|
gridModules_AssignedUsers.DataSource = GetAssignedUsersByModuleId([module].GUID)
|
|
gridModules_AvailableUsers.DataSource = GetAvailableUsersByModuleId([module].GUID)
|
|
End Sub
|
|
|
|
Private Sub viewClientsGroups_AllClients_FocusedRowChanged(sender As Object, e As Views.Base.FocusedRowChangedEventArgs) Handles viewClientsGroups_AllClients.FocusedRowChanged
|
|
If e.FocusedRowHandle < 0 Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim client As TBDD_CLIENTRow = GetSelectedClient(ItemType.Group)
|
|
|
|
labelClients_AssignedGroups.Text = String.Format("Gruppen in Mandant {0}:", client.CLIENT_NAME)
|
|
|
|
gridClientsGroups_AssignedGroups.DataSource = GetAssignedGroupsByClientId(client.GUID)
|
|
gridClientsGroups_AvailableGroups.DataSource = GetAvailableGroupsByClientId(client.GUID)
|
|
End Sub
|
|
|
|
Private Sub viewModulesGroups_AllModules_FocusedRowChanged(sender As Object, e As Views.Base.FocusedRowChangedEventArgs) Handles viewModulesGroups_AllModules.FocusedRowChanged
|
|
If e.FocusedRowHandle < 0 Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim [module] As TBDD_MODULESRow = GetSelectedModule(ItemType.Group)
|
|
|
|
labelModules_AssignedGroups.Text = String.Format("Gruppen in Modul {0}:", [module].NAME)
|
|
|
|
gridModulesGroups_AssignedGroups.DataSource = GetAssignedGroupsByModuleId([module].GUID)
|
|
gridModulesGroups_AvailableGroups.DataSource = GetAvailableGroupsByModuleId([module].GUID)
|
|
End Sub
|
|
|
|
Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) Handles ToolStripButton2.Click
|
|
LoadData()
|
|
End Sub
|
|
|
|
#Region "UI Helpers"
|
|
Private Sub UpdateSavedLabel()
|
|
If tsLabelSaved.Visible = False Then
|
|
tsLabelSaved.Visible = True
|
|
End If
|
|
|
|
tsLabelSaved.Text = $"Änderungen gespeichert - {Now.ToLongTimeString}"
|
|
|
|
Task.Run(Sub()
|
|
Threading.Thread.Sleep(5000)
|
|
tsLabelSaved.Visible = False
|
|
End Sub)
|
|
End Sub
|
|
#End Region
|
|
#Region "User Details"
|
|
Private Function GetCurrentUserRow(username As String) As TBDD_USERRow
|
|
Dim dt As DataTable = TBDD_USERTableAdapter.GetDataByUsername(username)
|
|
|
|
If dt.Rows.Count = 0 Then
|
|
Return Nothing
|
|
Else
|
|
Return dt.Rows.Item(0)
|
|
End If
|
|
End Function
|
|
|
|
Private Function GetClientsForUser(username As String) As TBDD_CLIENTDataTable
|
|
Try
|
|
Dim dt As New TBDD_CLIENTDataTable()
|
|
TBDD_CLIENTTableAdapter.FillByUsername(dt, username)
|
|
|
|
Return dt
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error in GetClientsForUser", ex)
|
|
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
|
|
Private Function GetGroupsForUser(username As String) As TBDD_GROUPSDataTable
|
|
Try
|
|
Dim dt As New TBDD_GROUPSDataTable()
|
|
TBDD_GROUPSTableAdapter.FillByUsername(dt, username)
|
|
|
|
Return dt
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error in GetGroupsForUser", ex)
|
|
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
|
|
Private Function GetModulesForUser(username As String) As TBDD_MODULESDataTable
|
|
Try
|
|
Dim dt As New TBDD_MODULESDataTable()
|
|
TBDD_MODULESTableAdapter.FillByUsername(dt, username)
|
|
|
|
Return dt
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error in GetModulesForUser", ex)
|
|
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
|
|
Private Sub TBDD_USERBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles TBDD_USERBindingNavigatorSaveItem.Click
|
|
Try
|
|
Validate()
|
|
TBDD_USERBindingSource.EndEdit()
|
|
If UserDataSet.TBDD_USER.GetChanges() Is Nothing = False Then
|
|
UserDataSet.TBDD_USER.CHANGED_WHOColumn.DefaultValue = Environment.UserName
|
|
|
|
TBDD_USERBindingSource.EndEdit()
|
|
TBDD_USERTableAdapter.Update(UserDataSet.TBDD_USER)
|
|
|
|
UpdateSavedLabel()
|
|
End If
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error while saving user", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub TBDD_GROUPSBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles TBDD_GROUPSBindingNavigatorSaveItem.Click
|
|
Try
|
|
Validate()
|
|
TBDD_GROUPSBindingSource.EndEdit()
|
|
|
|
If UserDataSet.TBDD_GROUPS.GetChanges Is Nothing = False Then
|
|
UserDataSet.TBDD_GROUPS.CHANGED_WHOColumn.DefaultValue = Environment.UserName
|
|
|
|
TBDD_GROUPSBindingSource.EndEdit()
|
|
TBDD_GROUPSTableAdapter.Update(UserDataSet.TBDD_GROUPS)
|
|
|
|
UpdateSavedLabel()
|
|
End If
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error while saving group", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub TBDD_CLIENTBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles TBDD_CLIENTBindingNavigatorSaveItem.Click
|
|
Try
|
|
Validate()
|
|
TBDD_CLIENTBindingSource.EndEdit()
|
|
|
|
If UserDataSet.TBDD_CLIENT.GetChanges Is Nothing = False Then
|
|
UserDataSet.TBDD_CLIENT.CHANGED_WHOColumn.DefaultValue = Environment.UserName
|
|
|
|
TBDD_CLIENTBindingSource.EndEdit()
|
|
TBDD_CLIENTTableAdapter.Update(UserDataSet.TBDD_CLIENT)
|
|
|
|
UpdateSavedLabel()
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error while saving client", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub TBDD_USERBindingSource_Update(sender As Object, e As EventArgs) Handles TBDD_USERBindingSource.PositionChanged, TBDD_USERBindingSource.ListChanged
|
|
If USERNAMETextBox.Text <> String.Empty Then
|
|
listGroups.DataSource = GetGroupsForUser(USERNAMETextBox.Text)
|
|
listClients.DataSource = GetClientsForUser(USERNAMETextBox.Text)
|
|
listModules.DataSource = GetModulesForUser(USERNAMETextBox.Text)
|
|
End If
|
|
End Sub
|
|
#End Region
|
|
#Region "Database Helpers"
|
|
Private Sub LoadData()
|
|
Try
|
|
TBDD_USERTableAdapter.Fill(UserDataSet.TBDD_USER)
|
|
TBDD_GROUPSTableAdapter.Fill(UserDataSet.TBDD_GROUPS)
|
|
TBDD_CLIENTTableAdapter.Fill(UserDataSet.TBDD_CLIENT)
|
|
TBDD_MODULESTableAdapter.Fill(UserDataSet.TBDD_MODULES)
|
|
|
|
TBDD_CLIENT_USERTableAdapter.Fill(UserDataSet.TBDD_CLIENT_USER)
|
|
TBDD_GROUPS_USERTableAdapter.Fill(UserDataSet.TBDD_GROUPS_USER)
|
|
TBDD_USER_MODULESTableAdapter.Fill(UserDataSet.TBDD_USER_MODULES)
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error while loading user data", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Function GetAvailableUsersByGroupId(groupId As Integer) As TBDD_USERDataTable
|
|
Try
|
|
Dim dt As New TBDD_USERDataTable()
|
|
TBDD_USERTableAdapter.FillByGroupId_NotInGroup(dt, groupId)
|
|
|
|
Return dt
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error in GetAvailableUsersByGroupId with groupId {groupId}", ex)
|
|
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
|
|
Private Function GetAssignedUsersByGroupId(groupId As Integer) As TBDD_USERDataTable
|
|
Try
|
|
Dim dt As New TBDD_USERDataTable()
|
|
TBDD_USERTableAdapter.FillByGroupId(dt, groupId)
|
|
|
|
Return dt
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error in GetAssignedUsersByGroupId with groupId {groupId}", ex)
|
|
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
|
|
Private Function GetAvailableUsersByClientId(clientId As Integer) As TBDD_USERDataTable
|
|
Try
|
|
Dim dt As New TBDD_USERDataTable()
|
|
TBDD_USERTableAdapter.FillByClientId_NotInClient(dt, clientId)
|
|
|
|
Return dt
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error in GetAvailableUsersByClientId with clientId {clientId}", ex)
|
|
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
|
|
Private Function GetAssignedUsersByClientId(clientId As Integer) As TBDD_USERDataTable
|
|
Try
|
|
Dim dt As New TBDD_USERDataTable()
|
|
TBDD_USERTableAdapter.FillByClientId(dt, clientId)
|
|
|
|
Return dt
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error in GetAssignedUsersByClientId with clientId {clientId}", ex)
|
|
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
|
|
Private Function GetAvailableUsersByModuleId(moduleId As Integer) As TBDD_USERDataTable
|
|
Try
|
|
Dim dt As New TBDD_USERDataTable()
|
|
TBDD_USERTableAdapter.FillByModuleId_NotInModule(dt, moduleId)
|
|
|
|
Return dt
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error in GetAvailableUsersByModuleId with moduleId {moduleId}", ex)
|
|
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
|
|
Private Function GetAssignedUsersByModuleId(moduleId As Integer) As TBDD_USERDataTable
|
|
Try
|
|
Dim dt As New TBDD_USERDataTable()
|
|
TBDD_USERTableAdapter.FillByModuleId(dt, moduleId)
|
|
|
|
Return dt
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error in GetAssignedUsersByModuleId with moduleId {moduleId}", ex)
|
|
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
|
|
Private Function GetAssignedGroupsByClientId(clientId As Integer) As TBDD_GROUPSDataTable
|
|
Return TBDD_GROUPSTableAdapter.GetDataByClientId(clientId)
|
|
End Function
|
|
|
|
Private Function GetAvailableGroupsByClientId(clientId As Integer) As TBDD_GROUPSDataTable
|
|
Return TBDD_GROUPSTableAdapter.GetDataByClientId_NotInClient(clientId)
|
|
End Function
|
|
|
|
Private Function GetAssignedGroupsByModuleId(moduleId As Integer) As TBDD_GROUPSDataTable
|
|
Return TBDD_GROUPSTableAdapter.GetDataByModuleId(moduleId)
|
|
End Function
|
|
|
|
Private Function GetAvailableGroupsByModuleId(moduleId As Integer) As TBDD_GROUPSDataTable
|
|
Return TBDD_GROUPSTableAdapter.GetDataByModuleId_NotInModule(moduleId)
|
|
End Function
|
|
|
|
Private Sub ReloadUsersForGroup(groupId As Integer)
|
|
Try
|
|
gridGroups_AssignedUsers.DataSource = GetAssignedUsersByGroupId(groupId)
|
|
gridGroups_AvailableUsers.DataSource = GetAvailableUsersByGroupId(groupId)
|
|
viewGroups_AvailableUsers.ClearSelection()
|
|
viewGroups_AssignedUsers.ClearSelection()
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error in ReloadUsersForGroup for groupId {groupId}", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub ReloadUsersForClient(clientId As Integer)
|
|
Try
|
|
gridClients_AssignedUsers.DataSource = GetAssignedUsersByClientId(clientId)
|
|
gridClients_AvailableUsers.DataSource = GetAvailableUsersByClientId(clientId)
|
|
viewClients_AssignedUsers.ClearSelection()
|
|
viewClients_AvailableUsers.ClearSelection()
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error in ReloadUsersForClient for clientId {clientId}", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub ReloadUsersForModule(moduleId As Integer)
|
|
Try
|
|
gridModules_AssignedUsers.DataSource = GetAssignedUsersByModuleId(moduleId)
|
|
gridModules_AvailableUsers.DataSource = GetAvailableUsersByModuleId(moduleId)
|
|
viewModules_AssignedUsers.ClearSelection()
|
|
viewModules_AvailableUsers.ClearSelection()
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error in ReloadUsersForModule for moduleId {moduleId}", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub ReloadGroupsForClient(clientId As Integer)
|
|
Try
|
|
gridClientsGroups_AssignedGroups.DataSource = GetAssignedGroupsByClientId(clientId)
|
|
gridClientsGroups_AvailableGroups.DataSource = GetAvailableGroupsByClientId(clientId)
|
|
viewClientsGroups_AssignedGroups.ClearSelection()
|
|
viewClientsGroups_AvailableGroups.ClearSelection()
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error in ReloadGroupsForClient for clientId {clientId}", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub ReloadGroupsForModule(moduleId As Integer)
|
|
Try
|
|
gridModulesGroups_AssignedGroups.DataSource = GetAssignedGroupsByModuleId(moduleId)
|
|
gridModulesGroups_AvailableGroups.DataSource = GetAvailableGroupsByModuleId(moduleId)
|
|
viewModulesGroups_AssignedGroups.ClearSelection()
|
|
viewModulesGroups_AvailableGroups.ClearSelection()
|
|
Catch ex As Exception
|
|
ShowErrorMessage($"Error in ReloadGroupsForModule for moduleId {moduleId}", ex)
|
|
End Try
|
|
End Sub
|
|
#End Region
|
|
#Region "Grid Helpers"
|
|
Enum ItemType
|
|
User = 0
|
|
Group = 1
|
|
Client = 2
|
|
[Module] = 4
|
|
End Enum
|
|
|
|
Private Function GetSelectedGroup(Optional type As ItemType = ItemType.User) As TBDD_GROUPSRow
|
|
Dim grid As GridView
|
|
|
|
Select Case type
|
|
Case ItemType.User
|
|
grid = viewGroups_AllGroups
|
|
Case Else
|
|
Return Nothing
|
|
End Select
|
|
|
|
Dim groupRowIndex = grid.GetSelectedRows().First()
|
|
Dim selectedGroupView As DataRowView = grid.GetRow(groupRowIndex)
|
|
Dim selectedGroup As TBDD_GROUPSRow = selectedGroupView.Row
|
|
|
|
Return selectedGroup
|
|
End Function
|
|
|
|
Private Function GetSelectedClient(Optional type As ItemType = ItemType.User) As TBDD_CLIENTRow
|
|
Dim grid As GridView
|
|
|
|
Select Case type
|
|
Case ItemType.User
|
|
grid = viewClients_AllClients
|
|
Case ItemType.Group
|
|
grid = viewClientsGroups_AllClients
|
|
Case Else
|
|
Return Nothing
|
|
End Select
|
|
|
|
Dim clientRowIndex = grid.GetSelectedRows().First()
|
|
Dim selectedClientView As DataRowView = grid.GetRow(clientRowIndex)
|
|
Dim selectedClient As TBDD_CLIENTRow = selectedClientView.Row
|
|
|
|
Return selectedClient
|
|
End Function
|
|
|
|
Private Function GetSelectedModule(Optional type As ItemType = ItemType.User) As TBDD_MODULESRow
|
|
Dim grid As GridView
|
|
|
|
Select Case type
|
|
Case ItemType.User
|
|
grid = viewModules_AllModules
|
|
Case ItemType.Group
|
|
grid = viewModulesGroups_AllModules
|
|
Case Else
|
|
Return Nothing
|
|
End Select
|
|
|
|
Dim moduleRowIndex = grid.GetSelectedRows().First()
|
|
Dim selectedModuleView As DataRowView = grid.GetRow(moduleRowIndex)
|
|
Dim selectedModule As TBDD_MODULESRow = selectedModuleView.Row
|
|
|
|
Return selectedModule
|
|
End Function
|
|
|
|
Private Function GetModifiedRowsFromDragDropData(grid As GridControl, data As IDataObject) As List(Of DataRow)
|
|
Dim table As DataTable = grid.DataSource
|
|
Dim modifiedRows As New List(Of DataRow)
|
|
|
|
If data.GetDataPresent(GetType(GridView)) Then
|
|
Dim view As GridView = data.GetData(GetType(GridView))
|
|
Dim selectedRows() As Integer = view.GetSelectedRows()
|
|
|
|
If selectedRows.Length = 0 Then
|
|
Return modifiedRows
|
|
End If
|
|
|
|
' Die ausgewählten Rows auslesen und gridUsersAssigned hinzufügen
|
|
For Each rowIndex As Integer In view.GetSelectedRows()
|
|
Dim rowView As DataRowView = view.GetRow(rowIndex)
|
|
Dim row As DataRow = rowView.Row
|
|
|
|
If Not table.Rows.Contains(row.Item("GUID")) Then
|
|
modifiedRows.Add(row)
|
|
End If
|
|
Next
|
|
|
|
ElseIf data.GetDataPresent(GetType(TBDD_USERRow)) Then
|
|
Dim row As TBDD_USERRow = data.GetData(GetType(TBDD_USERRow))
|
|
|
|
If Not table.Rows.Contains(row.GUID) Then
|
|
modifiedRows.Add(row)
|
|
End If
|
|
|
|
ElseIf data.GetDataPresent(GetType(TBDD_GROUPSRow)) Then
|
|
Dim row As TBDD_GROUPSRow = data.GetData(GetType(TBDD_GROUPSRow))
|
|
|
|
If Not table.Rows.Contains(row.GUID) Then
|
|
modifiedRows.Add(row)
|
|
End If
|
|
End If
|
|
|
|
Return modifiedRows
|
|
End Function
|
|
#End Region
|
|
#Region "Events for Groups"
|
|
Private Sub gridUsersAvailable_DragDrop(sender As Object, e As DragEventArgs) Handles gridGroups_AvailableUsers.DragDrop
|
|
Try
|
|
Dim grid As GridControl = sender
|
|
Dim userRowsToBeDeleted = GetModifiedRowsFromDragDropData(grid, e.Data)
|
|
Dim selectedGroup As TBDD_GROUPSRow = GetSelectedGroup()
|
|
|
|
' Zeilen in Oberfläche und in Datenbank einfügen
|
|
For Each userRow As TBDD_USERRow In userRowsToBeDeleted
|
|
TBDD_GROUPS_USERTableAdapter.Delete(userRow.GUID, selectedGroup.GUID)
|
|
Next
|
|
|
|
listGroups.DataSource = GetGroupsForUser(USERNAMETextBox.Text)
|
|
|
|
ReloadUsersForGroup(selectedGroup.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while deleting user from group", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub gridUsersAssigned_DragDrop(sender As Object, e As DragEventArgs) Handles gridGroups_AssignedUsers.DragDrop
|
|
Try
|
|
Dim grid As GridControl = sender
|
|
Dim userRowsToBeInserted = GetModifiedRowsFromDragDropData(grid, e.Data)
|
|
Dim selectedGroup As TBDD_GROUPSRow = GetSelectedGroup()
|
|
|
|
' Zeilen in Oberfläche und in Datenbank einfügen
|
|
For Each userRow As TBDD_USERRow In userRowsToBeInserted
|
|
TBDD_GROUPS_USERTableAdapter.Insert(userRow.GUID, selectedGroup.GUID, $"Assign User {userRow.USERNAME} to Group {selectedGroup.NAME}", Environment.UserName)
|
|
Next
|
|
|
|
listGroups.DataSource = GetGroupsForUser(USERNAMETextBox.Text)
|
|
|
|
' Verfügbare Benutzer aktualisieren und Checkboxen leeren
|
|
ReloadUsersForGroup(selectedGroup.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while adding user to group", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub btnGroups_AddUsers_Click(sender As Object, e As EventArgs) Handles btnGroups_AddUsers.Click
|
|
Try
|
|
Dim selectedUserHandles = viewGroups_AvailableUsers.GetSelectedRows().ToList()
|
|
Dim selectedGroup As TBDD_GROUPSRow = GetSelectedGroup()
|
|
|
|
For Each handle As Integer In selectedUserHandles
|
|
Dim rowView As DataRowView = viewGroups_AvailableUsers.GetRow(handle)
|
|
Dim userrow As TBDD_USERRow = rowView.Row
|
|
TBDD_GROUPS_USERTableAdapter.Insert(userrow.GUID, selectedGroup.GUID, $"Assign User {userrow.USERNAME} to Group {selectedGroup.NAME}", Environment.UserName)
|
|
Next
|
|
|
|
listGroups.DataSource = GetGroupsForUser(USERNAMETextBox.Text)
|
|
|
|
ReloadUsersForGroup(selectedGroup.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while adding user to group", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub btnGroups_RemoveUsers_Click(sender As Object, e As EventArgs) Handles btnGroups_RemoveUsers.Click
|
|
Try
|
|
Dim selectedUserHandles = viewGroups_AssignedUsers.GetSelectedRows().ToList()
|
|
Dim selectedGroup As TBDD_GROUPSRow = GetSelectedGroup()
|
|
|
|
For Each handle As Integer In selectedUserHandles
|
|
Dim rowView As DataRowView = viewGroups_AssignedUsers.GetRow(handle)
|
|
Dim userRow As TBDD_USERRow = rowView.Row
|
|
TBDD_GROUPS_USERTableAdapter.Delete(userRow.GUID, selectedGroup.GUID)
|
|
Next
|
|
|
|
listGroups.DataSource = GetGroupsForUser(USERNAMETextBox.Text)
|
|
|
|
ReloadUsersForGroup(selectedGroup.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while deleting user from group", ex)
|
|
End Try
|
|
End Sub
|
|
#End Region
|
|
#Region "DragDrop Events for Clients"
|
|
Private Sub gridClients_AvailableUsers_DragDrop(sender As Object, e As DragEventArgs) Handles gridClients_AvailableUsers.DragDrop
|
|
Try
|
|
Dim grid As GridControl = sender
|
|
Dim userRowsToBeDeleted = GetModifiedRowsFromDragDropData(grid, e.Data)
|
|
Dim selectedClient As TBDD_CLIENTRow = GetSelectedClient()
|
|
|
|
For Each userRow As TBDD_USERRow In userRowsToBeDeleted
|
|
TBDD_CLIENT_USERTableAdapter.Delete(userRow.GUID, selectedClient.GUID)
|
|
Next
|
|
|
|
listClients.DataSource = GetClientsForUser(USERNAMETextBox.Text)
|
|
|
|
ReloadUsersForClient(selectedClient.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while deleting user from client", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub gridClients_AssignedUsers_DragDrop(sender As Object, e As DragEventArgs) Handles gridClients_AssignedUsers.DragDrop
|
|
Try
|
|
Dim grid As GridControl = sender
|
|
Dim userRowsToBeInserted = GetModifiedRowsFromDragDropData(grid, e.Data)
|
|
Dim selectedClient As TBDD_CLIENTRow = GetSelectedClient()
|
|
|
|
' Zeilen in Oberfläche und in Datenbank einfügen
|
|
For Each userRow As TBDD_USERRow In userRowsToBeInserted
|
|
TBDD_CLIENT_USERTableAdapter.Insert(userRow.GUID, selectedClient.GUID, $"Assign User {userRow.USERNAME} to Client {selectedClient.CLIENT_NAME}", Environment.UserName)
|
|
Next
|
|
|
|
listClients.DataSource = GetClientsForUser(USERNAMETextBox.Text)
|
|
|
|
ReloadUsersForClient(selectedClient.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while adding user to client", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub btnClients_AddUsers_Click(sender As Object, e As EventArgs) Handles btnClients_AddUsers.Click
|
|
Try
|
|
Dim selectedUserHandles = viewClients_AvailableUsers.GetSelectedRows().ToList()
|
|
Dim selectedClient As TBDD_CLIENTRow = GetSelectedClient()
|
|
|
|
For Each handle As Integer In selectedUserHandles
|
|
Dim rowView As DataRowView = viewClients_AvailableUsers.GetRow(handle)
|
|
Dim userRow As TBDD_USERRow = rowView.Row
|
|
TBDD_CLIENT_USERTableAdapter.Insert(userRow.GUID, selectedClient.GUID, $"Assign User {userRow.USERNAME} to Client {selectedClient.CLIENT_NAME}", Environment.UserName)
|
|
Next
|
|
|
|
listClients.DataSource = GetClientsForUser(USERNAMETextBox.Text)
|
|
|
|
ReloadUsersForClient(selectedClient.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while adding user to client", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub btnClients_RemoveUsers_Click(sender As Object, e As EventArgs) Handles btnClients_RemoveUsers.Click
|
|
Try
|
|
Dim selectedUserHandles = viewClients_AssignedUsers.GetSelectedRows().ToList()
|
|
Dim selectedClient As TBDD_CLIENTRow = GetSelectedClient()
|
|
|
|
For Each handle As Integer In selectedUserHandles
|
|
Dim rowView As DataRowView = viewClients_AssignedUsers.GetRow(handle)
|
|
Dim userRow As TBDD_USERRow = rowView.Row
|
|
TBDD_CLIENT_USERTableAdapter.Delete(userRow.GUID, selectedClient.GUID)
|
|
Next
|
|
|
|
listClients.DataSource = GetClientsForUser(USERNAMETextBox.Text)
|
|
|
|
ReloadUsersForClient(selectedClient.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while removing user from client", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub btnClients_AddGroups_Click(sender As Object, e As EventArgs) Handles btnClients_AddGroups.Click
|
|
Try
|
|
Dim selectedGroupHandles = viewClientsGroups_AvailableGroups.GetSelectedRows().ToList()
|
|
Dim selectedClient As TBDD_CLIENTRow = GetSelectedClient(ItemType.Group)
|
|
|
|
For Each handle As Integer In selectedGroupHandles
|
|
Dim rowView As DataRowView = viewClientsGroups_AvailableGroups.GetRow(handle)
|
|
Dim groupRow As TBDD_GROUPSRow = rowView.Row
|
|
TBDD_GROUPS_CLIENTTableAdapter.Insert(selectedClient.GUID, groupRow.GUID, $"Assign Group {groupRow.NAME} to Client {selectedClient.CLIENT_NAME}", Environment.UserName)
|
|
Next
|
|
|
|
ReloadGroupsForClient(selectedClient.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while adding group to client", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub btnClients_RemoveGroups_Click(sender As Object, e As EventArgs) Handles btnClients_RemoveGroups.Click
|
|
Try
|
|
Dim selectedGroupHandles = viewClientsGroups_AssignedGroups.GetSelectedRows().ToList()
|
|
Dim selectedClient As TBDD_CLIENTRow = GetSelectedClient(ItemType.Group)
|
|
|
|
For Each handle As Integer In selectedGroupHandles
|
|
Dim rowView As DataRowView = viewClientsGroups_AssignedGroups.GetRow(handle)
|
|
Dim groupRow As TBDD_GROUPSRow = rowView.Row
|
|
|
|
TBDD_GROUPS_CLIENTTableAdapter.Delete(selectedClient.GUID, groupRow.GUID)
|
|
Next
|
|
|
|
ReloadGroupsForClient(selectedClient.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while removing group from client", ex)
|
|
End Try
|
|
End Sub
|
|
#End Region
|
|
#Region "DragDrop Events for Modules"
|
|
Private Sub gridModules_AvailableUsers_DragDrop(sender As Object, e As DragEventArgs) Handles gridModules_AvailableUsers.DragDrop
|
|
Try
|
|
Dim grid As GridControl = sender
|
|
Dim userRowsToBeDeleted = GetModifiedRowsFromDragDropData(grid, e.Data)
|
|
Dim selectedModule As TBDD_MODULESRow = GetSelectedModule()
|
|
|
|
' Sicherheitsabfrage, wenn der Benutzer sich selbst aus dem UserManager-Modul entfernen will
|
|
If userRowsToBeDeleted.Any(Function(row As TBDD_USERRow)
|
|
Return row.USERNAME = Environment.UserName
|
|
End Function) And selectedModule.SHORT_NAME = "UM" Then
|
|
Dim result = MessageBox.Show("Wollen Sie sich selbst aus dem UserManager entfernen? Sie werden danach nicht in der Lage sein, den User Manager zu benutzen!", "Sicherheitsabfrage", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
|
|
|
|
If result = DialogResult.No Then
|
|
Exit Sub
|
|
Else
|
|
MsgBox("Sie haben Sich selbst aus dem UserManager entfernt. Die Anwendung wird jetzt beendet")
|
|
Application.Exit()
|
|
End If
|
|
End If
|
|
|
|
For Each userRow As TBDD_USERRow In userRowsToBeDeleted
|
|
TBDD_USER_MODULESTableAdapter.Delete(userRow.GUID, selectedModule.GUID)
|
|
Next
|
|
|
|
listModules.DataSource = GetModulesForUser(USERNAMETextBox.Text)
|
|
|
|
ReloadUsersForModule(selectedModule.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while removing user from module", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub gridModules_AssignedUsers_DragDrop(sender As Object, e As DragEventArgs) Handles gridModules_AssignedUsers.DragDrop
|
|
Try
|
|
Dim grid As GridControl = sender
|
|
Dim userRowsToBeInserted = GetModifiedRowsFromDragDropData(grid, e.Data)
|
|
Dim selectedModule As TBDD_MODULESRow = GetSelectedModule()
|
|
|
|
' Zeilen in Oberfläche und in Datenbank einfügen
|
|
For Each userRow As TBDD_USERRow In userRowsToBeInserted
|
|
TBDD_USER_MODULESTableAdapter.Insert(userRow.GUID, selectedModule.GUID, $"Assign User {userRow.USERNAME} to Module {selectedModule.NAME}", Environment.UserName)
|
|
Next
|
|
|
|
listModules.DataSource = GetModulesForUser(USERNAMETextBox.Text)
|
|
|
|
ReloadUsersForModule(selectedModule.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while adding user to module", ex)
|
|
End Try
|
|
End Sub
|
|
Private Sub btnModules_AddUsers_Click(sender As Object, e As EventArgs) Handles btnModules_AddUsers.Click
|
|
Try
|
|
Dim selectedUserHandles = viewModules_AvailableUsers.GetSelectedRows().ToList()
|
|
Dim selectedModule As TBDD_MODULESRow = GetSelectedModule()
|
|
|
|
For Each handle As Integer In selectedUserHandles
|
|
Dim rowView As DataRowView = viewModules_AvailableUsers.GetRow(handle)
|
|
Dim userRow As TBDD_USERRow = rowView.Row
|
|
TBDD_USER_MODULESTableAdapter.Insert(userRow.GUID, selectedModule.GUID, $"Assign User {userRow.USERNAME} to Module {selectedModule.NAME}", Environment.UserName)
|
|
Next
|
|
|
|
listModules.DataSource = GetModulesForUser(USERNAMETextBox.Text)
|
|
|
|
ReloadUsersForModule(selectedModule.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while adding user to module", ex)
|
|
End Try
|
|
End Sub
|
|
Private Sub btnModules_RemoveUsers_Click(sender As Object, e As EventArgs) Handles btnModules_RemoveUsers.Click
|
|
Try
|
|
Dim selectedUserHandles = viewModules_AssignedUsers.GetSelectedRows().ToList()
|
|
Dim selectedModule As TBDD_MODULESRow = GetSelectedModule()
|
|
|
|
For Each handle As Integer In selectedUserHandles
|
|
Dim rowView As DataRowView = viewModules_AssignedUsers.GetRow(handle)
|
|
Dim userRow As TBDD_USERRow = rowView.Row
|
|
TBDD_USER_MODULESTableAdapter.Delete(userRow.GUID, selectedModule.GUID)
|
|
Next
|
|
|
|
listModules.DataSource = GetModulesForUser(USERNAMETextBox.Text)
|
|
|
|
ReloadUsersForModule(selectedModule.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while removing user from module", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub gridClientsGroups_AssignedGroups_DragDrop(sender As Object, e As DragEventArgs) Handles gridClientsGroups_AssignedGroups.DragDrop
|
|
Try
|
|
Dim grid As GridControl = sender
|
|
Dim groupRowsToBeInserted = GetModifiedRowsFromDragDropData(grid, e.Data)
|
|
Dim selectedClient As TBDD_CLIENTRow = GetSelectedClient()
|
|
|
|
For Each groupRow As TBDD_GROUPSRow In groupRowsToBeInserted
|
|
TBDD_GROUPS_CLIENTTableAdapter.Insert(selectedClient.GUID, groupRow.GUID, $"Assign Group {groupRow.NAME} to Client {selectedClient.CLIENT_NAME}", Environment.UserName)
|
|
Next
|
|
|
|
ReloadGroupsForClient(selectedClient.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while adding group to client", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub gridClientsGroups_AvailableGroups_DragDrop(sender As Object, e As DragEventArgs) Handles gridClientsGroups_AvailableGroups.DragDrop
|
|
Try
|
|
Dim grid As GridControl = sender
|
|
Dim groupRowsToBeDeleted = GetModifiedRowsFromDragDropData(grid, e.Data)
|
|
Dim selectedClient As TBDD_CLIENTRow = GetSelectedClient()
|
|
|
|
For Each groupRow As TBDD_GROUPSRow In groupRowsToBeDeleted
|
|
TBDD_GROUPS_CLIENTTableAdapter.Delete(selectedClient.GUID, groupRow.GUID)
|
|
Next
|
|
|
|
ReloadGroupsForClient(selectedClient.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while removing group from client", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub gridModulesGroups_AvailableGroups_DragDrop(sender As Object, e As DragEventArgs) Handles gridModulesGroups_AvailableGroups.DragDrop
|
|
Try
|
|
Dim grid As GridControl = sender
|
|
Dim groupRowsToBeDeleted = GetModifiedRowsFromDragDropData(grid, e.Data)
|
|
Dim selectedModule As TBDD_MODULESRow = GetSelectedModule(ItemType.Group)
|
|
|
|
For Each groupRow As TBDD_GROUPSRow In groupRowsToBeDeleted
|
|
TBDD_GROUPS_MODULESTableAdapter.Delete(selectedModule.GUID, groupRow.GUID)
|
|
Next
|
|
|
|
ReloadGroupsForModule(selectedModule.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while removing group from module", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub gridModulesGroups_AssignedGroups_DragDrop(sender As Object, e As DragEventArgs) Handles gridModulesGroups_AssignedGroups.DragDrop
|
|
Try
|
|
Dim grid As GridControl = sender
|
|
Dim groupRowsToBeInserted = GetModifiedRowsFromDragDropData(grid, e.Data)
|
|
Dim selectedModule As TBDD_MODULESRow = GetSelectedModule(ItemType.Group)
|
|
|
|
For Each groupRow As TBDD_GROUPSRow In groupRowsToBeInserted
|
|
TBDD_GROUPS_MODULESTableAdapter.Insert(selectedModule.GUID, groupRow.GUID, $"Assign Group {groupRow.NAME} to Module {selectedModule.NAME}", Environment.UserName)
|
|
Next
|
|
|
|
ReloadGroupsForModule(selectedModule.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while adding group to module", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub btnModules_AddGroups_Click(sender As Object, e As EventArgs) Handles btnModules_AddGroups.Click
|
|
Try
|
|
Dim selectedGroupHandles = viewModules_AvailableUsers.GetSelectedRows().ToList()
|
|
Dim selectedModule As TBDD_MODULESRow = GetSelectedModule(ItemType.Group)
|
|
|
|
For Each handle As Integer In selectedGroupHandles
|
|
Dim rowView As DataRowView = viewModules_AvailableUsers.GetRow(handle)
|
|
Dim groupRow As TBDD_GROUPSRow = rowView.Row
|
|
TBDD_GROUPS_MODULESTableAdapter.Insert(groupRow.GUID, selectedModule.GUID, $"Assign Group {groupRow.NAME} to Module {selectedModule.NAME}", Environment.UserName)
|
|
Next
|
|
|
|
ReloadGroupsForModule(selectedModule.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while adding group to module", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub btnModules_RemoveGroups_Click(sender As Object, e As EventArgs) Handles btnModules_RemoveGroups.Click
|
|
Try
|
|
Dim selectedGroupHandles = viewModulesGroups_AssignedGroups.GetSelectedRows().ToList()
|
|
Dim selectedModule As TBDD_MODULESRow = GetSelectedModule(ItemType.Group)
|
|
|
|
For Each handle As Integer In selectedGroupHandles
|
|
Dim rowView As DataRowView = viewModulesGroups_AssignedGroups.GetRow(handle)
|
|
Dim groupRow As TBDD_GROUPSRow = rowView.Row
|
|
TBDD_GROUPS_MODULESTableAdapter.Delete(groupRow.GUID, selectedModule.GUID)
|
|
Next
|
|
|
|
ReloadGroupsForModule(selectedModule.GUID)
|
|
UpdateSavedLabel()
|
|
Catch ex As Exception
|
|
ShowErrorMessage("Error while removing group", ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub TBDD_CLIENTBindingSource_AddingNew(sender As Object, e As System.ComponentModel.AddingNewEventArgs) Handles TBDD_CLIENTBindingSource.AddingNew
|
|
UserDataSet.TBDD_CLIENT.ADDED_WHOColumn.DefaultValue = Environment.UserName
|
|
End Sub
|
|
#End Region
|
|
|
|
Private Sub ShowErrorMessage(errorText As String, ex As Exception)
|
|
MsgBox(errorText & vbCrLf & vbCrLf & ex.Message, MsgBoxStyle.Critical, "Process Manager")
|
|
End Sub
|
|
End Class |