jj: update ui

This commit is contained in:
Jonathan Jenne 2018-05-17 15:50:42 +02:00
parent 0d7ad76980
commit 487a0bf5b3
27 changed files with 4220 additions and 840 deletions

View File

@ -0,0 +1,120 @@
Imports System.DirectoryServices
Imports System.DirectoryServices.AccountManagement
Public Class ClassActiveDirectory
Private Shared excludedGroupNames As New List(Of String) From {
"Abgelehnte",
"DHCP",
"Distributed COM",
"Dns",
"Domänen-Gäste",
"Domänencomput",
"Druck",
"Einstellungen eingehender",
"Ereignis",
"Gäst",
"Hyper-V",
"IIS_",
"Klonbare",
"Konten-Oper",
"Kryptografie",
"Leistungs",
"Netzwerkskon",
"PrivUser",
"Protected User",
"Prä-Windows",
"RAS- und IAS-Server",
"RDS-",
"Remoteverwaltungs",
"Replikations",
"Reporting",
"Richtlinien-Ersteller",
"SQLAccess",
"Schreibgeschützte Domänen",
"Server-Operatore",
"Sicherungs",
"Terminalserver-Liz",
"WinRMR",
"Windows-Auth",
"Zertifikat",
"Zugriffssteuerungs",
"Zulässige"
}
Public Shared Function GetActiveDirectoryGroups(samAccountName As String) As List(Of String)
Dim groups As New List(Of String)
Dim adRoot As New DirectoryEntry() With {
.AuthenticationType = AuthenticationTypes.Secure
}
Dim user As DirectoryEntry = FindUser(adRoot, samAccountName)
If IsNothing(user) Then
MsgBox($"Benutzer {samAccountName} wurde nicht in der Active Directory gefunden!")
Return groups
End If
user.RefreshCache(New String() {"tokenGroups"})
For Each tokenGroup As Byte() In user.Properties("tokenGroups")
Dim groupName As String = GetGroupNameFromTokenGroupEntry(adRoot, tokenGroup)
If Not IsNothing(groupName) Then
Dim isValidGroup As Boolean = excludedGroupNames.Where(Function(excludedGroup) Not groupName.StartsWith(excludedGroup)).Any()
If isValidGroup Then
groups.Add(groupName)
End If
End If
Next
Return groups
End Function
Public Shared Function GetActiveDirectoryUsersForGroup(groupName As String) As List(Of UserPrincipal)
Dim users As New List(Of UserPrincipal)
Using context As New PrincipalContext(ContextType.Domain)
Using group As GroupPrincipal = GroupPrincipal.FindByIdentity(context, IdentityType.Name, groupName)
Using members = group.GetMembers(True)
For Each member As UserPrincipal In members
If TypeOf member Is UserPrincipal Then
users.Add(member)
End If
Next
End Using
End Using
End Using
Return users
End Function
Private Shared Function GetGroupNameFromTokenGroupEntry(rootEntry As DirectoryEntry, tokenGroup As Byte())
Dim sID As New Security.Principal.SecurityIdentifier(tokenGroup, 0)
Dim sIDSearch = New DirectorySearcher(rootEntry, $"(objectSid={sID.Value})", New String() {"name"})
Dim sIDResult = sIDSearch.FindOne()
If IsNothing(sIDResult) Then
Return Nothing
Else
Return sIDResult.Properties("name").Item(0).ToString()
End If
End Function
Private Shared Function FindUser(rootEntry As DirectoryEntry, samAccountName As String) As DirectoryEntry
Dim userSearch = New DirectorySearcher(
rootEntry,
$"(samAccountName={samAccountName})",
New String() {"displayName"}
)
Dim result = userSearch.FindOne()
If IsNothing(result) Then
Return Nothing
Else
Return result.GetDirectoryEntry()
End If
End Function
End Class

View File

@ -87,10 +87,17 @@
</ItemGroup>
<ItemGroup>
<Compile Include="ApplicationEvents.vb" />
<Compile Include="frmADImport.Designer.vb">
<DependentUpon>frmADImport.vb</DependentUpon>
<Compile Include="ClassActiveDirectory.vb" />
<Compile Include="frmADImport_Groups.Designer.vb">
<DependentUpon>frmADImport_Groups.vb</DependentUpon>
</Compile>
<Compile Include="frmADImport.vb">
<Compile Include="frmADImport_Groups.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmADImport_Users.Designer.vb">
<DependentUpon>frmADImport_Users.vb</DependentUpon>
</Compile>
<Compile Include="frmADImport_Users.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmMain.vb">
@ -125,8 +132,11 @@
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="frmADImport.resx">
<DependentUpon>frmADImport.vb</DependentUpon>
<EmbeddedResource Include="frmADImport_Groups.resx">
<DependentUpon>frmADImport_Groups.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmADImport_Users.resx">
<DependentUpon>frmADImport_Users.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmMain.resx">
<DependentUpon>frmMain.vb</DependentUpon>
@ -134,9 +144,9 @@
<EmbeddedResource Include="My Project\licenses.licx" />
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
@ -180,5 +190,23 @@
<ItemGroup>
<None Include="Resources\user_go.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\key.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\group_go.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\arrow_right.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\arrow_left_red.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\disk.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\cog.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

View File

