2018-06-11 15:35:49 +02:00

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