fix group filtering while importing users

This commit is contained in:
Jonathan Jenne 2020-10-02 14:50:25 +02:00
parent 7cd1acb356
commit 97c628dfab
2 changed files with 42 additions and 20 deletions

View File

@ -37,6 +37,7 @@ Partial Class frmADImport_Users
Me.colEMAIL = New DevExpress.XtraGrid.Columns.GridColumn()
Me.Panel1 = New System.Windows.Forms.Panel()
Me.btnImport = New System.Windows.Forms.Button()
Me.colGroupName = New DevExpress.XtraGrid.Columns.GridColumn()
CType(Me.gridAD_Groups, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.viewAD_Groups, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.gridAD_Users, System.ComponentModel.ISupportInitialize).BeginInit()
@ -58,6 +59,7 @@ Partial Class frmADImport_Users
'
'viewAD_Groups
'
Me.viewAD_Groups.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.colGroupName})
Me.viewAD_Groups.GridControl = Me.gridAD_Groups
Me.viewAD_Groups.Name = "viewAD_Groups"
Me.viewAD_Groups.OptionsBehavior.Editable = False
@ -164,6 +166,15 @@ Partial Class frmADImport_Users
Me.btnImport.Text = "Import starten"
Me.btnImport.UseVisualStyleBackColor = True
'
'colGroupName
'
Me.colGroupName.Caption = "Gruppe"
Me.colGroupName.FieldName = "Name"
Me.colGroupName.Name = "colGroupName"
Me.colGroupName.UnboundType = DevExpress.Data.UnboundColumnType.[String]
Me.colGroupName.Visible = True
Me.colGroupName.VisibleIndex = 0
'
'frmADImport_Users
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@ -199,4 +210,5 @@ Partial Class frmADImport_Users
Friend WithEvents colSELECTED As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents btnImport As Button
Friend WithEvents Panel1 As Panel
Friend WithEvents colGroupName As DevExpress.XtraGrid.Columns.GridColumn
End Class

View File

@ -18,7 +18,8 @@ Public Class frmADImport_Users
Dim oGroups = activeDirectory.ListGroups(MyConfig.Config.AdGroupFilter)
gridAD_Groups.DataSource = oGroups.Select(Function(g) g.SAMAccountName)
'gridAD_Groups.DataSource = oGroups.Select(Function(g) g.SAMAccountName)
gridAD_Groups.DataSource = oGroups
viewAD_Groups.Columns.Item(0).Caption = "Gruppe"
Catch ex As Exception
logger.Error(ex, $"Error while loading initial groups")
@ -27,29 +28,38 @@ Public Class frmADImport_Users
End Sub
Private Sub gridADGroups_FocusedRowChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles viewAD_Groups.FocusedRowChanged
Dim groupName As String = viewAD_Groups.GetRow(e.FocusedRowHandle)
Dim oGroup As ADGroup = Nothing
Try
Dim oUsers = activeDirectory.ListUsers(groupName, MyConfig.Config.AdUserFilter)
UserDataSet.TBLOCAL_ADUSERS.Clear()
For Each user As ADUser In oUsers
Dim row As TBLOCAL_ADUSERSRow = UserDataSet.TBLOCAL_ADUSERS.NewTBLOCAL_ADUSERSRow()
row.NAME = user.Surname
row.PRENAME = user.GivenName
row.USERNAME = user.samAccountName
row.EMAIL = user.Email
UserDataSet.TBLOCAL_ADUSERS.AddTBLOCAL_ADUSERSRow(row)
Next
TBLOCAL_ADUSERSBindingSource.DataSource = UserDataSet.TBLOCAL_ADUSERS
oGroup = viewAD_Groups.GetRow(e.FocusedRowHandle)
Catch ex As Exception
logger.Error(ex, $"Error while loading users for group {groupName}")
MsgBox($"Error while loading users for group {groupName}")
logger.Error(ex, $"Error while loading focused group")
MsgBox($"Error while loading focused group", MsgBoxStyle.Critical, Text)
End Try
If Not IsNothing(oGroup) Then
Try
Dim oUsers = activeDirectory.ListUsers(oGroup.Name, MyConfig.Config.AdUserFilter)
UserDataSet.TBLOCAL_ADUSERS.Clear()
For Each user As ADUser In oUsers
Dim row As TBLOCAL_ADUSERSRow = UserDataSet.TBLOCAL_ADUSERS.NewTBLOCAL_ADUSERSRow()
row.NAME = user.Surname
row.PRENAME = user.GivenName
row.USERNAME = user.samAccountName
row.EMAIL = user.Email
UserDataSet.TBLOCAL_ADUSERS.AddTBLOCAL_ADUSERSRow(row)
Next
TBLOCAL_ADUSERSBindingSource.DataSource = UserDataSet.TBLOCAL_ADUSERS
Catch ex As Exception
logger.Error(ex, $"Error while loading users for group {oGroup.Name}")
MsgBox($"Error while loading users for group {oGroup.Name}")
End Try
End If
End Sub
Private Sub btnImport_Click(sender As Object, e As EventArgs) Handles btnImport.Click