@ -60,6 +60,26 @@ Namespace My.Resources
End Set
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property arrow_left_red() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("arrow_left_red", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property arrow_right() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("arrow_right", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
'''</summary>
@ -70,6 +90,26 @@ Namespace My.Resources
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property cog() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("cog", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property disk() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("disk", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
'''</summary>
@ -80,6 +120,26 @@ Namespace My.Resources
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property group_go() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("group_go", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property key() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("key", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
'''</summary>

View File

@ -118,22 +118,40 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="group" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\group.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="user_add" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\user_add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="user" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\user.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="key" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\key.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="book" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\book.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="plugin" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\plugin.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="group_go" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\group_go.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="user_go" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\user_go.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="user" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\user.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="group" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\group.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="disk" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\disk.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="arrow_left_red" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow_left_red.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="plugin" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\plugin.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="arrow_right" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow_right.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="cog" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\cog.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 B

View File

@ -0,0 +1,76 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary>
''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Class Main
Private Shared resourceMan As Global.System.Resources.ResourceManager
Private Shared resourceCulture As Global.System.Globalization.CultureInfo
<Global.System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")> _
Friend Sub New()
MyBase.New
End Sub
'''<summary>
''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Shared ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("DDUserManager.Main", GetType(Main).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Shared Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
'''<summary>
''' Sucht eine lokalisierte Zeichenfolge, die Zugeordnete Benutzer zu Gruppe {0}: ähnelt.
'''</summary>
Friend Shared ReadOnly Property assined_users_to_group_label() As String
Get
Return ResourceManager.GetString("assined_users_to_group_label", resourceCulture)
End Get
End Property
End Class
End Namespace

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="assined_users_to_group_label" xml:space="preserve">
<value>Zugeordnete Benutzer zu Gruppe {0}:</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +1,2 @@
Partial Class UserDataSet
End Class
Namespace UserDataSetTableAdapters
Partial Public Class TBDD_MODULESTableAdapter
End Class
Partial Public Class TBDD_USERTableAdapter
End Class
Partial Public Class TBDD_GROUPS_USERTableAdapter
End Class
End Namespace
Namespace UserDataSetTableAdapters
Partial Public Class TBDD_MODULESTableAdapter
End Class
End Namespace

View File

@ -9,11 +9,9 @@
<TableUISetting Name="TBDD_USER">
<ColumnUISettings>
<ColumnUISetting Name="DATE_FORMAT">
<ControlSettings>
<ControlSetting ArtifactName="Microsoft:System.Windows.Forms:Form">
<ControlSettings><ControlSetting ArtifactName="Microsoft:System.Windows.Forms:Form" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<BindableControlInfo Name="ComboBox" Type="System.Windows.Forms.ComboBox" AssemblyName="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</ControlSetting>
</ControlSettings>
</ControlSetting></ControlSettings>
</ColumnUISetting>
</ColumnUISettings>
</TableUISetting>

View File

@ -12,11 +12,13 @@
<DbSource ConnectionRef="DD_ECMConnectionString (MySettings)" DbObjectName="DD_ECM_TEST.dbo.TBDD_USER_GROUPS" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetData" UserSourceName="Fill">
<DeleteCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>DELETE FROM [TBDD_USER_GROUPS] WHERE (([GUID] = @Original_GUID) AND ((@IsNull_NAME = 1 AND [NAME] IS NULL) OR ([NAME] = @Original_NAME)) AND ((@IsNull_COMMENT = 1 AND [COMMENT] IS NULL) OR ([COMMENT] = @Original_COMMENT)) AND ((@IsNull_ADDED_WHO = 1 AND [ADDED_WHO] IS NULL) OR ([ADDED_WHO] = @Original_ADDED_WHO)) AND ((@IsNull_ADDED_WHEN = 1 AND [ADDED_WHEN] IS NULL) OR ([ADDED_WHEN] = @Original_ADDED_WHEN)) AND ((@IsNull_CHANGED_WHO = 1 AND [CHANGED_WHO] IS NULL) OR ([CHANGED_WHO] = @Original_CHANGED_WHO)) AND ((@IsNull_CHANGED_WHEN = 1 AND [CHANGED_WHEN] IS NULL) OR ([CHANGED_WHEN] = @Original_CHANGED_WHEN)))</CommandText>
<CommandText>DELETE FROM [TBDD_USER_GROUPS] WHERE (([GUID] = @Original_GUID) AND ((@IsNull_NAME = 1 AND [NAME] IS NULL) OR ([NAME] = @Original_NAME)) AND ([INTERNAL] = @Original_INTERNAL) AND ([AD_SYNC] = @Original_AD_SYNC) AND ((@IsNull_COMMENT = 1 AND [COMMENT] IS NULL) OR ([COMMENT] = @Original_COMMENT)) AND ((@IsNull_ADDED_WHO = 1 AND [ADDED_WHO] IS NULL) OR ([ADDED_WHO] = @Original_ADDED_WHO)) AND ((@IsNull_ADDED_WHEN = 1 AND [ADDED_WHEN] IS NULL) OR ([ADDED_WHEN] = @Original_ADDED_WHEN)) AND ((@IsNull_CHANGED_WHO = 1 AND [CHANGED_WHO] IS NULL) OR ([CHANGED_WHO] = @Original_CHANGED_WHO)) AND ((@IsNull_CHANGED_WHEN = 1 AND [CHANGED_WHEN] IS NULL) OR ([CHANGED_WHEN] = @Original_CHANGED_WHEN)) AND ((@IsNull_ECM_FK_ID = 1 AND [ECM_FK_ID] IS NULL) OR ([ECM_FK_ID] = @Original_ECM_FK_ID)) AND ([ACTIVE] = @Original_ACTIVE))</CommandText>
<Parameters>
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@Original_GUID" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="GUID" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_NAME" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="NAME" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_NAME" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="NAME" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Boolean" Direction="Input" ParameterName="@Original_INTERNAL" Precision="0" ProviderType="Bit" Scale="0" Size="0" SourceColumn="INTERNAL" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Boolean" Direction="Input" ParameterName="@Original_AD_SYNC" Precision="0" ProviderType="Bit" Scale="0" Size="0" SourceColumn="AD_SYNC" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_COMMENT" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="COMMENT" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_COMMENT" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="COMMENT" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_ADDED_WHO" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="ADDED_WHO" SourceColumnNullMapping="true" SourceVersion="Original" />
@ -27,44 +29,51 @@
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_CHANGED_WHO" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="CHANGED_WHO" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_CHANGED_WHEN" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="CHANGED_WHEN" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="DateTime" Direction="Input" ParameterName="@Original_CHANGED_WHEN" Precision="0" ProviderType="DateTime" Scale="0" Size="0" SourceColumn="CHANGED_WHEN" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_ECM_FK_ID" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="ECM_FK_ID" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@Original_ECM_FK_ID" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="ECM_FK_ID" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Boolean" Direction="Input" ParameterName="@Original_ACTIVE" Precision="0" ProviderType="Bit" Scale="0" Size="0" SourceColumn="ACTIVE" SourceColumnNullMapping="false" SourceVersion="Original" />
</Parameters>
</DbCommand>
</DeleteCommand>
<InsertCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>INSERT INTO [TBDD_USER_GROUPS] ([NAME], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (@NAME, @COMMENT, @ADDED_WHO, @ADDED_WHEN, @CHANGED_WHO, @CHANGED_WHEN);
SELECT GUID, NAME, COMMENT, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN FROM TBDD_USER_GROUPS WHERE (GUID = SCOPE_IDENTITY())</CommandText>
<DbCommand CommandType="Text" ModifiedByUser="true">
<CommandText>INSERT INTO TBDD_USER_GROUPS
(NAME, ADDED_WHO, AD_SYNC, INTERNAL, ACTIVE)
VALUES (@NAME,@ADDED_WHO, 1, 0, 1);
SELECT GUID, NAME, INTERNAL, AD_SYNC, COMMENT, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN, ECM_FK_ID, ACTIVE FROM TBDD_USER_GROUPS WHERE (GUID = SCOPE_IDENTITY())</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@NAME" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="NAME" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@COMMENT" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="COMMENT" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@ADDED_WHO" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="ADDED_WHO" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="DateTime" Direction="Input" ParameterName="@ADDED_WHEN" Precision="0" ProviderType="DateTime" Scale="0" Size="0" SourceColumn="ADDED_WHEN" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@CHANGED_WHO" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="CHANGED_WHO" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="DateTime" Direction="Input" ParameterName="@CHANGED_WHEN" Precision="0" ProviderType="DateTime" Scale="0" Size="0" SourceColumn="CHANGED_WHEN" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="NAME" ColumnName="NAME" DataSourceName="DD_ECM_TEST.dbo.TBDD_USER_GROUPS" DataTypeServer="varchar(50)" DbType="AnsiString" Direction="Input" ParameterName="@NAME" Precision="0" ProviderType="VarChar" Scale="0" Size="50" SourceColumn="NAME" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="ADDED_WHO" ColumnName="ADDED_WHO" DataSourceName="DD_ECM_TEST.dbo.TBDD_USER_GROUPS" DataTypeServer="varchar(50)" DbType="AnsiString" Direction="Input" ParameterName="@ADDED_WHO" Precision="0" ProviderType="VarChar" Scale="0" Size="50" SourceColumn="ADDED_WHO" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</InsertCommand>
<SelectCommand>
<DbCommand CommandType="Text" ModifiedByUser="true">
<CommandText>SELECT TBDD_USER_GROUPS.*
<CommandText>SELECT GUID, NAME, INTERNAL, AD_SYNC, COMMENT, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN, ECM_FK_ID, ACTIVE
FROM TBDD_USER_GROUPS</CommandText>
<Parameters />
</DbCommand>
</SelectCommand>
<UpdateCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>UPDATE [TBDD_USER_GROUPS] SET [NAME] = @NAME, [COMMENT] = @COMMENT, [ADDED_WHO] = @ADDED_WHO, [ADDED_WHEN] = @ADDED_WHEN, [CHANGED_WHO] = @CHANGED_WHO, [CHANGED_WHEN] = @CHANGED_WHEN WHERE (([GUID] = @Original_GUID) AND ((@IsNull_NAME = 1 AND [NAME] IS NULL) OR ([NAME] = @Original_NAME)) AND ((@IsNull_COMMENT = 1 AND [COMMENT] IS NULL) OR ([COMMENT] = @Original_COMMENT)) AND ((@IsNull_ADDED_WHO = 1 AND [ADDED_WHO] IS NULL) OR ([ADDED_WHO] = @Original_ADDED_WHO)) AND ((@IsNull_ADDED_WHEN = 1 AND [ADDED_WHEN] IS NULL) OR ([ADDED_WHEN] = @Original_ADDED_WHEN)) AND ((@IsNull_CHANGED_WHO = 1 AND [CHANGED_WHO] IS NULL) OR ([CHANGED_WHO] = @Original_CHANGED_WHO)) AND ((@IsNull_CHANGED_WHEN = 1 AND [CHANGED_WHEN] IS NULL) OR ([CHANGED_WHEN] = @Original_CHANGED_WHEN)));
SELECT GUID, NAME, COMMENT, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN FROM TBDD_USER_GROUPS WHERE (GUID = @GUID)</CommandText>
<CommandText>UPDATE [TBDD_USER_GROUPS] SET [NAME] = @NAME, [INTERNAL] = @INTERNAL, [AD_SYNC] = @AD_SYNC, [COMMENT] = @COMMENT, [ADDED_WHO] = @ADDED_WHO, [ADDED_WHEN] = @ADDED_WHEN, [CHANGED_WHO] = @CHANGED_WHO, [CHANGED_WHEN] = @CHANGED_WHEN, [ECM_FK_ID] = @ECM_FK_ID, [ACTIVE] = @ACTIVE WHERE (([GUID] = @Original_GUID) AND ((@IsNull_NAME = 1 AND [NAME] IS NULL) OR ([NAME] = @Original_NAME)) AND ([INTERNAL] = @Original_INTERNAL) AND ([AD_SYNC] = @Original_AD_SYNC) AND ((@IsNull_COMMENT = 1 AND [COMMENT] IS NULL) OR ([COMMENT] = @Original_COMMENT)) AND ((@IsNull_ADDED_WHO = 1 AND [ADDED_WHO] IS NULL) OR ([ADDED_WHO] = @Original_ADDED_WHO)) AND ((@IsNull_ADDED_WHEN = 1 AND [ADDED_WHEN] IS NULL) OR ([ADDED_WHEN] = @Original_ADDED_WHEN)) AND ((@IsNull_CHANGED_WHO = 1 AND [CHANGED_WHO] IS NULL) OR ([CHANGED_WHO] = @Original_CHANGED_WHO)) AND ((@IsNull_CHANGED_WHEN = 1 AND [CHANGED_WHEN] IS NULL) OR ([CHANGED_WHEN] = @Original_CHANGED_WHEN)) AND ((@IsNull_ECM_FK_ID = 1 AND [ECM_FK_ID] IS NULL) OR ([ECM_FK_ID] = @Original_ECM_FK_ID)) AND ([ACTIVE] = @Original_ACTIVE));
SELECT GUID, NAME, INTERNAL, AD_SYNC, COMMENT, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN, ECM_FK_ID, ACTIVE FROM TBDD_USER_GROUPS WHERE (GUID = @GUID)</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@NAME" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="NAME" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Boolean" Direction="Input" ParameterName="@INTERNAL" Precision="0" ProviderType="Bit" Scale="0" Size="0" SourceColumn="INTERNAL" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Boolean" Direction="Input" ParameterName="@AD_SYNC" Precision="0" ProviderType="Bit" Scale="0" Size="0" SourceColumn="AD_SYNC" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@COMMENT" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="COMMENT" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@ADDED_WHO" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="ADDED_WHO" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="DateTime" Direction="Input" ParameterName="@ADDED_WHEN" Precision="0" ProviderType="DateTime" Scale="0" Size="0" SourceColumn="ADDED_WHEN" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@CHANGED_WHO" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="CHANGED_WHO" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="DateTime" Direction="Input" ParameterName="@CHANGED_WHEN" Precision="0" ProviderType="DateTime" Scale="0" Size="0" SourceColumn="CHANGED_WHEN" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@ECM_FK_ID" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="ECM_FK_ID" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Boolean" Direction="Input" ParameterName="@ACTIVE" Precision="0" ProviderType="Bit" Scale="0" Size="0" SourceColumn="ACTIVE" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@Original_GUID" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="GUID" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_NAME" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="NAME" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_NAME" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="NAME" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Boolean" Direction="Input" ParameterName="@Original_INTERNAL" Precision="0" ProviderType="Bit" Scale="0" Size="0" SourceColumn="INTERNAL" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Boolean" Direction="Input" ParameterName="@Original_AD_SYNC" Precision="0" ProviderType="Bit" Scale="0" Size="0" SourceColumn="AD_SYNC" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_COMMENT" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="COMMENT" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_COMMENT" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="COMMENT" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_ADDED_WHO" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="ADDED_WHO" SourceColumnNullMapping="true" SourceVersion="Original" />
@ -75,6 +84,9 @@ SELECT GUID, NAME, COMMENT, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN FRO
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_CHANGED_WHO" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="CHANGED_WHO" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_CHANGED_WHEN" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="CHANGED_WHEN" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="DateTime" Direction="Input" ParameterName="@Original_CHANGED_WHEN" Precision="0" ProviderType="DateTime" Scale="0" Size="0" SourceColumn="CHANGED_WHEN" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_ECM_FK_ID" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="ECM_FK_ID" SourceColumnNullMapping="true" SourceVersion="Original" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@Original_ECM_FK_ID" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="ECM_FK_ID" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Boolean" Direction="Input" ParameterName="@Original_ACTIVE" Precision="0" ProviderType="Bit" Scale="0" Size="0" SourceColumn="ACTIVE" SourceColumnNullMapping="false" SourceVersion="Original" />
<Parameter AllowDbNull="false" AutogeneratedName="GUID" ColumnName="GUID" DataSourceName="DD_ECM_TEST.dbo.TBDD_USER_GROUPS" DataTypeServer="int" DbType="Int32" Direction="Input" ParameterName="@GUID" Precision="0" ProviderType="Int" Scale="0" Size="4" SourceColumn="GUID" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
@ -89,22 +101,34 @@ SELECT GUID, NAME, COMMENT, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN FRO
<Mapping SourceColumn="ADDED_WHEN" DataSetColumn="ADDED_WHEN" />
<Mapping SourceColumn="CHANGED_WHO" DataSetColumn="CHANGED_WHO" />
<Mapping SourceColumn="CHANGED_WHEN" DataSetColumn="CHANGED_WHEN" />
<Mapping SourceColumn="INTERNAL" DataSetColumn="INTERNAL" />
<Mapping SourceColumn="AD_SYNC" DataSetColumn="AD_SYNC" />
<Mapping SourceColumn="ECM_FK_ID" DataSetColumn="ECM_FK_ID" />
<Mapping SourceColumn="ACTIVE" DataSetColumn="ACTIVE" />
</Mappings>
<Sources>
<DbSource ConnectionRef="DD_ECMConnectionString (MySettings)" DbObjectName="DD_ECM_TEST.dbo.TBDD_USER_GROUPS" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="FillByUsername" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetDataByUsername" GeneratorSourceName="FillByUsername" GetMethodModifier="Public" GetMethodName="GetDataByUsername" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataByUsername" UserSourceName="FillByUsername">
<SelectCommand>
<DbCommand CommandType="Text" ModifiedByUser="false">
<CommandText>SELECT T2.GUID, T2.NAME, T2.COMMENT, T2.ADDED_WHO, T2.ADDED_WHEN, T2.CHANGED_WHO, T2.CHANGED_WHEN
FROM TBDD_GROUPS_USER AS T1 INNER JOIN
TBDD_USER_GROUPS AS T2 ON T1.GROUP_ID = T2.GUID INNER JOIN
TBDD_USER AS T3 ON T1.USER_ID = T3.GUID
WHERE (T3.USERNAME = @USERNAME)</CommandText>
<CommandText>SELECT T2.ACTIVE, T2.ADDED_WHEN, T2.ADDED_WHO, T2.AD_SYNC, T2.CHANGED_WHEN, T2.CHANGED_WHO, T2.COMMENT, T2.ECM_FK_ID, T2.GUID, T2.INTERNAL, T2.NAME FROM TBDD_GROUPS_USER AS T1 INNER JOIN TBDD_USER_GROUPS AS T2 ON T1.GROUP_ID = T2.GUID INNER JOIN TBDD_USER AS T3 ON T1.USER_ID = T3.GUID WHERE (T3.USERNAME = @USERNAME)</CommandText>
<Parameters>
<Parameter AllowDbNull="false" AutogeneratedName="USERNAME" ColumnName="USERNAME" DataSourceName="" DataTypeServer="varchar(50)" DbType="AnsiString" Direction="Input" ParameterName="@USERNAME" Precision="0" ProviderType="VarChar" Scale="0" Size="50" SourceColumn="USERNAME" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
<DbSource ConnectionRef="DD_ECMConnectionString (MySettings)" DbObjectName="DD_ECM_TEST.dbo.TBDD_USER_GROUPS" DbObjectType="Table" GenerateShortCommands="true" GeneratorSourceName="GroupExists" Modifier="Public" Name="GroupExists" QueryType="Scalar" ScalarCallRetval="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataBy" UserSourceName="GroupExists">
<SelectCommand>
<DbCommand CommandType="Text" ModifiedByUser="true">
<CommandText>SELECT GUID
FROM TBDD_USER_GROUPS
WHERE (NAME = @NAME)</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="NAME" ColumnName="NAME" DataSourceName="DD_ECM_TEST.dbo.TBDD_USER_GROUPS" DataTypeServer="varchar(50)" DbType="AnsiString" Direction="Input" ParameterName="@NAME" Precision="0" ProviderType="VarChar" Scale="0" Size="50" SourceColumn="NAME" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</Sources>
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="TBDD_GROUPS_USERTableAdapter" GeneratorDataComponentClassName="TBDD_GROUPS_USERTableAdapter" Name="TBDD_GROUPS_USER" UserDataComponentName="TBDD_GROUPS_USERTableAdapter">
@ -903,7 +927,7 @@ WHERE (USERNAME = @USERNAME)</CommandText>
</DbCommand>
</SelectCommand>
</DbSource>
<DbSource ConnectionRef="DD_ECMConnectionString (MySettings)" DbObjectName="" DbObjectType="Unknown" GenerateShortCommands="true" GeneratorSourceName="InsertUser" Modifier="Public" Name="InsertUser" QueryType="NoData" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataBy2" UserSourceName="InsertUser">
<DbSource ConnectionRef="DD_ECMConnectionString (MySettings)" DbObjectName="" DbObjectType="Unknown" GenerateShortCommands="true" GeneratorSourceName="InsertUser" Modifier="Public" Name="InsertUser" QueryType="NoData" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataBy" UserSourceName="InsertUser">
<InsertCommand>
<DbCommand CommandType="Text" ModifiedByUser="true">
<CommandText>INSERT INTO TBDD_USER
@ -919,7 +943,7 @@ VALUES (@PRENAME,@NAME,@USERNAME,@EMAIL,@ADDED_WHO)</CommandText>
</DbCommand>
</InsertCommand>
</DbSource>
<DbSource ConnectionRef="DD_ECMConnectionString (MySettings)" DbObjectName="DD_ECM_TEST.dbo.TBDD_USER" DbObjectType="Table" GenerateShortCommands="true" GeneratorSourceName="IsUserManagerAdmin" Modifier="Public" Name="IsUserManagerAdmin" QueryType="Scalar" ScalarCallRetval="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataBy" UserSourceName="IsUserManagerAdmin">
<DbSource ConnectionRef="DD_ECMConnectionString (MySettings)" DbObjectName="DD_ECM_TEST.dbo.TBDD_USER" DbObjectType="Table" GenerateShortCommands="true" GeneratorSourceName="IsUserManagerAdmin" Modifier="Public" Name="IsUserManagerAdmin" QueryType="Scalar" ScalarCallRetval="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataBy1" UserSourceName="IsUserManagerAdmin">
<SelectCommand>
<DbCommand CommandType="Text" ModifiedByUser="true">
<CommandText>SELECT T.GUID FROM TBDD_USER T
@ -932,7 +956,7 @@ WHERE T.USERNAME = @USERNAME AND T2.IS_ADMIN = 1 AND T3.SHORT_NAME = 'UM'</Comma
</DbCommand>
</SelectCommand>
</DbSource>
<DbSource ConnectionRef="DD_ECMConnectionString (MySettings)" DbObjectName="DD_ECM_TEST.dbo.TBDD_USER" DbObjectType="Table" GenerateShortCommands="true" GeneratorSourceName="UserExists" Modifier="Public" Name="UserExists" QueryType="Scalar" ScalarCallRetval="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataBy1" UserSourceName="UserExists">
<DbSource ConnectionRef="DD_ECMConnectionString (MySettings)" DbObjectName="DD_ECM_TEST.dbo.TBDD_USER" DbObjectType="Table" GenerateShortCommands="true" GeneratorSourceName="UserExists" Modifier="Public" Name="UserExists" QueryType="Scalar" ScalarCallRetval="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataBy2" UserSourceName="UserExists">
<SelectCommand>
<DbCommand CommandType="Text" ModifiedByUser="true">
<CommandText>SELECT GUID FROM TBDD_USER WHERE USERNAME = @USERNAME</CommandText>
@ -952,7 +976,7 @@ WHERE T.USERNAME = @USERNAME AND T2.IS_ADMIN = 1 AND T3.SHORT_NAME = 'UM'</Comma
<xs:element name="UserDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:EnableTableAdapterManager="true" msprop:Generator_DataSetName="UserDataSet" msprop:Generator_UserDSName="UserDataSet">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="TBDD_USER_GROUPS" msprop:Generator_TableClassName="TBDD_USER_GROUPSDataTable" msprop:Generator_TableVarName="tableTBDD_USER_GROUPS" msprop:Generator_RowChangedName="TBDD_USER_GROUPSRowChanged" msprop:Generator_TablePropName="TBDD_USER_GROUPS" msprop:Generator_RowDeletingName="TBDD_USER_GROUPSRowDeleting" msprop:Generator_RowChangingName="TBDD_USER_GROUPSRowChanging" msprop:Generator_RowEvHandlerName="TBDD_USER_GROUPSRowChangeEventHandler" msprop:Generator_RowDeletedName="TBDD_USER_GROUPSRowDeleted" msprop:Generator_RowClassName="TBDD_USER_GROUPSRow" msprop:Generator_UserTableName="TBDD_USER_GROUPS" msprop:Generator_RowEvArgName="TBDD_USER_GROUPSRowChangeEvent">
<xs:element name="TBDD_USER_GROUPS" msprop:Generator_TableClassName="TBDD_USER_GROUPSDataTable" msprop:Generator_TableVarName="tableTBDD_USER_GROUPS" msprop:Generator_TablePropName="TBDD_USER_GROUPS" msprop:Generator_RowDeletingName="TBDD_USER_GROUPSRowDeleting" msprop:Generator_RowChangingName="TBDD_USER_GROUPSRowChanging" msprop:Generator_RowEvHandlerName="TBDD_USER_GROUPSRowChangeEventHandler" msprop:Generator_RowDeletedName="TBDD_USER_GROUPSRowDeleted" msprop:Generator_UserTableName="TBDD_USER_GROUPS" msprop:Generator_RowChangedName="TBDD_USER_GROUPSRowChanged" msprop:Generator_RowEvArgName="TBDD_USER_GROUPSRowChangeEvent" msprop:Generator_RowClassName="TBDD_USER_GROUPSRow">
<xs:complexType>
<xs:sequence>
<xs:element name="GUID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnGUID" msprop:Generator_ColumnPropNameInRow="GUID" msprop:Generator_ColumnPropNameInTable="GUIDColumn" msprop:Generator_UserColumnName="GUID" type="xs:int" />
@ -986,10 +1010,14 @@ WHERE T.USERNAME = @USERNAME AND T2.IS_ADMIN = 1 AND T3.SHORT_NAME = 'UM'</Comma
</xs:simpleType>
</xs:element>
<xs:element name="CHANGED_WHEN" msprop:Generator_ColumnVarNameInTable="columnCHANGED_WHEN" msprop:Generator_ColumnPropNameInRow="CHANGED_WHEN" msprop:Generator_ColumnPropNameInTable="CHANGED_WHENColumn" msprop:Generator_UserColumnName="CHANGED_WHEN" type="xs:dateTime" minOccurs="0" />
<xs:element name="INTERNAL" msprop:Generator_ColumnVarNameInTable="columnINTERNAL" msprop:Generator_ColumnPropNameInRow="INTERNAL" msprop:Generator_ColumnPropNameInTable="INTERNALColumn" msprop:Generator_UserColumnName="INTERNAL" type="xs:boolean" default="false" />
<xs:element name="AD_SYNC" msprop:Generator_ColumnVarNameInTable="columnAD_SYNC" msprop:Generator_ColumnPropNameInRow="AD_SYNC" msprop:Generator_ColumnPropNameInTable="AD_SYNCColumn" msprop:Generator_UserColumnName="AD_SYNC" type="xs:boolean" />
<xs:element name="ECM_FK_ID" msprop:Generator_ColumnVarNameInTable="columnECM_FK_ID" msprop:Generator_ColumnPropNameInRow="ECM_FK_ID" msprop:Generator_ColumnPropNameInTable="ECM_FK_IDColumn" msprop:Generator_UserColumnName="ECM_FK_ID" type="xs:int" minOccurs="0" />
<xs:element name="ACTIVE" msprop:Generator_ColumnVarNameInTable="columnACTIVE" msprop:Generator_ColumnPropNameInRow="ACTIVE" msprop:Generator_ColumnPropNameInTable="ACTIVEColumn" msprop:Generator_UserColumnName="ACTIVE" type="xs:boolean" default="true" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TBDD_GROUPS_USER" msprop:Generator_TableClassName="TBDD_GROUPS_USERDataTable" msprop:Generator_TableVarName="tableTBDD_GROUPS_USER" msprop:Generator_RowChangedName="TBDD_GROUPS_USERRowChanged" msprop:Generator_TablePropName="TBDD_GROUPS_USER" msprop:Generator_RowDeletingName="TBDD_GROUPS_USERRowDeleting" msprop:Generator_RowChangingName="TBDD_GROUPS_USERRowChanging" msprop:Generator_RowEvHandlerName="TBDD_GROUPS_USERRowChangeEventHandler" msprop:Generator_RowDeletedName="TBDD_GROUPS_USERRowDeleted" msprop:Generator_RowClassName="TBDD_GROUPS_USERRow" msprop:Generator_UserTableName="TBDD_GROUPS_USER" msprop:Generator_RowEvArgName="TBDD_GROUPS_USERRowChangeEvent">
<xs:element name="TBDD_GROUPS_USER" msprop:Generator_TableClassName="TBDD_GROUPS_USERDataTable" msprop:Generator_TableVarName="tableTBDD_GROUPS_USER" msprop:Generator_TablePropName="TBDD_GROUPS_USER" msprop:Generator_RowDeletingName="TBDD_GROUPS_USERRowDeleting" msprop:Generator_RowChangingName="TBDD_GROUPS_USERRowChanging" msprop:Generator_RowEvHandlerName="TBDD_GROUPS_USERRowChangeEventHandler" msprop:Generator_RowDeletedName="TBDD_GROUPS_USERRowDeleted" msprop:Generator_UserTableName="TBDD_GROUPS_USER" msprop:Generator_RowChangedName="TBDD_GROUPS_USERRowChanged" msprop:Generator_RowEvArgName="TBDD_GROUPS_USERRowChangeEvent" msprop:Generator_RowClassName="TBDD_GROUPS_USERRow">
<xs:complexType>
<xs:sequence>
<xs:element name="GUID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnGUID" msprop:Generator_ColumnPropNameInRow="GUID" msprop:Generator_ColumnPropNameInTable="GUIDColumn" msprop:Generator_UserColumnName="GUID" type="xs:int" />
@ -1021,7 +1049,7 @@ WHERE T.USERNAME = @USERNAME AND T2.IS_ADMIN = 1 AND T3.SHORT_NAME = 'UM'</Comma
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TBDD_MODULES" msprop:Generator_TableClassName="TBDD_MODULESDataTable" msprop:Generator_TableVarName="tableTBDD_MODULES" msprop:Generator_RowChangedName="TBDD_MODULESRowChanged" msprop:Generator_TablePropName="TBDD_MODULES" msprop:Generator_RowDeletingName="TBDD_MODULESRowDeleting" msprop:Generator_RowChangingName="TBDD_MODULESRowChanging" msprop:Generator_RowEvHandlerName="TBDD_MODULESRowChangeEventHandler" msprop:Generator_RowDeletedName="TBDD_MODULESRowDeleted" msprop:Generator_RowClassName="TBDD_MODULESRow" msprop:Generator_UserTableName="TBDD_MODULES" msprop:Generator_RowEvArgName="TBDD_MODULESRowChangeEvent">
<xs:element name="TBDD_MODULES" msprop:Generator_TableClassName="TBDD_MODULESDataTable" msprop:Generator_TableVarName="tableTBDD_MODULES" msprop:Generator_TablePropName="TBDD_MODULES" msprop:Generator_RowDeletingName="TBDD_MODULESRowDeleting" msprop:Generator_RowChangingName="TBDD_MODULESRowChanging" msprop:Generator_RowEvHandlerName="TBDD_MODULESRowChangeEventHandler" msprop:Generator_RowDeletedName="TBDD_MODULESRowDeleted" msprop:Generator_UserTableName="TBDD_MODULES" msprop:Generator_RowChangedName="TBDD_MODULESRowChanged" msprop:Generator_RowEvArgName="TBDD_MODULESRowChangeEvent" msprop:Generator_RowClassName="TBDD_MODULESRow">
<xs:complexType>
<xs:sequence>
<xs:element name="GUID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnGUID" msprop:Generator_ColumnPropNameInRow="GUID" msprop:Generator_ColumnPropNameInTable="GUIDColumn" msprop:Generator_UserColumnName="GUID" type="xs:int" />
@ -1125,7 +1153,7 @@ WHERE T.USERNAME = @USERNAME AND T2.IS_ADMIN = 1 AND T3.SHORT_NAME = 'UM'</Comma
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TBDD_USER_MODULES" msprop:Generator_TableClassName="TBDD_USER_MODULESDataTable" msprop:Generator_TableVarName="tableTBDD_USER_MODULES" msprop:Generator_RowChangedName="TBDD_USER_MODULESRowChanged" msprop:Generator_TablePropName="TBDD_USER_MODULES" msprop:Generator_RowDeletingName="TBDD_USER_MODULESRowDeleting" msprop:Generator_RowChangingName="TBDD_USER_MODULESRowChanging" msprop:Generator_RowEvHandlerName="TBDD_USER_MODULESRowChangeEventHandler" msprop:Generator_RowDeletedName="TBDD_USER_MODULESRowDeleted" msprop:Generator_RowClassName="TBDD_USER_MODULESRow" msprop:Generator_UserTableName="TBDD_USER_MODULES" msprop:Generator_RowEvArgName="TBDD_USER_MODULESRowChangeEvent">
<xs:element name="TBDD_USER_MODULES" msprop:Generator_TableClassName="TBDD_USER_MODULESDataTable" msprop:Generator_TableVarName="tableTBDD_USER_MODULES" msprop:Generator_TablePropName="TBDD_USER_MODULES" msprop:Generator_RowDeletingName="TBDD_USER_MODULESRowDeleting" msprop:Generator_RowChangingName="TBDD_USER_MODULESRowChanging" msprop:Generator_RowEvHandlerName="TBDD_USER_MODULESRowChangeEventHandler" msprop:Generator_RowDeletedName="TBDD_USER_MODULESRowDeleted" msprop:Generator_UserTableName="TBDD_USER_MODULES" msprop:Generator_RowChangedName="TBDD_USER_MODULESRowChanged" msprop:Generator_RowEvArgName="TBDD_USER_MODULESRowChangeEvent" msprop:Generator_RowClassName="TBDD_USER_MODULESRow">
<xs:complexType>
<xs:sequence>
<xs:element name="GUID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnGUID" msprop:Generator_ColumnPropNameInRow="GUID" msprop:Generator_ColumnPropNameInTable="GUIDColumn" msprop:Generator_UserColumnName="GUID" type="xs:int" />
@ -1150,7 +1178,7 @@ WHERE T.USERNAME = @USERNAME AND T2.IS_ADMIN = 1 AND T3.SHORT_NAME = 'UM'</Comma
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TBDD_CLIENT" msprop:Generator_TableClassName="TBDD_CLIENTDataTable" msprop:Generator_TableVarName="tableTBDD_CLIENT" msprop:Generator_RowChangedName="TBDD_CLIENTRowChanged" msprop:Generator_TablePropName="TBDD_CLIENT" msprop:Generator_RowDeletingName="TBDD_CLIENTRowDeleting" msprop:Generator_RowChangingName="TBDD_CLIENTRowChanging" msprop:Generator_RowEvHandlerName="TBDD_CLIENTRowChangeEventHandler" msprop:Generator_RowDeletedName="TBDD_CLIENTRowDeleted" msprop:Generator_RowClassName="TBDD_CLIENTRow" msprop:Generator_UserTableName="TBDD_CLIENT" msprop:Generator_RowEvArgName="TBDD_CLIENTRowChangeEvent">
<xs:element name="TBDD_CLIENT" msprop:Generator_TableClassName="TBDD_CLIENTDataTable" msprop:Generator_TableVarName="tableTBDD_CLIENT" msprop:Generator_TablePropName="TBDD_CLIENT" msprop:Generator_RowDeletingName="TBDD_CLIENTRowDeleting" msprop:Generator_RowChangingName="TBDD_CLIENTRowChanging" msprop:Generator_RowEvHandlerName="TBDD_CLIENTRowChangeEventHandler" msprop:Generator_RowDeletedName="TBDD_CLIENTRowDeleted" msprop:Generator_UserTableName="TBDD_CLIENT" msprop:Generator_RowChangedName="TBDD_CLIENTRowChanged" msprop:Generator_RowEvArgName="TBDD_CLIENTRowChangeEvent" msprop:Generator_RowClassName="TBDD_CLIENTRow">
<xs:complexType>
<xs:sequence>
<xs:element name="GUID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnGUID" msprop:Generator_ColumnPropNameInRow="GUID" msprop:Generator_ColumnPropNameInTable="GUIDColumn" msprop:Generator_UserColumnName="GUID" type="xs:int" />
@ -1215,7 +1243,7 @@ WHERE T.USERNAME = @USERNAME AND T2.IS_ADMIN = 1 AND T3.SHORT_NAME = 'UM'</Comma
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TBDD_CLIENT_USER" msprop:Generator_TableClassName="TBDD_CLIENT_USERDataTable" msprop:Generator_TableVarName="tableTBDD_CLIENT_USER" msprop:Generator_RowChangedName="TBDD_CLIENT_USERRowChanged" msprop:Generator_TablePropName="TBDD_CLIENT_USER" msprop:Generator_RowDeletingName="TBDD_CLIENT_USERRowDeleting" msprop:Generator_RowChangingName="TBDD_CLIENT_USERRowChanging" msprop:Generator_RowEvHandlerName="TBDD_CLIENT_USERRowChangeEventHandler" msprop:Generator_RowDeletedName="TBDD_CLIENT_USERRowDeleted" msprop:Generator_RowClassName="TBDD_CLIENT_USERRow" msprop:Generator_UserTableName="TBDD_CLIENT_USER" msprop:Generator_RowEvArgName="TBDD_CLIENT_USERRowChangeEvent">
<xs:element name="TBDD_CLIENT_USER" msprop:Generator_TableClassName="TBDD_CLIENT_USERDataTable" msprop:Generator_TableVarName="tableTBDD_CLIENT_USER" msprop:Generator_TablePropName="TBDD_CLIENT_USER" msprop:Generator_RowDeletingName="TBDD_CLIENT_USERRowDeleting" msprop:Generator_RowChangingName="TBDD_CLIENT_USERRowChanging" msprop:Generator_RowEvHandlerName="TBDD_CLIENT_USERRowChangeEventHandler" msprop:Generator_RowDeletedName="TBDD_CLIENT_USERRowDeleted" msprop:Generator_UserTableName="TBDD_CLIENT_USER" msprop:Generator_RowChangedName="TBDD_CLIENT_USERRowChanged" msprop:Generator_RowEvArgName="TBDD_CLIENT_USERRowChangeEvent" msprop:Generator_RowClassName="TBDD_CLIENT_USERRow">
<xs:complexType>
<xs:sequence>
<xs:element name="GUID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnGUID" msprop:Generator_ColumnPropNameInRow="GUID" msprop:Generator_ColumnPropNameInTable="GUIDColumn" msprop:Generator_UserColumnName="GUID" type="xs:int" />
@ -1239,7 +1267,7 @@ WHERE T.USERNAME = @USERNAME AND T2.IS_ADMIN = 1 AND T3.SHORT_NAME = 'UM'</Comma
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TBDD_USER" msprop:Generator_TableClassName="TBDD_USERDataTable" msprop:Generator_TableVarName="tableTBDD_USER" msprop:Generator_RowChangedName="TBDD_USERRowChanged" msprop:Generator_TablePropName="TBDD_USER" msprop:Generator_RowDeletingName="TBDD_USERRowDeleting" msprop:Generator_RowChangingName="TBDD_USERRowChanging" msprop:Generator_RowEvHandlerName="TBDD_USERRowChangeEventHandler" msprop:Generator_RowDeletedName="TBDD_USERRowDeleted" msprop:Generator_RowClassName="TBDD_USERRow" msprop:Generator_UserTableName="TBDD_USER" msprop:Generator_RowEvArgName="TBDD_USERRowChangeEvent">
<xs:element name="TBDD_USER" msprop:Generator_TableClassName="TBDD_USERDataTable" msprop:Generator_TableVarName="tableTBDD_USER" msprop:Generator_TablePropName="TBDD_USER" msprop:Generator_RowDeletingName="TBDD_USERRowDeleting" msprop:Generator_RowChangingName="TBDD_USERRowChanging" msprop:Generator_RowEvHandlerName="TBDD_USERRowChangeEventHandler" msprop:Generator_RowDeletedName="TBDD_USERRowDeleted" msprop:Generator_UserTableName="TBDD_USER" msprop:Generator_RowChangedName="TBDD_USERRowChanged" msprop:Generator_RowEvArgName="TBDD_USERRowChangeEvent" msprop:Generator_RowClassName="TBDD_USERRow">
<xs:complexType>
<xs:sequence>
<xs:element name="GUID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnGUID" msprop:Generator_ColumnPropNameInRow="GUID" msprop:Generator_ColumnPropNameInTable="GUIDColumn" msprop:Generator_UserColumnName="GUID" type="xs:int" />
@ -1338,7 +1366,7 @@ WHERE T.USERNAME = @USERNAME AND T2.IS_ADMIN = 1 AND T3.SHORT_NAME = 'UM'</Comma
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TBLOCAL_ADUSERS" msprop:Generator_TableClassName="TBLOCAL_ADUSERSDataTable" msprop:Generator_TableVarName="tableTBLOCAL_ADUSERS" msprop:Generator_RowChangedName="TBLOCAL_ADUSERSRowChanged" msprop:Generator_TablePropName="TBLOCAL_ADUSERS" msprop:Generator_RowDeletingName="TBLOCAL_ADUSERSRowDeleting" msprop:Generator_RowChangingName="TBLOCAL_ADUSERSRowChanging" msprop:Generator_RowEvHandlerName="TBLOCAL_ADUSERSRowChangeEventHandler" msprop:Generator_RowDeletedName="TBLOCAL_ADUSERSRowDeleted" msprop:Generator_RowClassName="TBLOCAL_ADUSERSRow" msprop:Generator_UserTableName="TBLOCAL_ADUSERS" msprop:Generator_RowEvArgName="TBLOCAL_ADUSERSRowChangeEvent">
<xs:element name="TBLOCAL_ADUSERS" msprop:Generator_TableClassName="TBLOCAL_ADUSERSDataTable" msprop:Generator_TableVarName="tableTBLOCAL_ADUSERS" msprop:Generator_TablePropName="TBLOCAL_ADUSERS" msprop:Generator_RowDeletingName="TBLOCAL_ADUSERSRowDeleting" msprop:Generator_RowChangingName="TBLOCAL_ADUSERSRowChanging" msprop:Generator_RowEvHandlerName="TBLOCAL_ADUSERSRowChangeEventHandler" msprop:Generator_RowDeletedName="TBLOCAL_ADUSERSRowDeleted" msprop:Generator_UserTableName="TBLOCAL_ADUSERS" msprop:Generator_RowChangedName="TBLOCAL_ADUSERSRowChanged" msprop:Generator_RowEvArgName="TBLOCAL_ADUSERSRowChangeEvent" msprop:Generator_RowClassName="TBLOCAL_ADUSERSRow">
<xs:complexType>
<xs:sequence>
<xs:element name="USERNAME" msprop:Generator_ColumnVarNameInTable="columnUSERNAME" msprop:Generator_ColumnPropNameInRow="USERNAME" msprop:Generator_ColumnPropNameInTable="USERNAMEColumn" msprop:Generator_UserColumnName="USERNAME" type="xs:string" minOccurs="0" />
@ -1348,6 +1376,13 @@ WHERE T.USERNAME = @USERNAME AND T2.IS_ADMIN = 1 AND T3.SHORT_NAME = 'UM'</Comma
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TBLOCAL_ADGROUPS" msprop:Generator_TableClassName="TBLOCAL_ADGROUPSDataTable" msprop:Generator_TableVarName="tableTBLOCAL_ADGROUPS" msprop:Generator_RowChangedName="TBLOCAL_ADGROUPSRowChanged" msprop:Generator_TablePropName="TBLOCAL_ADGROUPS" msprop:Generator_RowDeletingName="TBLOCAL_ADGROUPSRowDeleting" msprop:Generator_RowChangingName="TBLOCAL_ADGROUPSRowChanging" msprop:Generator_RowEvHandlerName="TBLOCAL_ADGROUPSRowChangeEventHandler" msprop:Generator_RowDeletedName="TBLOCAL_ADGROUPSRowDeleted" msprop:Generator_RowClassName="TBLOCAL_ADGROUPSRow" msprop:Generator_UserTableName="TBLOCAL_ADGROUPS" msprop:Generator_RowEvArgName="TBLOCAL_ADGROUPSRowChangeEvent">
<xs:complexType>
<xs:sequence>
<xs:element name="GROUPNAME" msprop:Generator_ColumnVarNameInTable="columnGROUPNAME" msprop:Generator_ColumnPropNameInRow="GROUPNAME" msprop:Generator_ColumnPropNameInTable="GROUPNAMEColumn" msprop:Generator_UserColumnName="GROUPNAME" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
@ -1381,12 +1416,12 @@ WHERE T.USERNAME = @USERNAME AND T2.IS_ADMIN = 1 AND T3.SHORT_NAME = 'UM'</Comma
</xs:element>
<xs:annotation>
<xs:appinfo>
<msdata:Relationship name="FK_TBDD_GROUPS_USER_GROUP_ID" msdata:parent="TBDD_USER_GROUPS" msdata:child="TBDD_GROUPS_USER" msdata:parentkey="GUID" msdata:childkey="GROUP_ID" msprop:Generator_UserChildTable="TBDD_GROUPS_USER" msprop:Generator_ChildPropName="GetTBDD_GROUPS_USERRows" msprop:Generator_UserRelationName="FK_TBDD_GROUPS_USER_GROUP_ID" msprop:Generator_RelationVarName="relationFK_TBDD_GROUPS_USER_GROUP_ID" msprop:Generator_UserParentTable="TBDD_USER_GROUPS" msprop:Generator_ParentPropName="TBDD_USER_GROUPSRow" />
<msdata:Relationship name="FK_TBDD_USER_MODULES_MODULE_ID" msdata:parent="TBDD_MODULES" msdata:child="TBDD_USER_MODULES" msdata:parentkey="GUID" msdata:childkey="MODULE_ID" msprop:Generator_UserChildTable="TBDD_USER_MODULES" msprop:Generator_ChildPropName="GetTBDD_USER_MODULESRows" msprop:Generator_UserRelationName="FK_TBDD_USER_MODULES_MODULE_ID" msprop:Generator_RelationVarName="relationFK_TBDD_USER_MODULES_MODULE_ID" msprop:Generator_UserParentTable="TBDD_MODULES" msprop:Generator_ParentPropName="TBDD_MODULESRow" />
<msdata:Relationship name="FK_TBDD_CLIENT_USER_GROUP_ID" msdata:parent="TBDD_CLIENT" msdata:child="TBDD_CLIENT_USER" msdata:parentkey="GUID" msdata:childkey="CLIENT_ID" msprop:Generator_UserChildTable="TBDD_CLIENT_USER" msprop:Generator_ChildPropName="GetTBDD_CLIENT_USERRows" msprop:Generator_UserRelationName="FK_TBDD_CLIENT_USER_GROUP_ID" msprop:Generator_RelationVarName="relationFK_TBDD_CLIENT_USER_GROUP_ID" msprop:Generator_UserParentTable="TBDD_CLIENT" msprop:Generator_ParentPropName="TBDD_CLIENTRow" />
<msdata:Relationship name="FK_TBDD_GROUPS_USER_USER_ID" msdata:parent="TBDD_USER" msdata:child="TBDD_GROUPS_USER" msdata:parentkey="GUID" msdata:childkey="USER_ID" msprop:Generator_UserChildTable="TBDD_GROUPS_USER" msprop:Generator_ChildPropName="GetTBDD_GROUPS_USERRows" msprop:Generator_UserRelationName="FK_TBDD_GROUPS_USER_USER_ID" msprop:Generator_ParentPropName="TBDD_USERRow" msprop:Generator_RelationVarName="relationFK_TBDD_GROUPS_USER_USER_ID" msprop:Generator_UserParentTable="TBDD_USER" />
<msdata:Relationship name="FK_TBDD_USER_MODULES2_USER_ID" msdata:parent="TBDD_USER" msdata:child="TBDD_USER_MODULES" msdata:parentkey="GUID" msdata:childkey="USER_ID" msprop:Generator_UserChildTable="TBDD_USER_MODULES" msprop:Generator_ChildPropName="GetTBDD_USER_MODULESRows" msprop:Generator_UserRelationName="FK_TBDD_USER_MODULES2_USER_ID" msprop:Generator_ParentPropName="TBDD_USERRow" msprop:Generator_RelationVarName="relationFK_TBDD_USER_MODULES2_USER_ID" msprop:Generator_UserParentTable="TBDD_USER" />
<msdata:Relationship name="FK_TBDD_CLIENT_USER_USER_ID" msdata:parent="TBDD_USER" msdata:child="TBDD_CLIENT_USER" msdata:parentkey="GUID" msdata:childkey="USER_ID" msprop:Generator_UserChildTable="TBDD_CLIENT_USER" msprop:Generator_ChildPropName="GetTBDD_CLIENT_USERRows" msprop:Generator_UserRelationName="FK_TBDD_CLIENT_USER_USER_ID" msprop:Generator_ParentPropName="TBDD_USERRow" msprop:Generator_RelationVarName="relationFK_TBDD_CLIENT_USER_USER_ID" msprop:Generator_UserParentTable="TBDD_USER" />
<msdata:Relationship name="FK_TBDD_GROUPS_USER_GROUP_ID" msdata:parent="TBDD_USER_GROUPS" msdata:child="TBDD_GROUPS_USER" msdata:parentkey="GUID" msdata:childkey="GROUP_ID" msprop:Generator_UserChildTable="TBDD_GROUPS_USER" msprop:Generator_ChildPropName="GetTBDD_GROUPS_USERRows" msprop:Generator_UserRelationName="FK_TBDD_GROUPS_USER_GROUP_ID" msprop:Generator_ParentPropName="TBDD_USER_GROUPSRow" msprop:Generator_RelationVarName="relationFK_TBDD_GROUPS_USER_GROUP_ID" msprop:Generator_UserParentTable="TBDD_USER_GROUPS" />
<msdata:Relationship name="FK_TBDD_USER_MODULES_MODULE_ID" msdata:parent="TBDD_MODULES" msdata:child="TBDD_USER_MODULES" msdata:parentkey="GUID" msdata:childkey="MODULE_ID" msprop:Generator_UserChildTable="TBDD_USER_MODULES" msprop:Generator_ChildPropName="GetTBDD_USER_MODULESRows" msprop:Generator_UserRelationName="FK_TBDD_USER_MODULES_MODULE_ID" msprop:Generator_ParentPropName="TBDD_MODULESRow" msprop:Generator_RelationVarName="relationFK_TBDD_USER_MODULES_MODULE_ID" msprop:Generator_UserParentTable="TBDD_MODULES" />
<msdata:Relationship name="FK_TBDD_CLIENT_USER_GROUP_ID" msdata:parent="TBDD_CLIENT" msdata:child="TBDD_CLIENT_USER" msdata:parentkey="GUID" msdata:childkey="CLIENT_ID" msprop:Generator_UserChildTable="TBDD_CLIENT_USER" msprop:Generator_ChildPropName="GetTBDD_CLIENT_USERRows" msprop:Generator_UserRelationName="FK_TBDD_CLIENT_USER_GROUP_ID" msprop:Generator_ParentPropName="TBDD_CLIENTRow" msprop:Generator_RelationVarName="relationFK_TBDD_CLIENT_USER_GROUP_ID" msprop:Generator_UserParentTable="TBDD_CLIENT" />
<msdata:Relationship name="FK_TBDD_GROUPS_USER_USER_ID" msdata:parent="TBDD_USER" msdata:child="TBDD_GROUPS_USER" msdata:parentkey="GUID" msdata:childkey="USER_ID" msprop:Generator_UserChildTable="TBDD_GROUPS_USER" msprop:Generator_ChildPropName="GetTBDD_GROUPS_USERRows" msprop:Generator_UserRelationName="FK_TBDD_GROUPS_USER_USER_ID" msprop:Generator_RelationVarName="relationFK_TBDD_GROUPS_USER_USER_ID" msprop:Generator_UserParentTable="TBDD_USER" msprop:Generator_ParentPropName="TBDD_USERRow" />
<msdata:Relationship name="FK_TBDD_USER_MODULES2_USER_ID" msdata:parent="TBDD_USER" msdata:child="TBDD_USER_MODULES" msdata:parentkey="GUID" msdata:childkey="USER_ID" msprop:Generator_UserChildTable="TBDD_USER_MODULES" msprop:Generator_ChildPropName="GetTBDD_USER_MODULESRows" msprop:Generator_UserRelationName="FK_TBDD_USER_MODULES2_USER_ID" msprop:Generator_RelationVarName="relationFK_TBDD_USER_MODULES2_USER_ID" msprop:Generator_UserParentTable="TBDD_USER" msprop:Generator_ParentPropName="TBDD_USERRow" />
<msdata:Relationship name="FK_TBDD_CLIENT_USER_USER_ID" msdata:parent="TBDD_USER" msdata:child="TBDD_CLIENT_USER" msdata:parentkey="GUID" msdata:childkey="USER_ID" msprop:Generator_UserChildTable="TBDD_CLIENT_USER" msprop:Generator_ChildPropName="GetTBDD_CLIENT_USERRows" msprop:Generator_UserRelationName="FK_TBDD_CLIENT_USER_USER_ID" msprop:Generator_RelationVarName="relationFK_TBDD_CLIENT_USER_USER_ID" msprop:Generator_UserParentTable="TBDD_USER" msprop:Generator_ParentPropName="TBDD_USERRow" />
</xs:appinfo>
</xs:annotation>
</xs:schema>

View File

@ -6,29 +6,38 @@
</autogenerated>-->
<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="-10" ViewPortY="-47" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:TBDD_USER_GROUPS" ZOrder="6" X="47" Y="-21" Height="229" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:TBDD_GROUPS_USER" ZOrder="5" X="62" Y="247" Height="248" Width="294" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="178" />
<Shape ID="DesignTable:TBDD_MODULES" ZOrder="2" X="1046" Y="-25" Height="343" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:TBDD_USER_MODULES" ZOrder="3" X="1045" Y="334" Height="210" Width="278" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:TBDD_CLIENT" ZOrder="10" X="447" Y="503" Height="305" Width="224" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="235" />
<Shape ID="DesignTable:TBDD_CLIENT_USER" ZOrder="12" X="730" Y="596" Height="191" Width="260" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" />
<Shape ID="DesignTable:TBDD_USER" ZOrder="4" X="538" Y="-27" Height="457" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="256" />
<Shape ID="DesignTable:TBLOCAL_ADUSERS" ZOrder="1" X="1158" Y="607" Height="105" Width="179" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="101" />
<Shape ID="DesignTable:TBDD_USER_GROUPS" ZOrder="7" X="47" Y="-21" Height="305" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="235" />
<Shape ID="DesignTable:TBDD_GROUPS_USER" ZOrder="2" X="50" Y="312" Height="248" Width="294" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="178" />
<Shape ID="DesignTable:TBDD_MODULES" ZOrder="4" X="1046" Y="-25" Height="343" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:TBDD_USER_MODULES" ZOrder="5" X="1045" Y="334" Height="210" Width="278" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:TBDD_CLIENT" ZOrder="11" X="447" Y="503" Height="305" Width="224" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="235" />
<Shape ID="DesignTable:TBDD_CLIENT_USER" ZOrder="13" X="730" Y="596" Height="191" Width="260" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" />
<Shape ID="DesignTable:TBDD_USER" ZOrder="6" X="538" Y="-27" Height="457" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="256" />
<Shape ID="DesignTable:TBLOCAL_ADUSERS" ZOrder="3" X="1158" Y="607" Height="105" Width="179" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="101" />
<Shape ID="DesignTable:TBLOCAL_ADGROUPS" ZOrder="1" X="1092" Y="729" Height="48" Width="192" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="44" />
</Shapes>
<Connectors>
<Connector ID="DesignRelation:FK_TBDD_GROUPS_USER_GROUP_ID" ZOrder="14" LineWidth="11">
<Connector ID="DesignRelation:FK_TBDD_GROUPS_USER_GROUP_ID" ZOrder="15" LineWidth="11">
<RoutePoints>
<Point>
<X>179</X>
<Y>208</Y>
<X>347</X>
<Y>239</Y>
</Point>
<Point>
<X>179</X>
<Y>247</Y>
<X>386</X>
<Y>239</Y>
</Point>
<Point>
<X>386</X>
<Y>320</Y>
</Point>
<Point>
<X>344</X>
<Y>320</Y>
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_TBDD_USER_MODULES_MODULE_ID" ZOrder="13" LineWidth="11">
<Connector ID="DesignRelation:FK_TBDD_USER_MODULES_MODULE_ID" ZOrder="14" LineWidth="11">
<RoutePoints>
<Point>
<X>1159</X>
@ -40,7 +49,7 @@
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_TBDD_CLIENT_USER_GROUP_ID" ZOrder="11" LineWidth="11">
<Connector ID="DesignRelation:FK_TBDD_CLIENT_USER_GROUP_ID" ZOrder="12" LineWidth="11">
<RoutePoints>
<Point>
<X>671</X>
@ -52,19 +61,19 @@
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_TBDD_GROUPS_USER_USER_ID" ZOrder="9" LineWidth="11">
<Connector ID="DesignRelation:FK_TBDD_GROUPS_USER_USER_ID" ZOrder="10" LineWidth="11">
<RoutePoints>
<Point>
<X>538</X>
<Y>338</Y>
<Y>403</Y>
</Point>
<Point>
<X>356</X>
<Y>338</Y>
<X>344</X>
<Y>403</Y>
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_TBDD_USER_MODULES2_USER_ID" ZOrder="8" LineWidth="11">
<Connector ID="DesignRelation:FK_TBDD_USER_MODULES2_USER_ID" ZOrder="9" LineWidth="11">
<RoutePoints>
<Point>
<X>838</X>
@ -76,7 +85,7 @@
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_TBDD_CLIENT_USER_USER_ID" ZOrder="7" LineWidth="11">
<Connector ID="DesignRelation:FK_TBDD_CLIENT_USER_USER_ID" ZOrder="8" LineWidth="11">
<RoutePoints>
<Point>
<X>784</X>

View File

@ -1,197 +0,0 @@
Imports System.DirectoryServices
Imports System.DirectoryServices.AccountManagement
Imports DDUserManager.UserDataSet
Imports DevExpress.XtraGrid.Views.Grid
Public Class frmADImport
Private excludedGroupNames As New List(Of String) From {
"Abgelehnte",
"DHCP",
"Distributed COM",
"Dns",
"Domänen-Gäste",
"Domänencomput",
"Druck",
"Einstellungen eingehender",
"Ereignis",
"Gäst",
"Hyper-V",
"IIS_",
"Klonbare",
"Konten-Oper",
"Kryptografie",
"Leistungs",
"Netzwerkskon",
"PrivUser",
"Protected User",
"Prä-Windows",
"RAS- und IAS-Server",
"RDS-",
"Remoteverwaltungs",
"Replikations",
"Reporting",
"Richtlinien-Ersteller",
"SQLAccess",
"Schreibgeschützte Domänen",
"Server-Operatore",
"Sicherungs",
"Terminalserver-Liz",
"WinRMR",
"Windows-Auth",
"Zertifikat",
"Zugriffssteuerungs",
"Zulässige"
}
Private Sub frmADImport_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
Dim groups = GetActiveDirectoryGroups(Environment.UserName)
gridAD_Groups.DataSource = groups
Catch ex As Exception
MsgBox($"Error while loading initial groups")
End Try
End Sub
Private Function FindUser(rootEntry As DirectoryEntry, samAccountName As String) As DirectoryEntry
Dim userSearch = New DirectorySearcher(
rootEntry,
$"(samAccountName={samAccountName})",
New String() {"displayName"}
)
Dim result = userSearch.FindOne()
If IsNothing(result) Then
Return Nothing
Else
Return result.GetDirectoryEntry()
End If
End Function
Private Function GetGroupNameFromTokenGroupEntry(rootEntry As DirectoryEntry, tokenGroup As Byte())
Dim sID As New Security.Principal.SecurityIdentifier(tokenGroup, 0)
Dim sIDSearch = New DirectorySearcher(rootEntry, $"(objectSid={sID.Value})", New String() {"name"})
Dim sIDResult = sIDSearch.FindOne()
If IsNothing(sIDResult) Then
Return Nothing
Else
Return sIDResult.Properties("name").Item(0).ToString()
End If
End Function
Private Function GetActiveDirectoryUsersForGroup(groupName As String) As List(Of UserPrincipal)
Dim users As New List(Of UserPrincipal)
Using context As New PrincipalContext(ContextType.Domain)
Using group As GroupPrincipal = GroupPrincipal.FindByIdentity(context, IdentityType.Name, groupName)
Using members = group.GetMembers(True)
For Each member As UserPrincipal In members
If TypeOf member Is UserPrincipal Then
users.Add(member)
End If
Next
End Using
End Using
End Using
Return users
End Function
Private Function GetActiveDirectoryGroups(samAccountName As String) As List(Of String)
Dim groups As New List(Of String)
Dim adRoot As New DirectoryEntry() With {
.AuthenticationType = AuthenticationTypes.Secure
}
Dim user As DirectoryEntry = FindUser(adRoot, samAccountName)
If IsNothing(user) Then
MsgBox($"Benutzer {samAccountName} wurde nicht in der Active Directory gefunden!")
Return groups
End If
user.RefreshCache(New String() {"tokenGroups"})
For Each tokenGroup As Byte() In user.Properties("tokenGroups")
Dim groupName As String = GetGroupNameFromTokenGroupEntry(adRoot, tokenGroup)
If Not IsNothing(groupName) Then
Dim isValidGroup As Boolean = excludedGroupNames.Where(Function(excludedGroup) Not groupName.StartsWith(excludedGroup)).Any()
If isValidGroup Then
groups.Add(groupName)
End If
End If
Next
Return groups
End Function
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)
Try
Dim usersForGroup As List(Of UserPrincipal) = GetActiveDirectoryUsersForGroup(groupName)
UserDataSet.TBLOCAL_ADUSERS.Clear()
For Each user As UserPrincipal In usersForGroup
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.EmailAddress
UserDataSet.TBLOCAL_ADUSERS.AddTBLOCAL_ADUSERSRow(row)
Next
TBLOCAL_ADUSERSBindingSource.DataSource = UserDataSet.TBLOCAL_ADUSERS
Catch ex As Exception
MsgBox($"Error while loading users for group {groupName}")
End Try
End Sub
Private Sub btnImport_Click(sender As Object, e As EventArgs) Handles btnImport.Click
Dim selectedUserHandles As List(Of Integer) = viewAD_Users.GetSelectedRows().ToList()
Dim importedUsers As Integer = 0
For Each rowHandle In selectedUserHandles
Dim rowView As DataRowView = viewAD_Users.GetRow(rowHandle)
Dim userRow As TBLOCAL_ADUSERSRow = rowView.Row
Dim Username As String = userRow.USERNAME
Dim Prename As String = IIf(IsDBNull(userRow.PRENAME), Nothing, userRow.PRENAME)
Dim Name As String = IIf(IsDBNull(userRow.NAME), Nothing, userRow.NAME)
Dim Email As String = IIf(IsDBNull(userRow.EMAIL), Nothing, userRow.EMAIL)
If IsNothing(TBDD_USERTableAdapter.UserExists(userRow.USERNAME)) Then
TBDD_USERTableAdapter.InsertUser(Prename, Name, Username, Email, Environment.UserName)
importedUsers = importedUsers + 1
End If
Next
If importedUsers = 0 Then
MsgBox($"Es wurden keine neuen Benutzer importiert, da alle ausgewählten Benutzer bereits in der Benutzerverwaltung vorhanden sind.", MsgBoxStyle.Exclamation, "UserManager")
Else
MsgBox($"{importedUsers} Benutzer wurden erfolgreich importiert!", MsgBoxStyle.Information, "UserManager")
End If
End Sub
Private Sub viewAD_Users_SelectionChanged(sender As Object, e As DevExpress.Data.SelectionChangedEventArgs) Handles viewAD_Users.SelectionChanged
Dim view As GridView = sender
If view.SelectedRowsCount > 0 Then
btnImport.Enabled = True
Else
btnImport.Enabled = False
End If
End Sub
End Class

View File

@ -0,0 +1,117 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class frmADImport_Groups
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Wird vom Windows Form-Designer benötigt.
Private components As System.ComponentModel.IContainer
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmADImport_Groups))
Me.gridAD_Groups = New DevExpress.XtraGrid.GridControl()
Me.TBLOCAL_ADGROUPSBindingSource = New System.Windows.Forms.BindingSource()
Me.UserDataSet = New DDUserManager.UserDataSet()
Me.viewAD_Groups = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.colGROUPNAME = New DevExpress.XtraGrid.Columns.GridColumn()
Me.btnImport = New System.Windows.Forms.Button()
Me.TbdD_USER_GROUPSTableAdapter = New DDUserManager.UserDataSetTableAdapters.TBDD_USER_GROUPSTableAdapter()
CType(Me.gridAD_Groups, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.TBLOCAL_ADGROUPSBindingSource, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.UserDataSet, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.viewAD_Groups, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'gridAD_Groups
'
Me.gridAD_Groups.DataSource = Me.TBLOCAL_ADGROUPSBindingSource
Me.gridAD_Groups.Dock = System.Windows.Forms.DockStyle.Top
Me.gridAD_Groups.Location = New System.Drawing.Point(0, 0)
Me.gridAD_Groups.MainView = Me.viewAD_Groups
Me.gridAD_Groups.Name = "gridAD_Groups"
Me.gridAD_Groups.Size = New System.Drawing.Size(1130, 613)
Me.gridAD_Groups.TabIndex = 0
Me.gridAD_Groups.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.viewAD_Groups})
'
'TBLOCAL_ADGROUPSBindingSource
'
Me.TBLOCAL_ADGROUPSBindingSource.DataMember = "TBLOCAL_ADGROUPS"
Me.TBLOCAL_ADGROUPSBindingSource.DataSource = Me.UserDataSet
'
'UserDataSet
'
Me.UserDataSet.DataSetName = "UserDataSet"
Me.UserDataSet.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema
'
'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.OptionsSelection.MultiSelect = True
Me.viewAD_Groups.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CheckBoxRowSelect
'
'colGROUPNAME
'
Me.colGROUPNAME.FieldName = "GROUPNAME"
Me.colGROUPNAME.Name = "colGROUPNAME"
Me.colGROUPNAME.Visible = True
Me.colGROUPNAME.VisibleIndex = 1
'
'btnImport
'
Me.btnImport.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.btnImport.Enabled = False
Me.btnImport.Image = Global.DDUserManager.My.Resources.Resources.group_go
Me.btnImport.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.btnImport.Location = New System.Drawing.Point(939, 619)
Me.btnImport.Name = "btnImport"
Me.btnImport.Size = New System.Drawing.Size(179, 27)
Me.btnImport.TabIndex = 1
Me.btnImport.Text = "Import starten"
Me.btnImport.UseVisualStyleBackColor = True
'
'TbdD_USER_GROUPSTableAdapter
'
Me.TbdD_USER_GROUPSTableAdapter.ClearBeforeFill = True
'
'frmADImport_Groups
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1130, 658)
Me.Controls.Add(Me.btnImport)
Me.Controls.Add(Me.gridAD_Groups)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "frmADImport_Groups"
Me.Text = "frmADImport_Groups"
CType(Me.gridAD_Groups, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.TBLOCAL_ADGROUPSBindingSource, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.UserDataSet, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.viewAD_Groups, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
Friend WithEvents gridAD_Groups As DevExpress.XtraGrid.GridControl
Friend WithEvents viewAD_Groups As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents UserDataSet As UserDataSet
Friend WithEvents TBLOCAL_ADGROUPSBindingSource As BindingSource
Friend WithEvents colGROUPNAME As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents btnImport As Button
Friend WithEvents TbdD_USER_GROUPSTableAdapter As UserDataSetTableAdapters.TBDD_USER_GROUPSTableAdapter
End Class

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,56 @@
Imports DDUserManager.UserDataSet
Imports DevExpress.XtraGrid.Views.Grid
Public Class frmADImport_Groups
Private Sub frmADImport_Groups_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
Dim groups = ClassActiveDirectory.GetActiveDirectoryGroups(Environment.UserName)
UserDataSet.TBLOCAL_ADGROUPS.Clear()
For Each group In groups
UserDataSet.TBLOCAL_ADGROUPS.AddTBLOCAL_ADGROUPSRow(group)
Next
gridAD_Groups.DataSource = UserDataSet.TBLOCAL_ADGROUPS
Catch ex As Exception
MsgBox($"Error while loading initial groups")
End Try
End Sub
Private Sub btnImport_Click(sender As Object, e As EventArgs) Handles btnImport.Click
Dim selectedGroupHandles As List(Of Integer) = viewAD_Groups.GetSelectedRows().ToList()
Dim importedGroups As Integer = 0
For Each rowHandle As Integer In selectedGroupHandles
Dim rowView As DataRowView = viewAD_Groups.GetRow(rowHandle)
Dim groupRow As TBLOCAL_ADGROUPSRow = rowView.Row
Dim name As String = groupRow.GROUPNAME
Dim internal As Boolean = False
Dim sync As Boolean = True
If IsNothing(TbdD_USER_GROUPSTableAdapter.GroupExists(groupRow.GROUPNAME)) Then
TbdD_USER_GROUPSTableAdapter.Insert(name, Environment.UserName)
importedGroups = importedGroups + 1
End If
Next
If importedGroups = 0 Then
MsgBox($"Es wurden keine neuen Gruppen importiert, da alle ausgewählten Gruppen bereits in der Gruppenverwaltung vorhanden sind.", MsgBoxStyle.Exclamation, "UserManager")
Else
MsgBox($"{importedGroups} Gruppen wurden erfolgreich importiert!", MsgBoxStyle.Information, "UserManager")
End If
End Sub
Private Sub viewAD_Groups_SelectionChanged(sender As Object, e As DevExpress.Data.SelectionChangedEventArgs) Handles viewAD_Groups.SelectionChanged
Dim view As GridView = sender
If view.SelectedRowsCount > 0 Then
btnImport.Enabled = True
Else
btnImport.Enabled = False
End If
End Sub
End Class

View File

@ -1,5 +1,5 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmADImport
Partial Class frmADImport_Users
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
@ -23,7 +23,7 @@ Partial Class frmADImport
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmADImport))
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmADImport_Users))
Me.gridAD_Groups = New DevExpress.XtraGrid.GridControl()
Me.viewAD_Groups = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.gridAD_Users = New DevExpress.XtraGrid.GridControl()
@ -173,7 +173,7 @@ Partial Class frmADImport
Me.TableAdapterManager.TBDD_USERTableAdapter = Me.TBDD_USERTableAdapter
Me.TableAdapterManager.UpdateOrder = DDUserManager.UserDataSetTableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete
'
'frmADImport
'frmADImport_Users
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
@ -182,7 +182,7 @@ Partial Class frmADImport
Me.Controls.Add(Me.gridAD_Users)
Me.Controls.Add(Me.gridAD_Groups)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "frmADImport"
Me.Name = "frmADImport_Users"
Me.Text = "Active Directory Import"
CType(Me.gridAD_Groups, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.viewAD_Groups, System.ComponentModel.ISupportInitialize).EndInit()
@ -206,8 +206,8 @@ Partial Class frmADImport
Friend WithEvents colNAME As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents colEMAIL As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents colSELECTED As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents Panel1 As Panel
Friend WithEvents btnImport As Button
Friend WithEvents TBDD_USERTableAdapter As UserDataSetTableAdapters.TBDD_USERTableAdapter
Friend WithEvents TableAdapterManager As UserDataSetTableAdapters.TableAdapterManager
Friend WithEvents Panel1 As Panel
End Class

View File

@ -0,0 +1,80 @@
Imports System.DirectoryServices
Imports System.DirectoryServices.AccountManagement
Imports DDUserManager.UserDataSet
Imports DevExpress.XtraGrid.Views.Grid
Public Class frmADImport_Users
Private Sub frmADImport_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
Dim groups = ClassActiveDirectory.GetActiveDirectoryGroups(Environment.UserName)
gridAD_Groups.DataSource = groups
Catch ex As Exception
MsgBox($"Error while loading initial groups")
End Try
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)
Try
Dim usersForGroup As List(Of UserPrincipal) = ClassActiveDirectory.GetActiveDirectoryUsersForGroup(groupName)
UserDataSet.TBLOCAL_ADUSERS.Clear()
For Each user As UserPrincipal In usersForGroup
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.EmailAddress
UserDataSet.TBLOCAL_ADUSERS.AddTBLOCAL_ADUSERSRow(row)
Next
TBLOCAL_ADUSERSBindingSource.DataSource = UserDataSet.TBLOCAL_ADUSERS
Catch ex As Exception
MsgBox($"Error while loading users for group {groupName}")
End Try
End Sub
Private Sub btnImport_Click(sender As Object, e As EventArgs) Handles btnImport.Click
Dim selectedUserHandles As List(Of Integer) = viewAD_Users.GetSelectedRows().ToList()
Dim importedUsers As Integer = 0
For Each rowHandle In selectedUserHandles
Dim rowView As DataRowView = viewAD_Users.GetRow(rowHandle)
Dim userRow As TBLOCAL_ADUSERSRow = rowView.Row
Dim Username As String = userRow.USERNAME
Dim Prename As String = IIf(IsDBNull(userRow.PRENAME), Nothing, userRow.PRENAME)
Dim Name As String = IIf(IsDBNull(userRow.NAME), Nothing, userRow.NAME)
Dim Email As String = IIf(IsDBNull(userRow.EMAIL), Nothing, userRow.EMAIL)
If IsNothing(TBDD_USERTableAdapter.UserExists(userRow.USERNAME)) Then
TBDD_USERTableAdapter.InsertUser(Prename, Name, Username, Email, Environment.UserName)
importedUsers = importedUsers + 1
End If
Next
If importedUsers = 0 Then
MsgBox($"Es wurden keine neuen Benutzer importiert, da alle ausgewählten Benutzer bereits in der Benutzerverwaltung vorhanden sind.", MsgBoxStyle.Exclamation, "UserManager")
Else
MsgBox($"{importedUsers} Benutzer wurden erfolgreich importiert!", MsgBoxStyle.Information, "UserManager")
End If
End Sub
Private Sub viewAD_Users_SelectionChanged(sender As Object, e As DevExpress.Data.SelectionChangedEventArgs) Handles viewAD_Users.SelectionChanged
Dim view As GridView = sender
If view.SelectedRowsCount > 0 Then
btnImport.Enabled = True
Else
btnImport.Enabled = False
End If
End Sub
End Class

File diff suppressed because it is too large Load Diff

View File

@ -219,6 +219,9 @@
<metadata name="PRODUCT_VERSIONLabel.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="Label4.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="TBDD_USERBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>136, 17</value>
</metadata>
@ -312,18 +315,18 @@
<data name="ToolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJsSURBVDhPldPdT1JhHAdwNv8OcoZZM9YWsgxfMjbUoeDL
ENo0kEfE0fCF5TKVRPQIKicUFVDTJM1l09xYbGFvlsp02gvJ2rr2zrl527z7hodnOqq1/Nz99jvfPWfP
9xze/7j1tKxdvahOoePZKfxFMfmIdJqOf3d3Tc83v6m11L+sDt9e1hxUP6uAaqYUSn8hTM/1qJurQU5X
loc+nsz8tk5ieq0LMhsdGN0ZxPQ3L2Z2fZiMeuD99BDD2/3oj9hR5SuDsDGjj8YS7qzo+cZXNcGhbQfm
v09h4uswHkVH4fvshmdnAOwmA0fEhu61DijcxRAY01w0mlAfqrHYPtzDbGwC01Ev3FtOGBd0uOmUIMcm
RlbbFZR75ChhC5FOUsdo7JR2SRUe3LBzJ7oiDKRs/l5+7zU3XXPSDYKYQH8uQMdkqicl++WTsqOiEenP
AmfuYZ5dzNDVibRavpWn5qXoFquIZq6MVE7JiWJMSmRsHuEpfDJS5C4gBU4JkdjE5GqbkBx33rJusNL8
CfWsklH6iw+5wxzXj/K6Rft0laz5oyFgWtHG6MhRPS5xK72Fe0ObzngrA2gLtcTvRxim61NNq2TMsWVF
z/p96JaqEP8KEX9lmF8YwG4wXKWDm73QjFfgclOGhcYSzO/0LibSgYUfM1ylgdh4UqW9651cpYZ5LTLN
F4ICvYBPown1oeq+B+9bEdj1c5X6vwxjZMcFdsuBntVONC4bUTlaikum9KCgLlVCY8k0swpPc7ABpkUC
GZuPG0w2sq0iiFozD4SNF8MZDectf5z8u+MfR+rITbrEMzmuUdKV1U7Hf+DxfgHgUTMrC91zfgAAAABJ
RU5ErkJggg==
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJtSURBVDhPldPrS1phHAdwob/DRbO10WTQBcMuc0LWKu2C
6SDJfDLDYRdZrGUuu5y08syyUqvVcrVYoxZIwWy3tlKK2qUlg73uXQS9Hb37To8PhdsY6/Pux+98eQ7P
9xze/7jzrLxDtaRKouPFyX1FkZJR6Qwd/+7epo5velNnblitCWpW1Mc1zyuhnC2DwieD8YUO9fMa5HZl
uenjiUxv68XG19oAE7JgbG8IM988mD3wYmrfDc+nRxjZHcBAuAfV3nIIm9L6aSzu7rqOb3ilCQzv2rHw
fRqTX0fweH8M3s8uuPcGwW4zsIdt6N60QO4qhsCQ4qTRuIY1jdn24T7mIpOY2ffAteOAYVGLWw4xcm3Z
yGq/gQp3CUpZGVJJ8jiNnatdVgaHQj3cic4wAwlbcFjQJ3LRNSdVL4gIdJf8dEykfHr7qGJKdFo0Kv0p
ceSd5PdkM3R1JqWOb+WpeEnapWqini8nVdMlRD4uJYVsPuHJvYWkyCUhEoeYiG3ZJKNdSGKdt27prTR/
RjWnYBSe4pPYYaJu0Wl+d8YRXSVq+aj3G9drI3TkKJ+UuhQe2eHwtiPayiDa11qj9yMM0vW55g0ybt+x
onfrAbTL1Yh+hYi+Mkwv9WBDDFfp0HYf1BOVuN6cZqaxONM7nZMJW7D4Y5ar1B+ZSKi0b6uTq1S/UIt0
05WAQCfg02hcw1pN/8P3bfAf+LhKfV9GMLrnBLtjR+9GJ5pWDKgaK8M1Y2pAUJ8sprFE6jm5uyXQCOMS
QSFbgJtMDnKsmchsSz8WNl0NpjVeNv9x8u9iP47UnpdwiRcSq1HcldVBx3/g8X4Bj5QzBMM+BqgAAAAA
SUVORK5CYII=
</value>
</data>
<metadata name="TBDD_USER_GROUPSBindingNavigator.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
@ -398,6 +401,25 @@
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAAExJREFUOE9joAr49u3bf1IxVCsEgAWC58Dxh/cf4RhZDETHTNiHaQgpBoAwzBCo
dtINAGGiDUDGyGpoawAxeNSAQWkAORiqnRLAwAAA9EMMU8Daa3MAAAAASUVORK5CYII=
</value>
</data>
<data name="ToolStripButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALlSURBVDhPhZJpSNNxGMf/HRQURBCVrlLU7LASrzCPGGMl
llFZrWEea6kzNY+akcd0nnmUbTr9OxWdY815TeeZWKCJV16pmQaCvkhd9CZMDErdt6l/yhDsA8+r3/fz
8DwPP+J/xNyicYfzzOemlYcwKTNelIWaFrEsLHZQz5sT6kpjtipMlmdKDbG+pEFmYiqyOUU++7Jnqu0w
2+yPHz2ZmFU7YUZ1BKN5Zt+oyOaQN/dkaoeaMddJYnFIjvkuEtPvm/A6yXqKimzODTcWL1/4SPd9uArL
49VYGNVA25aNBB+6mor8C49xlJvLpc9lezNAcpiLgewz/cInwb+0aj4+1yZAWxeLDukDWPqearLkW+6m
tDU4zqbMXDp9WezJwPoqFoVBkp+M9JxYCJ8/Ru3Hl0hpTcRpwbESW6HhLkonCBHbuqMg8Dqq430xViqA
ks9CtjcT0oALkA0JEKJ0hL/MGql94aj8VIRwTQgcAu1ISicIyW3TyolW1YaDqaIZEA1Gwk9uh4T6O2BL
TyCyOwBc8i4myaug9I0HC1OeR6jiHALktuAWWUFQw0JFXxYiKq/hosgAHiI2Zguv/G2w1SYrShgV8udg
wQp7aAZJqAdyVsWyPjHEbyIg787AfaULzgp36joK3PzXbMcyv8v8d/NtX4CnFWrEFqvgq993RX7REob0
5mCkNPEQX89FYmMApO1J8CpxhrmQWCJM3PJZrLCGhbrxZSSPAf69gE8b4Fl4EuW9Yij1P1DelYHizjR9
kyDktSeCp3SFUSzxlRZNWBEjQoul/ioJ+DVacJoBjkYHT5UO7nmmuJR1GEzRATg92wsfmSPIt/G4p3CB
XtQaRBEWq9NPZNFnq1IewiOuB7wWgPtKP4EG8K4DvBoAdtok4vipsEneDo6cCeMYYpomII6vyitMyHkO
jQnu0fYshcYuvA+MuBF9fQBDMAx69ADMXMunJHzf+P1BW34axWzDwRjChFL1EMRvm7XL1ad4XbkAAAAA
SUVORK5CYII=
</value>
</data>
<metadata name="TBDD_CLIENTBindingNavigator.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

View File

@ -34,7 +34,14 @@ Public Class frmMain
End Sub
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
Dim frm As New frmADImport()
Dim frm As New frmADImport_Users()
frm.ShowDialog()
LoadData()
End Sub
Private Sub ToolStripButton3_Click(sender As Object, e As EventArgs) Handles ToolStripButton3.Click
Dim frm As New frmADImport_Groups()
frm.ShowDialog()
LoadData()
@ -46,6 +53,9 @@ Public Class frmMain
End If
Dim groupId As Integer = GetSelectedGroupId()
Dim group As TBDD_USER_GROUPSRow = GetSelectedGroup()
labelGroups_AssignedUsers.Text = String.Format("Benutzer in {0}:", group.NAME)
gridGroups_AssignedUsers.DataSource = GetAssignedUsersByGroupId(groupId)
gridGroups_AvailableUsers.DataSource = GetAvailableUsersByGroupId(groupId)
@ -73,21 +83,148 @@ Public Class frmMain
gridModules_AvailableUsers.DataSource = GetAvailableUsersByModuleId(moduleId)
End Sub
Private Sub LoadData()
Try
TBDD_CLIENTTableAdapter.Fill(UserDataSet.TBDD_CLIENT)
TBDD_USER_GROUPSTableAdapter.Fill(UserDataSet.TBDD_USER_GROUPS)
TBDD_CLIENT_USERTableAdapter.Fill(UserDataSet.TBDD_CLIENT_USER)
TBDD_GROUPS_USERTableAdapter.Fill(UserDataSet.TBDD_GROUPS_USER)
TBDD_USERTableAdapter.Fill(UserDataSet.TBDD_USER)
TBDD_MODULESTableAdapter.Fill(UserDataSet.TBDD_MODULES)
TBDD_USER_MODULESTableAdapter.Fill(UserDataSet.TBDD_USER_MODULES)
Catch ex As Exception
MsgBox($"Error while loading UserData: {ex.Message}")
End Try
Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) Handles ToolStripButton2.Click
LoadData()
End Sub
Private Sub btnGroups_AddUsers_Click(sender As Object, e As EventArgs) Handles btnGroups_AddUsers.Click
Dim selectedUserHandles = gvGroups_AvailableUsers.GetSelectedRows().ToList()
Dim selectedGroup As TBDD_USER_GROUPSRow = GetSelectedGroup()
For Each handle As Integer In selectedUserHandles
Dim rowView As DataRowView = gvGroups_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)
gridGroups_AssignedUsers.DataSource = GetAssignedUsersByGroupId(selectedGroup.GUID)
gridGroups_AvailableUsers.DataSource = GetAvailableUsersByGroupId(selectedGroup.GUID)
gvGroups_AvailableUsers.ClearSelection()
gvGroups_AssignedUsers.ClearSelection()
UpdateSavedLabel()
End Sub
Private Sub btnGroups_RemoveUsers_Click(sender As Object, e As EventArgs) Handles btnGroups_RemoveUsers.Click
Dim selectedUserHandles = gvGroups_AssignedUsers.GetSelectedRows().ToList()
Dim selectedGroup As TBDD_USER_GROUPSRow = GetSelectedGroup()
For Each handle As Integer In selectedUserHandles
Dim rowView As DataRowView = gvGroups_AssignedUsers.GetRow(handle)
Dim userRow As TBDD_USERRow = rowView.Row
TBDD_GROUPS_USERTableAdapter.Delete(userRow.GUID, selectedGroup.GUID)
Next
listGroups.DataSource = GetGroupsForUser(USERNAMETextBox.Text)
gridGroups_AssignedUsers.DataSource = GetAssignedUsersByGroupId(selectedGroup.GUID)
gridGroups_AvailableUsers.DataSource = GetAvailableUsersByGroupId(selectedGroup.GUID)
gvGroups_AvailableUsers.ClearSelection()
gvGroups_AssignedUsers.ClearSelection()
UpdateSavedLabel()
End Sub
Private Sub btnClients_AddUsers_Click(sender As Object, e As EventArgs) Handles btnClients_AddUsers.Click
Dim selectedUserHandles = gvGroups_AssignedUsers.GetSelectedRows().ToList()
Dim selectedClient As TBDD_CLIENTRow = GetSelectedClient()
For Each handle As Integer In selectedUserHandles
Dim rowView As DataRowView = gvGroups_AssignedUsers.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)
' Verfügbare Benutzer aktualisieren und Checkboxen leeren
gridClients_AssignedUsers.DataSource = GetAssignedUsersByClientId(selectedClient.GUID)
gridClients_AvailableUsers.DataSource = GetAvailableUsersByClientId(selectedClient.GUID)
gvClients_AssignedUsers.ClearSelection()
gvClients_AvailableUsers.ClearSelection()
UpdateSavedLabel()
End Sub
Private Sub btnClients_RemoveUsers_Click(sender As Object, e As EventArgs) Handles btnClients_RemoveUsers.Click
Dim selectedUserHandles = gvGroups_AssignedUsers.GetSelectedRows().ToList()
Dim selectedClient As TBDD_CLIENTRow = GetSelectedClient()
For Each handle As Integer In selectedUserHandles
Dim rowView As DataRowView = gvGroups_AssignedUsers.GetRow(handle)
Dim userRow As TBDD_USERRow = rowView.Row
TBDD_CLIENT_USERTableAdapter.Delete(userRow.GUID, selectedClient.GUID)
Next
listClients.DataSource = GetClientsForUser(USERNAMETextBox.Text)
' Verfügbare Benutzer aktualisieren und Checkboxen leeren
gridClients_AssignedUsers.DataSource = GetAssignedUsersByClientId(selectedClient.GUID)
gridClients_AvailableUsers.DataSource = GetAvailableUsersByClientId(selectedClient.GUID)
gvClients_AssignedUsers.ClearSelection()
gvClients_AvailableUsers.ClearSelection()
UpdateSavedLabel()
End Sub
Private Sub btnModules_AddUsers_Click(sender As Object, e As EventArgs) Handles btnModules_AddUsers.Click
Dim selectedUserHandles = gvModules_AssignedUsers.GetSelectedRows().ToList()
Dim selectedModule As TBDD_MODULESRow = GetSelectedModule()
For Each handle As Integer In selectedUserHandles
Dim rowView As DataRowView = gvModules_AssignedUsers.GetRow(handle)
Dim userRow As TBDD_USERRow = rowView.Row
TBDD_CLIENT_USERTableAdapter.Insert(userRow.GUID, selectedModule.GUID, $"Assign User {userRow.USERNAME} to Module {selectedModule.NAME}", Environment.UserName)
Next
listModules.DataSource = GetModulesForUser(USERNAMETextBox.Text)
' Verfügbare Benutzer aktualisieren und Checkboxen leeren
gridModules_AssignedUsers.DataSource = GetAssignedUsersByModuleId(selectedModule.GUID)
gridModules_AvailableUsers.DataSource = GetAvailableUsersByModuleId(selectedModule.GUID)
gvModules_AssignedUsers.ClearSelection()
gvModules_AvailableUsers.ClearSelection()
UpdateSavedLabel()
End Sub
Private Sub btnModules_RemoveUsers_Click(sender As Object, e As EventArgs) Handles btnModules_RemoveUsers.Click
Dim selectedUserHandles = gvModules_AssignedUsers.GetSelectedRows().ToList()
Dim selectedModule As TBDD_MODULESRow = GetSelectedModule()
For Each handle As Integer In selectedUserHandles
Dim rowView As DataRowView = gvModules_AssignedUsers.GetRow(handle)
Dim userRow As TBDD_USERRow = rowView.Row
TBDD_USER_MODULESTableAdapter.Delete(userRow.GUID, selectedModule.GUID)
Next
listModules.DataSource = GetModulesForUser(USERNAMETextBox.Text)
' Verfügbare Benutzer aktualisieren und Checkboxen leeren
gridModules_AssignedUsers.DataSource = GetAssignedUsersByModuleId(selectedModule.GUID)
gridModules_AvailableUsers.DataSource = GetAvailableUsersByModuleId(selectedModule.GUID)
gvModules_AssignedUsers.ClearSelection()
gvModules_AvailableUsers.ClearSelection()
UpdateSavedLabel()
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)
@ -136,18 +273,24 @@ Public Class frmMain
Validate()
TBDD_USERBindingSource.EndEdit()
TBDD_USERTableAdapter.Update(UserDataSet.TBDD_USER)
UpdateSavedLabel()
End Sub
Private Sub TBDD_USER_GROUPSBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles TBDD_USER_GROUPSBindingNavigatorSaveItem.Click
Validate()
TBDD_USER_GROUPSBindingSource.EndEdit()
TBDD_USER_GROUPSTableAdapter.Update(UserDataSet.TBDD_USER_GROUPS)
UpdateSavedLabel()
End Sub
Private Sub TBDD_CLIENTBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles TBDD_CLIENTBindingNavigatorSaveItem.Click
Validate()
TBDD_CLIENTBindingSource.EndEdit()
TBDD_CLIENTTableAdapter.Update(UserDataSet.TBDD_CLIENT)
UpdateSavedLabel()
End Sub
Private Sub TBDD_USERBindingSource_Update(sender As Object, e As EventArgs) Handles TBDD_USERBindingSource.PositionChanged, TBDD_USERBindingSource.ListChanged
@ -159,6 +302,20 @@ Public Class frmMain
End Sub
#End Region
#Region "Database Helpers"
Private Sub LoadData()
Try
TBDD_CLIENTTableAdapter.Fill(UserDataSet.TBDD_CLIENT)
TBDD_USER_GROUPSTableAdapter.Fill(UserDataSet.TBDD_USER_GROUPS)
TBDD_CLIENT_USERTableAdapter.Fill(UserDataSet.TBDD_CLIENT_USER)
TBDD_GROUPS_USERTableAdapter.Fill(UserDataSet.TBDD_GROUPS_USER)
TBDD_USERTableAdapter.Fill(UserDataSet.TBDD_USER)
TBDD_MODULESTableAdapter.Fill(UserDataSet.TBDD_MODULES)
TBDD_USER_MODULESTableAdapter.Fill(UserDataSet.TBDD_USER_MODULES)
Catch ex As Exception
MsgBox($"Error while loading UserData: {ex.Message}")
End Try
End Sub
Private Function GetAvailableUsersByGroupId(groupId As Integer) As TBDD_USERDataTable
Dim dt As New TBDD_USERDataTable()
TBDD_USERTableAdapter.FillByGroupId_NotInGroup(dt, groupId)
@ -247,7 +404,7 @@ Public Class frmMain
Return moduleId
End Function
Private Function GetModifiedRowsFromDragDropData(grid As GridControl, data As IDataObject)
Private Function GetModifiedRowsFromDragDropData(grid As GridControl, data As IDataObject) As List(Of TBDD_USERRow)
Dim table As DataTable = grid.DataSource
Dim selectedGroup As TBDD_USER_GROUPSRow = GetSelectedGroup()
Dim modifiedRows As New List(Of TBDD_USERRow)
@ -367,6 +524,8 @@ Public Class frmMain
gridGroups_AvailableUsers.DataSource = GetAvailableUsersByGroupId(selectedGroup.GUID)
gvGroups_AvailableUsers.ClearSelection()
gvGroups_AssignedUsers.ClearSelection()
UpdateSavedLabel()
End Sub
Private Sub gridUsersAssigned_DragDrop(sender As Object, e As DragEventArgs) Handles gridGroups_AssignedUsers.DragDrop
@ -387,6 +546,8 @@ Public Class frmMain
gridGroups_AvailableUsers.DataSource = GetAvailableUsersByGroupId(selectedGroup.GUID)
gvGroups_AvailableUsers.ClearSelection()
gvGroups_AssignedUsers.ClearSelection()
UpdateSavedLabel()
End Sub
#End Region
#Region "DragDrop Events for Clients"
@ -407,6 +568,8 @@ Public Class frmMain
gridClients_AvailableUsers.DataSource = GetAvailableUsersByClientId(selectedClient.GUID)
gvClients_AssignedUsers.ClearSelection()
gvClients_AvailableUsers.ClearSelection()
UpdateSavedLabel()
End Sub
Private Sub gridClients_AssignedUsers_DragDrop(sender As Object, e As DragEventArgs) Handles gridClients_AssignedUsers.DragDrop
@ -427,6 +590,8 @@ Public Class frmMain
gridClients_AvailableUsers.DataSource = GetAvailableUsersByClientId(selectedClient.GUID)
gvClients_AssignedUsers.ClearSelection()
gvClients_AvailableUsers.ClearSelection()
UpdateSavedLabel()
End Sub
#End Region
#Region "DragDrop Events for Modules"
@ -436,6 +601,17 @@ Public Class frmMain
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
End If
End If
For Each userRow As TBDD_USERRow In userRowsToBeDeleted
TBDD_USER_MODULESTableAdapter.Delete(userRow.GUID, selectedModule.GUID)
Next
@ -447,6 +623,8 @@ Public Class frmMain
gridModules_AvailableUsers.DataSource = GetAvailableUsersByModuleId(selectedModule.GUID)
gvModules_AssignedUsers.ClearSelection()
gvModules_AvailableUsers.ClearSelection()
UpdateSavedLabel()
End Sub
Private Sub gridModules_AssignedUsers_DragDrop(sender As Object, e As DragEventArgs) Handles gridModules_AssignedUsers.DragDrop
@ -467,10 +645,11 @@ Public Class frmMain
gridModules_AvailableUsers.DataSource = GetAvailableUsersByModuleId(selectedModule.GUID)
gvModules_AssignedUsers.ClearSelection()
gvModules_AvailableUsers.ClearSelection()
UpdateSavedLabel()
End Sub
Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) Handles ToolStripButton2.Click
LoadData()
End Sub
#End Region
End Class