TaskFlow/DD_PM_WINDREAM/frmUserKonfig_AddUsers.vb
Digital Data - Marlon Schreiber c987d877a3 MSBuildProblem_PM
2017-04-03 11:23:11 +02:00

130 lines
4.8 KiB
VB.net

Imports System.DirectoryServices
Imports System.DirectoryServices.ActiveDirectory
Imports System.DirectoryServices.AccountManagement
Public Class frmUserKonfig_AddUsers
Private Sub formUserConfig_AddUsers_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
Dim groups As List(Of String) = GetActiveDirectoryGroups()
For Each group In groups
lbGroups.Items.Add(group)
Next
Catch ex As Exception
MsgBox("Error in Load Groups:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
Cursor = Cursors.Default
End Sub
Function GetActiveDirectoryGroups() As List(Of String)
Dim groups As List(Of String) = New List(Of String)
Dim ctx As PrincipalContext = New PrincipalContext(ContextType.Domain)
Dim group As GroupPrincipal = New GroupPrincipal(ctx)
Dim srch As PrincipalSearcher = New PrincipalSearcher(group)
For Each g In srch.FindAll()
If GetUsersForGroup(g.ToString()).Count <> 0 Then
groups.Add(g.ToString)
End If
Next
Return groups
End Function
Function GetUsersForGroup(g As String) As List(Of UserPrincipal)
Dim users As List(Of UserPrincipal) = New List(Of UserPrincipal)
Dim ctx As PrincipalContext = New PrincipalContext(ContextType.Domain)
Dim group As GroupPrincipal = GroupPrincipal.FindByIdentity(ctx, g)
Dim u = group.GetMembers(True)
For Each user In u
If user.GetType().Name = "UserPrincipal" Then
users.Add(user)
End If
Next
Return users
End Function
Private Sub lbGroups_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lbGroups.SelectedIndexChanged
Dim group As String = lbGroups.SelectedItem
Dim users As List(Of UserPrincipal) = GetUsersForGroup(group)
clbUsers.Items.Clear()
For Each user In users
clbUsers.Items.Add(user)
Next
End Sub
Private Sub btnAddUsers_Click(sender As Object, e As EventArgs) Handles btnAddUsers.Click
Dim items As CheckedListBox.CheckedItemCollection = clbUsers.CheckedItems
Dim usersAdded As Integer = 0
If items.Count = 0 Then
MsgBox("Keine Benutzer ausgewählt")
Exit Sub
End If
For Each item As UserPrincipal In items
Dim user As UserPrincipal = item
Dim PRENAME As String = user.GivenName
Dim NAME As String = user.Surname
Dim USERNAME As String = user.SamAccountName.ToLower()
Dim email As String = user.EmailAddress
Dim SQL
If Not UserExists(USERNAME) Then
SQL = "INSERT INTO TBPM_USER(PRENAME, NAME, USERNAME, EMAIL) VALUES('" & PRENAME & "', '" & NAME & "', '" & USERNAME & "','" & email & "')"
If ClassDatabase.Execute_non_Query(SQL) = True Then
usersAdded = usersAdded + 1
End If
'Else
' SQL = "UPDATE TBPM_USER SET MODULE_PM = 1 WHERE UPPER(USERNAME) = UPPER('" & USERNAME & "')"
' If classDatabase.Execute_non_Query(SQL) = True Then
' usersAdded = usersAdded + 1
' End If
End If
Next
If usersAdded = 1 Then
MsgBox(usersAdded & " neuer Benutzer hinzugefügt", MsgBoxStyle.Information)
ElseIf usersAdded > 1 Then
MsgBox(usersAdded & " neue Benutzer hinzugefügt", MsgBoxStyle.Information)
ElseIf usersAdded = 0 Then
MsgBox("Es wurde kein neuer Benutzer hinzugefügt", MsgBoxStyle.Exclamation)
End If
End Sub
Private Function UserExists(username As String) As Boolean
Try
Dim SQL = "SELECT GUID FROM TBPM_USER WHERE UPPER(USERNAME) = UPPER('" & username & "')"
If ClassDatabase.Execute_Scalar(SQL, MyConnectionString) = Nothing Then
Return False
Else
Return True
End If
Catch ex As Exception
MsgBox("Error in UserExists: " & vbNewLine & ex.Message)
Return False
End Try
End Function
Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
Me.Close()
End Sub
Private Sub tbSelectEverything_Click(sender As Object, e As EventArgs) Handles tbSelectEverything.Click
For i = 0 To clbUsers.Items.Count - 1
clbUsers.SetItemChecked(i, True)
Next
End Sub
Private Sub tbSelectNone_Click(sender As Object, e As EventArgs) Handles tbSelectNone.Click
For i = 0 To clbUsers.Items.Count - 1
clbUsers.SetItemChecked(i, False)
Next
End Sub
End Class