
Imports System.Text.RegularExpressions
Imports VERAG_PROG_ALLGEMEIN

Public Class frmMitarbDetails

    Private UID As New cMitarbeiter
    Private berechtigungen As New List(Of cBerechtigungen)
    Public mid As Integer = -1
    Public isUpdate As Boolean = False
    Public mitarbeiter As New VERAG_PROG_ALLGEMEIN.cMitarbeiter
    Private usrBerechtigung As New List(Of cUserBerechtigungen)
    Private usrBerechtigungNEU As New List(Of cUserBerechtigungen)
    Dim ZOLLDATENBEARB = False
    Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
    Dim FirmaTmp = ""
    Dim timas As cTimasAPI
    Dim dtTimas As New DataTable


    Dim USRPARAM_Bind As cEasyBinding


    Sub New()

        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()

        ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.

    End Sub

    Sub New(Firma)

        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()
        Me.FirmaTmp = Firma
        btnADladen.Visible = True
        ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.

    End Sub

    Sub New(mitarbeiter As cMitarbeiter)

        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()

        ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.

    End Sub

    Sub initUsrParamBinding(maId)
        Try
            With dgvUserParameter

                Dim table = "tblMitarbeiter_UserParams"
                USRPARAM_Bind = New cEasyBinding("ADMIN")
                USRPARAM_Bind.initBinding("SELECT *  FROM " & table & " WHERE usrPr_maId='" & maId & "'", table)
                .DataSource = USRPARAM_Bind.bindingdataTable
                .AutoSize = True
                USRPARAM_Bind.bindingdataTable.Columns("usrPr_maId").DefaultValue = maId

                If .ColumnCount > 0 Then
                    .Columns("usrPr_maId").Visible = False
                    .Columns("usrPr_parameter").HeaderText = "Parameter"
                    .Columns("usrPr_parameter").Width = 150
                    .Columns("usrPr_value").HeaderText = "Wert"
                    .ScrollBars = ScrollBars.Vertical
                    .Columns("usrPr_value").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
                End If
            End With
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

    Private Sub frmMitarbDetails_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        cboFirmaFMZOLL.fillWithSQL("SELECT[Firma_ID],[Firma_Bez]  FROM [tblFirma] ", True, "FMZOLL", True)
        ' cboKasse.fillWithSQL("SELECT [Standard_RKSV_KasseId],[Name]  FROM [Personal] ", True, "FMZOLL", True)
        cboKasse.fillWithSQL("SELECT [rksv_id],[rksv_bez]  FROM [tblRKSV_Kassen] ", True, "FMZOLL", True)

        cboPersonal.fillWithSQL("SELECT  ID, Name FROM Personal WHERE [Status]<>'L' ORDER BY Name ", False, "FMZOLL", True)
        cboSpedbuch.fillWithSQL("SELECT  ID, Name FROM Personal WHERE [Status]<>'L' ORDER BY Name ", False, "FMZOLL", True)

        MyComboBox2.fillWithSQL("SELECT FilialenNr, cast(FilialenNr as varchar(4)) + ' ' + Grenzstelle FROM Filialen WHERE Fil_Status='A' ORDER BY FilialenNr ", False, "FMZOLL", True)
        MyComboBox3.fillWithSQL("SELECT [PreislistenNr],[PreislistenBez]  FROM [tblPreislisten] ORDER BY PreislistenBez", False, "FMZOLL", True)

        cboDP.fillWithSQL("SELECT [dpset_niederlassung]  FROM [tblDienstSettings] ORDER BY dpset_niederlassung", False, "ADMIN", True)



        MyListBox1.fillWithSQL("SELECT [Firma_ID],[Firma_Bez]  FROM [VERAG].[dbo].[tblFirma]", False, "FMZOLL")
        MyListBox1.Items.Insert(0, New VERAG_PROG_ALLGEMEIN.MyListItem("Alle", "A"))


        lbSprachen.fillWithSQL("SELECT [wert], [bezeichnung]  FROM [dbo].[tblSprachen]", False, "ADMIN")

        cboDPFirma.Items.Clear()
        cboDPFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboDPFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ALLE", "ALLE"))
        cboDPFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG", "VERAG"))
        cboDPFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATILLA", "ATILLA"))
        cboDPFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("IMEX", "IMEX"))
        cboDPFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("UNISPED", "UNISPED"))
        cboDPFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AMBAR", "AMBAR"))
        cboDPFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("FRONTOFFICE", "FRONTOFFICE"))
        cboDPFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERIMEX", "VERIMEX"))
        cboDPFirma2.Items.Clear()
        cboDPFirma2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboDPFirma2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ALLE", "ALLE"))
        cboDPFirma2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG", "VERAG"))
        cboDPFirma2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATILLA", "ATILLA"))
        cboDPFirma2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("IMEX", "IMEX"))
        cboDPFirma2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("UNISPED", "UNISPED"))
        cboDPFirma2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AMBAR", "AMBAR"))
        cboDPFirma2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("FRONTOFFICE", "FRONTOFFICE"))
        cboDPFirma2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERIMEX", "VERIMEX"))


        cboALIASDomain.Items.Clear()
        cboALIASDomain.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboALIASDomain.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAGOST", "VERAGOST"))
        cboALIASDomain.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("IMEX", "IMEX"))
        cboALIASDomain.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG-SBG", "VERAG-SBG"))
        cboALIASDomain.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAGNEUHAUS", "VERAGNEUHAUS"))
        cboALIASDomain.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG-NCTS (ATILLA)", "VERAG-NCTS"))
        cboALIASDomain.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("UNISPED", "UNISU.AT"))

        cboALIASDomain2.Items.Clear()
        cboALIASDomain2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboALIASDomain2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAGOST", "VERAGOST"))
        cboALIASDomain2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("IMEX", "IMEX"))
        cboALIASDomain2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG-SBG", "VERAG-SBG"))
        cboALIASDomain2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAGNEUHAUS", "VERAGNEUHAUS"))
        cboALIASDomain2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG-NCTS (ATILLA)", "VERAG-NCTS"))
        cboALIASDomain2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("UNISPED", "UNISU.AT"))

        cboProgSprache.Items.Clear()
        cboProgSprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DEUTSCH", "DE"))
        cboProgSprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("TÜRKISCH", "TR"))
        cboProgSprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ENGLISCH", "EN"))

        clbTimasMehreFirmen.Items.Clear()
        clbTimasMehreFirmen.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATILLA", "ATILLA"))
        clbTimasMehreFirmen.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("FRONTOFFICE", "FO"))
        clbTimasMehreFirmen.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("IMEX", "IMEX"))
        clbTimasMehreFirmen.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG", "VERAG"))
        clbTimasMehreFirmen.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AMBAR", "AMBAR"))



        cbxClientTimas.Items.Clear()
        cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AMBAR", "AMBAR"))
        cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATILLA", "ATILLA"))
        cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("FRONTOFFICE", "FO"))
        cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("IMEX", "IMEX"))
        cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG AG", "VERAG AG"))
        cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG CS", "VERAG CS"))
        cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG GMBH", "VERAG GMBH"))
        cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG UNISPED Ltd", "VERAG UNISPED LIMITED"))
        cbxClientTimas.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG CUSTOMS LOGISTICS Ltd", "VERAG CL LIMITED"))

        cbxClientTimas.SelectedIndex = 0


        cboFirma.Items.Clear()
        cboFirma.Items.Add("VERAG")
        cboFirma.Items.Add("ATILLA")
        cboFirma.Items.Add("IMEX")
        cboFirma.Items.Add("UNISPED")
        cboFirma.Items.Add("AMBAR")
        cboFirma.Items.Add("FRONTOFFICE")
        cboFirma.Items.Add("VERIMEX")
        cboFirma.Items.Add("DURMAZ")
        cboFirma.Items.Add("ALLE")


        cboFirmaHaupt.Items.Clear()
        cboFirmaHaupt.Items.Add("VERAG")
        cboFirmaHaupt.Items.Add("ATILLA")
        cboFirmaHaupt.Items.Add("IMEX")
        cboFirmaHaupt.Items.Add("UNISPED")
        cboFirmaHaupt.Items.Add("AMBAR")
        cboFirmaHaupt.Items.Add("FRONTOFFICE")
        cboFirmaHaupt.Items.Add("VERIMEX")
        cboFirmaHaupt.Items.Add("DURMAZ")


        cboFaktGrp.Items.Clear()
        cboFaktGrp.fillWithSQL("SELECT [Code],[Bezeichnung] FROM tblFakturierungsgruppe", False, "ADMIN", False)
        cboFaktGrp.changeItem("")


        ZOLLDATENBEARB = False

        txtPwd.Visible = False
        berechtigungen = UID.getBerechtigungen()
        cbxEinsteigsDat.Checked = False
        cbxGebDat.Checked = False
        If Not IsNothing(berechtigungen) Then
            For Each d As cBerechtigungen In berechtigungen
                If d.prog_codename = "ADMIN" Then cboAdminBer.Items.Add(d.ber_name)
                If d.prog_codename = "DISPO" Then cboDispoBer.Items.Add(d.ber_name)
                If d.prog_codename = "UID" Then cboUidBer.Items.Add(d.ber_name)
                If d.prog_codename = "PARKZEIT" Then cboParkzeitBer.Items.Add(d.ber_name)
                If d.prog_codename = "ZOLL" Then cboZollBer.Items.Add(d.ber_name)
                If d.prog_codename = "SDL" Then cboSdlBer.Items.Add(d.ber_name)
                If d.prog_codename = "AVISO" Then cboAvisoBer.Items.Add(d.ber_name)
            Next
            cboAdminBer.SelectedIndex = 0
        End If
        ' cboNiederlassung.SelectedIndex = 0

        If FirmaTmp <> "" Then
            cboFirma.Text = FirmaTmp
        End If

        cboAbteilung.Items.Clear()
        cboAbteilung.fillWithSQL("SELECT [abt_kuerzel],[abt_bezeichnung] FROM tblAbteilungen", False, "ADMIN", True)

        cboFunktion.Items.Clear()
        cboFunktion.fillWithSQL("SELECT [fun_kuerzel],[fun_bezeichnung] FROM tblMitarbeiter_Funktionen", False, "ADMIN", True)

        cboNiederlassung.Items.Clear()
        cboNiederlassung.fillWithSQL("SELECT [nl_kuerzel],[nl_bezeichnung] FROM tblNiederlassungen", False, "ADMIN", True)


        'cboAbteilung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        'cboAbteilung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Zollabteilung", "ZOLL"))
        'cboAbteilung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("quick-stop", "QS"))
        'cboAbteilung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Buchhaltung", "BH"))
        'cboAbteilung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("EDV", "EDV"))
        'cboAbteilung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Fiskal", "FISK"))
        'cboAbteilung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Geschäftsführung", "GF"))
        'cboAbteilung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Lager", "LAGER"))
        ' cboAbteilung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("MDM", "MDM"))
        'cboAbteilung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Verrechnung", "VRR"))



        '  cboNiederlassung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        '  cboNiederlassung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Suben", "SUB"))
        '  cboNiederlassung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Salzburg", "SBG"))
        '  cboNiederlassung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Waidhaus", "WAI"))
        '  cboNiederlassung.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Nickelsdorf", "NKD"))


        txtGebDat.Format = DateTimePickerFormat.Custom
        txtGebDat.CustomFormat = "dd.MM.yyyy"
        datGekuendigtAm.Format = DateTimePickerFormat.Custom
        datGekuendigtAm.CustomFormat = "dd.MM.yyyy"
        datEinstiegsdatum.Format = DateTimePickerFormat.Custom
        datEinstiegsdatum.CustomFormat = "dd.MM.yyyy"

        If mid >= 0 Then
            'mid = frmMitarbeiter.mid
            mitarbeiter = UID.getMitarbeiterById(mid)
            usrBerechtigung = UID.getUserBerechtigungen(mid)
            '   usrBerechtigungNEU = UID.getUserBerechtigungenNEU(mid)

            If Not IsNothing(mitarbeiter) Then
                initMitarbeiter()
                initUsrParamBinding(mid)
            Else
                MsgBox("Fehler beim Laden der Daten!")
            End If
        Else
            rbtnGeschlechtM.Checked = True
            ' btnSave.Visible = False
            TabControl2.TabPages.Remove(TabPage3)
            txtPwd.Text = "0000"
        End If




        lblEintrittsdatum.Text = IIf(cbxEinsteigsDat.Checked, datEinstiegsdatum.Value.ToShortDateString, "--") & IIf(cbxGekuendigt.Checked, " bis " & datGekuendigtAm.Value.ToShortDateString, "")

        If False Then

            For Each ber As cUserBerechtigungen In usrBerechtigungNEU
                If ber.bepr_programm = "ADMIN" Then cbxADMIN.Checked = True ': cboAdminBer.Text = ber.ber_name
                If ber.bepr_programm = "SDL" Then cbxSDL.Checked = True ': cboSdlBer.Text = ber.ber_name
                If ber.bepr_programm = "AVISO" Then cbxAVISO.Checked = True ': cboAvisoBer.Text = ber.ber_name
            Next

        End If

        For Each ber As cUserBerechtigungen In usrBerechtigung

            If ber.bepr_programm = "ADMIN" Then cbxADMIN.Checked = True : cboAdminBer.Text = ber.ber_name
            If ber.bepr_programm = "DISPO" Then cbxDISPO.Checked = True : cboDispoBer.Text = ber.ber_name
            If ber.bepr_programm = "UID" Then cbxUID.Checked = True : cboUidBer.Text = ber.ber_name
            If ber.bepr_programm = "PARKZEIT" Then cbxPARKZEIT.Checked = True : cboParkzeitBer.Text = ber.ber_name
            If ber.bepr_programm = "ZOLL" Then cbxZOLL.Checked = True : cboZollBer.Text = ber.ber_name
            If ber.bepr_programm = "SDL" Then cbxSDL.Checked = True : cboSdlBer.Text = ber.ber_name
            If ber.bepr_programm = "AVISO" Then cbxAVISO.Checked = True : cboAvisoBer.Text = ber.ber_name
        Next

    End Sub
    Private Sub initMitarbeiter(Optional _isUpdate As Boolean = True)
        isUpdate = _isUpdate
        'isUpdate = True
        ' mit_id.Text = mitarbeiter.mit_id
        Label48.Text = mitarbeiter.mit_id
        txtUsername.Text = mitarbeiter.mit_username
        txtAbweichenderAnzeigename.Text = mitarbeiter.mit_abweichenderAnzeigename
        txtPwd.Text = mitarbeiter.mit_pwd
        If mitarbeiter.mit_geschlecht = "m" Then rbtnGeschlechtM.Checked = True
        If mitarbeiter.mit_geschlecht = "w" Then rbtnGeschlechtW.Checked = True
        txtTitel.Text = mitarbeiter.mit_affix
        txtVname.Text = mitarbeiter.mit_vname
        txtNname.Text = mitarbeiter.mit_nname
        If mitarbeiter.mit_gebdat = "" Then
            cbxGebDat.Checked = False
        Else
            cbxGebDat.Checked = True : txtGebDat.Text = mitarbeiter.mit_gebdat
        End If
        txtStrasse.Text = mitarbeiter.mit_strasse
        txtHausnummer.Text = mitarbeiter.mit_hausnr
        txtLand.Text = mitarbeiter.mit_land
        txtPlz.Text = mitarbeiter.mit_plz
        txtOrt.Text = mitarbeiter.mit_ort
        cboNiederlassung.changeItem(mitarbeiter.mit_niederlassung)
        cboFaktGrp.changeItem(mitarbeiter.mit_fakturierungsgruppe)
        cboAbteilung.changeItem(mitarbeiter.mit_abteilung)
        cboFunktion.changeItem(mitarbeiter.mit_Funktion)
        cboPosition.Text = mitarbeiter.mit_position
        txtDurchwahl.Text = mitarbeiter.mit_durchwahl
        txtTelNr.Text = mitarbeiter.mit_telefonnr
        txtEmail.Text = mitarbeiter.mit_email
        txtMobiltel.Text = mitarbeiter.mit_mobiltel
        cbxAnrufen.Checked = mitarbeiter.mit_allowAnruf
        txtInfo.Text = mitarbeiter.mit_info
        txtATGRNAccessCode_AT51FP7.Text = mitarbeiter.mit_ATGRNAccessCode_AT51FP7
        txtATGRNAccessCode_AT52VA6.Text = mitarbeiter.mit_ATGRNAccessCode_AT52VA6
        txtDakosySB.Text = mitarbeiter.mit_DAKOSY_SB
        txtDyFullName.Text = If(mitarbeiter.mit_DAKOSY_SBFull, "")
        txtTelotecSB.Text = mitarbeiter.mit_TELOTEC_SB
        txtCSUser.Text = mitarbeiter.mit_CSuser
        txtCSPW.Text = mitarbeiter.mit_CSpwd
        txtLohnNr.Text = mitarbeiter.mit_PersonalNr
        txtTelNr.Text = mitarbeiter.mit_telefonnr
        txtprivateEMail.Text = mitarbeiter.mit_emailprivat

        cboALIASDomain.changeItem(mitarbeiter.mit_AliasAD_Domain)
        txtALIASUser.Text = mitarbeiter.mit_AliasAD_Username

        cboALIASDomain2.changeItem(mitarbeiter.mit_AliasAD_Domain2)
        txtALIASUser2.Text = mitarbeiter.mit_AliasAD_Username2


        If mitarbeiter.mit_firma = "ALL" Then
            cboFirma.Text = "ALLE"
            cboFirmaHaupt.Text = mitarbeiter.mit_FirmaHaupt
        Else
            cboFirma.Text = mitarbeiter.mit_firma
        End If

        cbxChatBenutzer.Checked = mitarbeiter.mit_ChatBenutzer
        cboFirmaFMZOLL.changeItem(If(mitarbeiter.mit_firmaFMZoll, ""))

        cboTeam.changeItem(If(mitarbeiter.mit_teamId, ""))

        cbxHO.Checked = mitarbeiter.mit_homeoffice
        cbxTimasNichtStempeln1.Checked = mitarbeiter.mit_timasNichtStempeln
        cbxBeiBeendenAusstempeln.Checked = mitarbeiter.mit_ausstempelnBeiBeenden



        cboKasse.changeItem("")
        If mitarbeiter.mit_FMZollPersID IsNot Nothing Then
            cboKasse.changeItem(SQL.getValueTxtBySql("SELECT [Standard_RKSV_KasseId]  FROM [Personal] WHERE ID='" & mitarbeiter.mit_FMZollPersID & "'", "FMZOLL"))
        End If


        If mitarbeiter.mit_FirmenDatenAnzeige IsNot Nothing AndAlso mitarbeiter.mit_FirmenDatenAnzeige <> "" Then
            For Each f In mitarbeiter.mit_FirmenDatenAnzeige.ToString.Split(",")
                'Dim i = 0
                For i = 0 To MyListBox1.Items.Count - 1
                    '  If DirectCast(i, VERAG_PROG_ALLGEMEIN.MyListItem).Value = f Then
                    '   MsgBox(MyListBox1.Items.IndexOf(i))
                    'End If
                    If DirectCast(MyListBox1.Items(i), VERAG_PROG_ALLGEMEIN.MyListItem).Value.ToString = f.ToString Then
                        MyListBox1.SetSelected(i, True)
                    End If
                Next
            Next
        End If

        If mitarbeiter.mit_Sprachkentnisse IsNot Nothing AndAlso mitarbeiter.mit_Sprachkentnisse <> "" Then
            For Each f In mitarbeiter.mit_Sprachkentnisse.ToString.Split(",")
                For i = 0 To lbSprachen.Items.Count - 1
                    If DirectCast(lbSprachen.Items(i), VERAG_PROG_ALLGEMEIN.MyListItem).Value.ToString = f.ToString Then
                        lbSprachen.SetSelected(i, True)
                    End If
                Next
            Next
        End If


        If mitarbeiter.mit_einstiegsdatum = "" Then
            cbxEinsteigsDat.Checked = False
        Else
            cbxEinsteigsDat.Checked = True : datEinstiegsdatum.Text = mitarbeiter.mit_einstiegsdatum
        End If


        If mitarbeiter.mit_gekuendigt Then
            cbxGekuendigt.Checked = True
            If mitarbeiter.mit_kuendigungsdatum <> "" Then
                datGekuendigtAm.Text = mitarbeiter.mit_kuendigungsdatum
            End If
        Else
            cbxGekuendigt.Checked = False
        End If

        If mitarbeiter.mit_FMZollPersID > 0 Then
            cboPersonal._value = mitarbeiter.mit_FMZollPersID
        End If

        If mitarbeiter.mit_DpUserStandardDP IsNot Nothing Then cboDP.changeItem(mitarbeiter.mit_DpUserStandardDP)
        If mitarbeiter.mit_DpUserStandardFirma IsNot Nothing Then cboDPFirma.changeItem(mitarbeiter.mit_DpUserStandardFirma)
        If mitarbeiter.mit_DpUserStandardFirma2 IsNot Nothing Then cboDPFirma2.changeItem(mitarbeiter.mit_DpUserStandardFirma2)

        If mitarbeiter.mit_sprache IsNot Nothing Then cboProgSprache.changeItem(mitarbeiter.mit_sprache)

        cbxSpedBuch.Checked = mitarbeiter.mit_FMZollPersIDKasseIsnotSpedBuch

        If mitarbeiter.mit_FMZollPersIDSpedBuch > 0 Then
            cboSpedbuch._value = mitarbeiter.mit_FMZollPersIDSpedBuch
        End If

        If mitarbeiter.mit_standartFiliale > 0 Then
            MyComboBox2._value = mitarbeiter.mit_standartFiliale
        End If

        If mitarbeiter.mit_standardPreisliste > 0 Then
            MyComboBox3._value = mitarbeiter.mit_standardPreisliste
        End If

        cbxTestaccount.Checked = If(mitarbeiter.mit_TESTonly, False)

        initFoto()

        cbxTimasMehrereFirmen.Checked = mitarbeiter.mit_timasMehrereFirmen

        If cboFirmaFMZOLL._value <> "" AndAlso IsNumeric(cboFirmaFMZOLL._value) Then
            loadBenachrichtiungenListe(CInt(cboFirmaFMZOLL._value))

        Else

            loadBenachrichtiungenListe()

        End If


        If mitarbeiter.mit_timasFirmen IsNot Nothing AndAlso mitarbeiter.mit_timasFirmen <> "" Then
            For Each f In mitarbeiter.mit_timasFirmen.ToString.Split(",")
                For i = 0 To clbTimasMehreFirmen.Items.Count - 1
                    If DirectCast(clbTimasMehreFirmen.Items(i), VERAG_PROG_ALLGEMEIN.MyListItem).Value.ToString = f.ToString Then
                        clbTimasMehreFirmen.SetItemChecked(i, True)
                    End If
                Next
            Next
        End If


        If mitarbeiter.mit_EMailbenachrichtigungen IsNot Nothing AndAlso mitarbeiter.mit_EMailbenachrichtigungen <> "" Then
            For Each f In mitarbeiter.mit_EMailbenachrichtigungen.ToString.Split(",")
                For i = 0 To clInterneMailBenachrichtigungen.Items.Count - 1
                    If DirectCast(clInterneMailBenachrichtigungen.Items(i), VERAG_PROG_ALLGEMEIN.MyListItem).Value.ToString = f.ToString Then
                        clInterneMailBenachrichtigungen.SetItemChecked(i, True)
                    End If
                Next
            Next
        End If

        ' picFoto.ImageLocation = mitarbeiter.mit_foto
    End Sub

    Sub initFoto()
        If mitarbeiter.mit_foto_DocId IsNot Nothing Then
            Try
                picFoto.BackgroundImage = Image.FromFile(VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(mitarbeiter.mit_foto_DocId))
            Catch ex As Exception
                picFoto.BackgroundImage = My.Resources.personGray_m
            End Try
        ElseIf mitarbeiter.mit_geschlecht = "w" Then
            picFoto.BackgroundImage = My.Resources.personGray_w
        Else
            picFoto.BackgroundImage = My.Resources.personGray_m
        End If
    End Sub
    Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
        Me.Close()
    End Sub

    Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
        Dim newMid As Integer = 0
        If txtVname.Text = "" And txtNname.Text = "" Then MsgBox("Bitte geben Sie einen Namen ein!") : Exit Sub

        If USRPARAM_Bind IsNot Nothing Then
            USRPARAM_Bind.updateBinding()
        End If

        getMitarbeiter()

        If isUpdate Then
            mitarbeiter.mit_id = mid
            If UID.updateMitarbeiter(mitarbeiter) Then saveBerechtigungen(newMid) : Me.Close()
        Else
            If UID.insertMitarbeiter(mitarbeiter, newMid) Then saveBerechtigungen(newMid) : Me.Close()
        End If

    End Sub
    Private Sub saveBerechtigungen(newMitId As Integer)

        If newMitId > 0 Then
            mid = newMitId
        End If

        Dim ber_admin As String = ""
        Dim ber_dispo As String = ""
        Dim ber_uid As String = ""
        Dim ber_parkzeit As String = ""
        Dim ber_zoll As String = ""
        Dim ber_sdl As String = ""
        Dim ber_aviso As String = ""
        For Each ber As cUserBerechtigungen In usrBerechtigung
            If ber.bepr_programm = "ADMIN" Then ber_admin = ber.ber_name
            If ber.bepr_programm = "DISPO" Then ber_dispo = ber.ber_name
            If ber.bepr_programm = "UID" Then ber_uid = ber.ber_name
            If ber.bepr_programm = "PARKZEIT" Then ber_parkzeit = ber.ber_name
            If ber.bepr_programm = "ZOLL" Then ber_zoll = ber.ber_name
            If ber.bepr_programm = "SDL" Then ber_sdl = ber.ber_name
            If ber.bepr_programm = "AVISO" Then ber_aviso = ber.ber_name
        Next


        If cbxADMIN.Checked Then
            UID.insertUpdateBerechtigungProg(mid, Nothing, "ADMIN", True)
        Else
            UID.deleteBerechtigungProg(mid, "ADMIN")
        End If

        If cbxAVISO.Checked Then
            UID.insertUpdateBerechtigungProg(mid, Nothing, "AVISO", True)
        Else
            UID.deleteBerechtigungProg(mid, "AVISO")
        End If

        If cbxDISPO.Checked Then
            UID.insertUpdateBerechtigungProg(mid, Nothing, "DISPO", True)
        Else
            UID.deleteBerechtigungProg(mid, "DISPO")
        End If

        If cbxSDL.Checked Then
            UID.insertUpdateBerechtigungProg(mid, Nothing, "SDL", True)
        Else
            UID.deleteBerechtigungProg(mid, "SDL")
        End If


        Dim akt_ber_admin As String = ""
        Dim akt_ber_dispo As String = ""
        Dim akt_ber_uid As String = ""
        Dim akt_ber_parkzeit As String = ""
        Dim akt_ber_zoll As String = ""
        Dim akt_ber_sdl As String = ""
        Dim akt_ber_aviso As String = ""
        If cbxADMIN.Checked Then akt_ber_admin = cboAdminBer.Text
        If cbxDISPO.Checked Then akt_ber_dispo = cboDispoBer.Text
        If cbxUID.Checked Then akt_ber_uid = cboUidBer.Text
        If cbxPARKZEIT.Checked Then akt_ber_parkzeit = cboParkzeitBer.Text
        If cbxZOLL.Checked Then akt_ber_zoll = cboZollBer.Text
        If cbxSDL.Checked Then akt_ber_sdl = ""
        If cbxAVISO.Checked Then akt_ber_aviso = cboAvisoBer.Text

        If Not ber_admin = akt_ber_admin Then 'WEnn sich die Berechtigung geändert hat
            Dim berid As Integer = getBerId("ADMIN", cboAdminBer.Text) 'ID anhand der ausgewählten Berechtigung holen 
            If akt_ber_admin = "" Then : UID.deleteBerechtigungProg(mid, "ADMIN") ' wenn keine gesetzt ist -> Berechtigung löschen
            ElseIf ber_admin = "" Then : UID.insertBerechtigungProg(mid, berid, "ADMIN", True) ' wenn vorher keine gesetzt war -> insert
            Else : UID.updateBerechtigungProg(mid, berid, "ADMIN") ' bei Änderung -> update
            End If
        End If

        'If Not ber_dispo = akt_ber_dispo Then
        '    Dim berid As Integer = getBerId("DISPO", cboDispoBer.Text)
        '    If akt_ber_dispo = "" Then : UID.deleteBerechtigungProg(mid, "DISPO")
        '    ElseIf ber_dispo = "" Then : UID.insertBerechtigungProg(mid, berid, "DISPO", True)
        '    Else : UID.updateBerechtigungProg(mid, berid, "DISPO")
        '    End If
        'End If

        If Not ber_uid = akt_ber_uid Then
            Dim berid As Integer = getBerId("UID", cboUidBer.Text)
            If akt_ber_uid = "" Then : UID.deleteBerechtigungProg(mid, "UID")
            ElseIf ber_uid = "" Then : UID.insertBerechtigungProg(mid, berid, "UID", True)
            Else : UID.updateBerechtigungProg(mid, berid, "UID")
            End If
        End If

        If Not ber_parkzeit = akt_ber_parkzeit Then
            Dim berid As Integer = getBerId("PARKZEIT", cboParkzeitBer.Text)
            If akt_ber_parkzeit = "" Then : UID.deleteBerechtigungProg(mid, "PARKZEIT")
            ElseIf ber_parkzeit = "" Then : UID.insertBerechtigungProg(mid, berid, "PARKZEIT", True)
            Else : UID.updateBerechtigungProg(mid, berid, "PARKZEIT")
            End If
        End If


        If Not ber_zoll = akt_ber_zoll Then
            Dim berid As Integer = getBerId("ZOLL", cboZollBer.Text)
            If akt_ber_zoll = "" Then : UID.deleteBerechtigungProg(mid, "ZOLL")
            ElseIf ber_zoll = "" Then : UID.insertBerechtigungProg(mid, berid, "ZOLL", True)
            Else : UID.updateBerechtigungProg(mid, berid, "ZOLL")
            End If
        End If
        '  If Not ber_sdl = akt_ber_sdl Then
        'Dim berid As Integer = getBerId("SDL", cboSdlBer.Text)
        '   If akt_ber_sdl = "" Then : UID.deleteBerechtigungProg(mid, "SDL")
        '  ElseIf ber_sdl = "" Then : UID.insertBerechtigungProg(mid, berid, "SDL", True)
        '  Else : UID.updateBerechtigungProg(mid, berid, "SDL")
        '  End If
        '  End If
        ' If Not ber_aviso = akt_ber_aviso Then
        'Dim berid As Integer = getBerId("AVISO", cboAvisoBer.Text)
        ' If akt_ber_aviso = "" Then 'UID.deleteBerechtigungProg(mid, "AVISO")
        'ElseIf ber_aviso = "" Then : UID.insertBerechtigungProg(mid, berid, "AVISO", True)
        '    Else : UID.updateBerechtigungProg(mid, berid, "AVISO")
        '   End If
        ' End If
    End Sub

    Private Function getBerId(ByVal codename As String, ByVal name As String) As String
        For Each ber As cBerechtigungen In berechtigungen
            If ber.prog_codename = codename And ber.ber_name = name Then Return ber.ber_id
        Next
        Return "-1"
    End Function

    Private Sub getMitarbeiter()
        mitarbeiter.mit_username = txtUsername.Text
        mitarbeiter.mit_abweichenderAnzeigename = txtAbweichenderAnzeigename.Text
        mitarbeiter.mit_pwd = txtPwd.Text
        mitarbeiter.mit_affix = txtTitel.Text
        If rbtnGeschlechtM.Checked Then mitarbeiter.mit_geschlecht = "m"
        If rbtnGeschlechtW.Checked Then mitarbeiter.mit_geschlecht = "w"
        mitarbeiter.mit_vname = txtVname.Text
        mitarbeiter.mit_nname = txtNname.Text
        If cbxGebDat.Checked Then mitarbeiter.mit_gebdat = txtGebDat.Text Else mitarbeiter.mit_gebdat = ""
        mitarbeiter.mit_strasse = txtStrasse.Text
        mitarbeiter.mit_hausnr = txtHausnummer.Text
        mitarbeiter.mit_land = txtLand.Text
        mitarbeiter.mit_plz = txtPlz.Text
        mitarbeiter.mit_ort = txtOrt.Text
        mitarbeiter.mit_niederlassung = cboNiederlassung._value
        mitarbeiter.mit_fakturierungsgruppe = cboFaktGrp._value
        mitarbeiter.mit_abteilung = cboAbteilung._value
        mitarbeiter.mit_Funktion = cboFunktion._value
        mitarbeiter.mit_position = cboPosition.Text
        mitarbeiter.mit_durchwahl = txtDurchwahl.Text
        mitarbeiter.mit_email = txtEmail.Text
        mitarbeiter.mit_mobiltel = txtMobiltel.Text
        mitarbeiter.mit_allowAnruf = cbxAnrufen.Checked
        mitarbeiter.mit_info = txtInfo.Text
        mitarbeiter.mit_ATGRNAccessCode_AT51FP7 = txtATGRNAccessCode_AT51FP7.Text
        mitarbeiter.mit_ATGRNAccessCode_AT52VA6 = txtATGRNAccessCode_AT52VA6.Text
        mitarbeiter.mit_DAKOSY_SB = txtDakosySB.Text
        mitarbeiter.mit_DAKOSY_SBFull = txtDyFullName.Text
        mitarbeiter.mit_TELOTEC_SB = txtTelotecSB.Text
        mitarbeiter.mit_AliasAD_Domain = cboALIASDomain._value
        mitarbeiter.mit_AliasAD_Username = txtALIASUser.Text
        mitarbeiter.mit_AliasAD_Domain2 = cboALIASDomain2._value
        mitarbeiter.mit_AliasAD_Username2 = txtALIASUser2.Text
        mitarbeiter.mit_teamId = If(cboTeam._value = "", Nothing, cboTeam._value)
        mitarbeiter.mit_CSuser = txtCSUser.Text
        mitarbeiter.mit_CSpwd = txtCSPW.Text
        mitarbeiter.mit_PersonalNr = txtLohnNr.Text
        mitarbeiter.mit_telefonnr = txtTelNr.Text
        mitarbeiter.mit_homeoffice = cbxHO.Checked
        mitarbeiter.mit_ausstempelnBeiBeenden = cbxBeiBeendenAusstempeln.Checked
        mitarbeiter.mit_timasNichtStempeln = cbxTimasNichtStempeln1.Checked
        mitarbeiter.mit_emailprivat = txtprivateEMail.Text



        If IsNumeric(cboPersonal._value) AndAlso cboPersonal._value > 0 Then
            mitarbeiter.mit_FMZollPersID = cboPersonal._value
        Else
            mitarbeiter.mit_FMZollPersID = -1
        End If

        mitarbeiter.mit_FirmenDatenAnzeige = ""
        For Each a In MyListBox1.SelectedItems
            If DirectCast(a, VERAG_PROG_ALLGEMEIN.MyListItem).Value = "A" Then
                ' For Each i In MyListBox1.Items
                mitarbeiter.mit_FirmenDatenAnzeige = "A"
                ' Next
                Exit For
            End If
        Next
        If mitarbeiter.mit_FirmenDatenAnzeige = "" Then
            For Each i In MyListBox1.SelectedItems
                mitarbeiter.mit_FirmenDatenAnzeige &= DirectCast(i, VERAG_PROG_ALLGEMEIN.MyListItem).Value & ","
            Next
        End If
        If mitarbeiter.mit_FirmenDatenAnzeige <> "" And mitarbeiter.mit_FirmenDatenAnzeige.ToString.EndsWith(",") Then
            mitarbeiter.mit_FirmenDatenAnzeige = mitarbeiter.mit_FirmenDatenAnzeige.ToString.Substring(0, mitarbeiter.mit_FirmenDatenAnzeige.ToString.Length - 1)
        End If



        mitarbeiter.mit_Sprachkentnisse = ""
        'For Each a In lbSprachen.SelectedItems
        '    If DirectCast(a, VERAG_PROG_ALLGEMEIN.MyListItem).Value = "DE" Then
        '        mitarbeiter.mit_Sprachkentnisse = "DE"
        '        Exit For
        '    End If
        'Next
        If mitarbeiter.mit_Sprachkentnisse = "" Then
            For Each i In lbSprachen.SelectedItems
                mitarbeiter.mit_Sprachkentnisse &= DirectCast(i, VERAG_PROG_ALLGEMEIN.MyListItem).Value & ","
            Next
        End If
        If mitarbeiter.mit_Sprachkentnisse <> "" And mitarbeiter.mit_Sprachkentnisse.ToString.EndsWith(",") Then
            mitarbeiter.mit_Sprachkentnisse = mitarbeiter.mit_Sprachkentnisse.ToString.Substring(0, mitarbeiter.mit_Sprachkentnisse.ToString.Length - 1)
        End If




        mitarbeiter.mit_FMZollPersIDKasseIsnotSpedBuch = cbxSpedBuch.Checked
        mitarbeiter.mit_FMZollPersIDSpedBuch = Nothing
        If IsNumeric(cboPersonal._value) AndAlso cboPersonal._value > 0 And cbxSpedBuch.Checked Then
            mitarbeiter.mit_FMZollPersIDSpedBuch = cboSpedbuch._value
        End If

        mitarbeiter.mit_DpUserStandardDP = cboDP._value
        mitarbeiter.mit_DpUserStandardFirma = cboDPFirma._value
        mitarbeiter.mit_DpUserStandardFirma2 = cboDPFirma2._value

        mitarbeiter.mit_sprache = cboProgSprache._value

        If IsNumeric(MyComboBox2._value) AndAlso MyComboBox2._value > 0 Then
            mitarbeiter.mit_standartFiliale = MyComboBox2._value
        Else
            mitarbeiter.mit_standartFiliale = -1
        End If

        If IsNumeric(MyComboBox3._value) AndAlso MyComboBox3._value > 0 Then
            mitarbeiter.mit_standardPreisliste = MyComboBox3._value
        Else
            mitarbeiter.mit_standardPreisliste = -1
        End If

        mitarbeiter.mit_firmaFMZoll = If(cboFirmaFMZOLL._value = "", Nothing, cboFirmaFMZOLL._value)

        If ZOLLDATENBEARB Then
            mitarbeiter.mit_EZOLL_SB = If(cboEZOLL_SB._value = "", Nothing, cboEZOLL_SB._value)
            mitarbeiter.mit_ATLAS_SB = If(cboATLAS_SB._value = "", Nothing, cboATLAS_SB._value)
            mitarbeiter.mit_EZOLL_SB_UNISPED = If(cboEZOLL_SB_UNISPED._value = "", Nothing, cboEZOLL_SB_UNISPED._value)
        End If

        If mitarbeiter.mit_FMZollPersID IsNot Nothing And cboKasse._value <> "" Then

            cboKasse.changeItem(SQL.doSQL("UPDATE [Personal] SET Standard_RKSV_KasseId='" & cboKasse._value & "' WHERE ID='" & mitarbeiter.mit_FMZollPersID & "'", "FMZOLL"))
        End If

        If cboFirma.Text = "ALLE" Then
            mitarbeiter.mit_firma = "ALL"
            mitarbeiter.mit_FirmaHaupt = cboFirmaHaupt.Text
        Else
            mitarbeiter.mit_firma = cboFirma.Text
        End If
        mitarbeiter.mit_ChatBenutzer = cbxChatBenutzer.Checked

        If cbxEinsteigsDat.Checked Then mitarbeiter.mit_einstiegsdatum = datEinstiegsdatum.Text Else mitarbeiter.mit_einstiegsdatum = ""
        mitarbeiter.mit_gekuendigt = cbxGekuendigt.Checked
        If cbxGekuendigt.Checked Then mitarbeiter.mit_kuendigungsdatum = datGekuendigtAm.Text Else mitarbeiter.mit_kuendigungsdatum = ""
        'If picFoto.ImageLocation <> "" Then mitarbeiter.mit_foto = picFoto.ImageLocation
        initFoto()
        mitarbeiter.mit_TESTonly = cbxTestaccount.Checked
        mitarbeiter.mit_timasMehrereFirmen = cbxTimasMehrereFirmen.Checked

        mitarbeiter.mit_timasFirmen = ""
        If mitarbeiter.mit_timasFirmen = "" Then
            For Each i In clbTimasMehreFirmen.CheckedItems
                mitarbeiter.mit_timasFirmen &= DirectCast(i, VERAG_PROG_ALLGEMEIN.MyListItem).Value & ","
            Next
        End If
        If mitarbeiter.mit_timasFirmen <> "" And mitarbeiter.mit_timasFirmen.ToString.EndsWith(",") Then
            mitarbeiter.mit_timasFirmen = mitarbeiter.mit_timasFirmen.ToString.Substring(0, mitarbeiter.mit_timasFirmen.ToString.Length - 1)
        End If

        mitarbeiter.mit_EMailbenachrichtigungen = ""
        If mitarbeiter.mit_EMailbenachrichtigungen = "" Then
            For Each i In clInterneMailBenachrichtigungen.CheckedItems
                mitarbeiter.mit_EMailbenachrichtigungen &= DirectCast(i, VERAG_PROG_ALLGEMEIN.MyListItem).Value & ","
            Next
        End If
        If mitarbeiter.mit_EMailbenachrichtigungen <> "" And mitarbeiter.mit_EMailbenachrichtigungen.ToString.EndsWith(",") Then
            mitarbeiter.mit_EMailbenachrichtigungen = mitarbeiter.mit_EMailbenachrichtigungen.ToString.Substring(0, mitarbeiter.mit_EMailbenachrichtigungen.ToString.Length - 1)
        End If


    End Sub

    Private Sub Label8_Click(sender As Object, e As EventArgs)
        txtPwd.Visible = Not txtPwd.Visible
    End Sub

    Private Sub PictureBox2_Click(sender As Object, e As EventArgs) Handles picFoto.Click
        Dim fd2 As Windows.Forms.OpenFileDialog = New Windows.Forms.OpenFileDialog()

        fd2.Title = "Bild auswählen"
        '   fd.InitialDirectory = "F:\PROGRAMME\ADMIN_DATA\Fotos_Mitarbeiter\"
        fd2.Filter = "Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG"
        fd2.FilterIndex = 2
        fd2.RestoreDirectory = True

        If fd2.ShowDialog() = DialogResult.OK AndAlso fd2.FileName <> "" Then

            Dim Extension = New IO.FileInfo(fd2.FileName).Extension
            Dim docId = -1
            If saveToDS(Extension, fd2.FileName, docId) Then

                mitarbeiter.mit_foto_DocId = docId
                Try
                    picFoto.BackgroundImage = Image.FromFile(VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(mitarbeiter.mit_foto_DocId))
                Catch ex As Exception
                    MsgBox(ex.Message & ex.StackTrace)
                End Try
            End If
        End If
        Exit Sub


        Dim fd As OpenFileDialog = New OpenFileDialog()
        Dim strFileName As String

        If Not System.IO.Directory.Exists("\\192.168.0.90\f\PROGRAMME\ADMIN_DATA\Fotos_Mitarbeiter\") Then
            System.IO.Directory.CreateDirectory("\\192.168.0.90\f\PROGRAMME\ADMIN_DATA\Fotos_Mitarbeiter\")
        End If
        If Not System.IO.Directory.Exists("\\192.168.0.91\f\PROGRAMME\ADMIN_DATA\Fotos_Mitarbeiter\") Then
            System.IO.Directory.CreateDirectory("\\192.168.0.91\f\PROGRAMME\ADMIN_DATA\Fotos_Mitarbeiter\")
        End If

        fd.Title = "Bild auswählen"
        fd.InitialDirectory = "F:\PROGRAMME\ADMIN_DATA\Fotos_Mitarbeiter\"

        fd.Filter = "Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG"
        fd.FilterIndex = 2
        fd.RestoreDirectory = True

        If fd.ShowDialog() = DialogResult.OK Then
            strFileName = fd.FileName
            picFoto.ImageLocation = strFileName

            Dim myValue = InputBox("Bitte Name eingeben (mit Endung)", "FileName", cut_file(strFileName))
            If myValue <> "" Then
                FileCopy(fd.FileName, "\\192.168.0.91\f\PROGRAMME\ADMIN_DATA\Fotos_Mitarbeiter\" & myValue)
                FileCopy(fd.FileName, "\\192.168.0.90\f\PROGRAMME\ADMIN_DATA\Fotos_Mitarbeiter\" & myValue)
            End If
            mitarbeiter.mit_foto = strFileName
        End If
    End Sub

    Public Function saveToDS(Extension, sourcePath, Optional ByRef da_id = -1) As Boolean

        Dim DS As VERAG_PROG_ALLGEMEIN.cDATENSERVER = Nothing
        If da_id > 0 Then
            DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(da_id)
        Else
            DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MITARBEITER", "PERSONAL_FOTOS", "", "", mitarbeiter.mit_nname & "_" & mitarbeiter.mit_id & Extension, -1, False)
        End If

        ' Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MITARBEITER", "PERSONAL_FOTOS", "", "", MA.mit_nname & "_" & MA.mit_id, -1, False)
        '   MsgBox(DS.da_id)
        If Not DS.uploadDataToDATENSERVER(sourcePath,,, False,, False) Then MsgBox("Fehler beim Speichern: Datenserver!") : Return False
        If DS.da_id <= 0 Then MsgBox("Keine DocId!") : Return False
        da_id = DS.da_id
        ' destPath = DS.GET_TOP1_PATH
        Return True
    End Function

    Private Function cut_file(ByVal file As String) As String ' Funktion zum Entfernen der Backslashs / Ordner While file.Contains("\") file = file.Remove(0, 1) End While Return file End Function 
        While file.Contains("\")
            file = file.Remove(0, 1)
        End While
        Return file
    End Function

    Private Sub cbxADMIN_CheckedChanged(sender As Object, e As EventArgs) Handles cbxADMIN.CheckedChanged
        cboAdminBer.Enabled = cbxADMIN.Checked
    End Sub


    Private Sub cbxUID_CheckedChanged(sender As Object, e As EventArgs) Handles cbxUID.CheckedChanged
        cboUidBer.Enabled = cbxUID.Checked
    End Sub

    Private Sub cbxDISPO_CheckedChanged(sender As Object, e As EventArgs) Handles cbxDISPO.CheckedChanged
        cboDispoBer.Enabled = cbxDISPO.Checked
    End Sub

    Private Sub cbxPARKZEIT_CheckedChanged(sender As Object, e As EventArgs) Handles cbxPARKZEIT.CheckedChanged
        cboParkzeitBer.Enabled = cbxPARKZEIT.Checked
    End Sub

    Private Sub cbxZOLL_CheckedChanged(sender As Object, e As EventArgs) Handles cbxZOLL.CheckedChanged
        cboZollBer.Enabled = cbxZOLL.Checked
    End Sub
    Private Sub cbxSDL_CheckedChanged(sender As Object, e As EventArgs) Handles cbxSDL.CheckedChanged
        cboSdlBer.Enabled = cbxSDL.Checked
    End Sub
    Private Sub cbxAVISO_CheckedChanged(sender As Object, e As EventArgs) Handles cbxAVISO.CheckedChanged
        cboAvisoBer.Enabled = cbxAVISO.Checked
    End Sub

    Private Sub Label8_Click_1(sender As Object, e As EventArgs) Handles Label8.DoubleClick
        txtPwd.Visible = True
        Label8.Visible = False
    End Sub

    Private Sub btnSave_Click(sender As Object, e As EventArgs)
        If txtVname.Text = "" And txtNname.Text = "" Then MsgBox("Bitte geben Sie einen Namen ein!") : Exit Sub
        getMitarbeiter()
        If isUpdate Then
            mitarbeiter.mit_id = mid
            If UID.updateMitarbeiter(mitarbeiter) Then Me.Close()
        End If
    End Sub

    Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles cbxEinsteigsDat.CheckedChanged
        datEinstiegsdatum.Enabled = cbxEinsteigsDat.Checked
    End Sub

    Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles cbxGebDat.CheckedChanged
        txtGebDat.Enabled = cbxGebDat.Checked
    End Sub


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        frmMitarbBerechtigungen.codename = "SDL"
        frmMitarbBerechtigungen.progId = 7
        frmMitarbBerechtigungen.maId = mid
        frmMitarbBerechtigungen.Show()
    End Sub

    Private Sub cbxGekuendigt_CheckedChanged(sender As Object, e As EventArgs) Handles cbxGekuendigt.CheckedChanged
        datGekuendigtAm.Enabled = cbxGekuendigt.Checked
    End Sub


    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim frmBenutzerBerGruppen As New frmBenutzerBerGruppen(mid, 7, "SDL")
        frmBenutzerBerGruppen.Show(Me)
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        Dim frmBenutzerBerGruppen As New frmBenutzerBerGruppen(mid, 1, "ADMIN")
        frmBenutzerBerGruppen.Show(Me)
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim frmBenutzerBerGruppen As New frmBenutzerBerGruppen(mid, 5, "AVISO")
        frmBenutzerBerGruppen.Show(Me)
    End Sub


    Private Sub cbxSpedBuch_CheckedChanged(sender As Object, e As EventArgs) Handles cbxSpedBuch.CheckedChanged
        cboSpedbuch.Enabled = sender.checked
        If sender.checked Then
            Label37.Text = "Benutzer Kasse:"
        Else
            Label37.Text = "Zuordnung / FM-ZOLL Personal - Tabelle:"
        End If
    End Sub


    Private Sub cboNiederlassung_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboNiederlassung.SelectedIndexChanged

    End Sub


    Private Sub tbcntr_TabIndexChanged(sender As Object, e As EventArgs) Handles tbcntr.SelectedIndexChanged
        If tbcntr.SelectedIndex = 1 Then
            Try
                cboATLAS_SB.fillWithSQL("SELECT [bassba_sbnr],[bassba_sbnr] FROM [atlas].[dbo].[bassba]  ORDER BY bassba.bassba_sbnr", False, If(cboNiederlassung._value = "SBG", "ATLAS_SBG", "ATLAS"), True)
            Catch ex As Exception
                MsgBox("ATLAS Problem")
                tbcntr.SelectedIndex = 0
                Exit Sub
            End Try

            Try
                cboEZOLL_SB.fillWithSQL("SELECT [PersonalID],[UserID]  FROM [zzPersonal] where lizenznr='S01122' ORDER BY UserID ", False, "EZOLL", True)
            Catch ex As Exception
                MsgBox("EZOLL Problem")
                tbcntr.SelectedIndex = 0
                Exit Sub
            End Try
            Try
                cboEZOLL_SB_UNISPED.fillWithSQL("SELECT [PersonalID],[UserID]  FROM [zzPersonal] where lizenznr='S01133' ORDER BY UserID ", False, "EZOLL_UNISPED", True)
            Catch ex As Exception
                MsgBox("EZOLL UNISPED Problem")
                tbcntr.SelectedIndex = 0
                Exit Sub
            End Try

            If If(mitarbeiter.mit_EZOLL_SB_UNISPED, -1) > 0 Then
                cboEZOLL_SB_UNISPED._value = mitarbeiter.mit_EZOLL_SB_UNISPED
            End If
            If If(mitarbeiter.mit_EZOLL_SB, -1) > 0 Then
                cboEZOLL_SB._value = mitarbeiter.mit_EZOLL_SB
            End If
            If If(mitarbeiter.mit_ATLAS_SB, "") <> "" Then
                cboATLAS_SB._value = mitarbeiter.mit_ATLAS_SB
            End If

            ZOLLDATENBEARB = True
            'ElseIf tbcntr.SelectedIndex = 3 Then
            '    timas = New VERAG_PROG_ALLGEMEIN.cTimasAPI("timas")

            '    If IsNothing(mitarbeiter.mit_timasId) Then
            '        cbxTimasAngelegt.Checked = False
            '        timas.getAllGroups(dtTimas)
            '        initDGV(dtTimas)
            '    Else
            '        cbxTimasAngelegt.Checked = True
            '    End If


            '    btnMAanlegen.Visible = Not cbxTimasAngelegt.Checked
            '    txtLohnNr.Enabled = Not cbxTimasAngelegt.Checked
            '    txtClientNr.Enabled = Not cbxTimasAngelegt.Checked
            '    dgvData.Visible = Not cbxTimasAngelegt.Checked
            '    TabControl1.Visible = Not cbxTimasAngelegt.Checked
            '    rtfInfoTimas.Visible = cbxTimasAngelegt.Checked
            '    btngetInfo.Visible = cbxTimasAngelegt.Checked
        End If

    End Sub

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        Dim frmBenutzerBerGruppen As New frmBenutzerBerGruppen(mid, 3, "DISPO")
        frmBenutzerBerGruppen.Show(Me)
    End Sub

    Private Sub lkl_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles lkl.LinkClicked
        If vbYes = MsgBox("Möchten Sie das Kennwort wirklich zurücksetzen? " & vbNewLine & "Der Benutzer wird beim nächsten Login zur Eingabe aufgefordert.", vbYesNoCancel) Then
            '  txtPwd.Text = "0000"
            getMitarbeiter()
            mitarbeiter.mit_PasswortChanged = Nothing
            UID.updateMitarbeiter(mitarbeiter)
        End If
    End Sub

    Private Sub cboFirma_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboFirma.SelectedIndexChanged
        cboTeam.Items.Clear()
        If cboFirma.Text <> "" Then
            If cboFirma.Text = "ALLE" Then
                cboTeam.fillWithSQL("SELECT team_id, team_bezeichnung FROM tblTeams WHERE team_firma='" & cboFirmaHaupt.Text & "'", False, "ADMIN", True)
            Else
                cboTeam.fillWithSQL("SELECT team_id, team_bezeichnung FROM tblTeams WHERE team_firma='" & cboFirma.Text & "'", False, "ADMIN", True)

            End If
        End If
        cboFirmaHaupt.Enabled = (cboFirma.Text = "ALLE")
    End Sub

    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click

        lblCheckconnection.Text = ""

        If txtCSUser.Text = "" Then
            lblCheckconnection.Text = "User ist leer!"
            Exit Sub
        End If
        If txtCSPW.Text = "" Then
            lblCheckconnection.Text = "Passwort ist leer!"
            Exit Sub
        End If

        Dim cs = New cCreditSafeAPI("creditsafe")
        Dim statuscode = cs.authenticate(txtCSUser.Text, txtCSPW.Text)
        Select Case statuscode

            Case 200 : lblCheckconnection.Text = "Zugangsdaten OK"

            Case Else
                lblCheckconnection.Text = "User konnte nicht authentifiziert werden (" & statuscode & ")"

        End Select

    End Sub

    Private Sub cbxShowPW_CheckedChanged(sender As Object, e As EventArgs) Handles cbxShowPW.CheckedChanged
        txtCSPW.UseSystemPasswordChar = Not cbxShowPW.Checked
    End Sub

    Private Sub Button7_Click(sender As Object, e As EventArgs) Handles btnADladen.Click
        Dim frmAD = New frmADsearch()
        If frmAD.ShowDialog = DialogResult.OK Then

            txtEmail.Text = frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("mail").Value)
            txtUsername.Text = frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("sAMAccountName").Value)
            txtVname.Text = frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("givenName").Value)
            txtNname.Text = frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("sn").Value)
            txtStrasse.Text = frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("streetAdress").Value)
            txtPlz.Text = frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("postalCode").Value)
            txtOrt.Text = frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("I").Value)
            txtMobiltel.Text = frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("Mobile").Value)
            txtDurchwahl.Text = frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("telephoneNumber").Value)
            txtALIASUser.Text = frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("sAMAccountName").Value)
            txtEmailExtension.Text = frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("extensionAttribute7").Value)
            cboALIASDomain.changeItem(frmAD.activeDirectoryObj.domain)
            cboAbteilung.changeItem(frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("department").Value))
            cboNiederlassung.changeItem(frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("company").Value))


        End If

    End Sub

    Private Sub mnuItem_Clicked(sender As Object, e As EventArgs)
        ContextMenuStrip1.Hide() 'Sometimes the menu items can remain open.  May not be necessary for you.
        Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)

        If item IsNot Nothing Then
            synchActiveDirectoryADMIN(item.Name)
        End If

    End Sub

    Private Sub btnUpdateAD_Click(sender As Object, e As EventArgs) Handles btnUpdateAD.Click

        If cboALIASDomain._value = "" Or txtALIASUser.Text = "" Then
            Exit Sub
        End If


        ContextMenuStrip1.Items.Clear()

        Dim ADToADMIN = New ToolStripMenuItem() With {.Text = "Active Directory -> ADMIN (nur leere Felder werden befüllt)", .Name = "ADtoADMIN", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
        Dim ADMINToAD = New ToolStripMenuItem() With {.Text = "ADMIN -> Active Directory (nur leere Felder werden befüllt)", .Name = "ADMINtoAD", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
        AddHandler ADToADMIN.Click, AddressOf mnuItem_Clicked
        ContextMenuStrip1.Items.Add(ADToADMIN)
        AddHandler ADMINToAD.Click, AddressOf mnuItem_Clicked
        ContextMenuStrip1.Items.Add(ADMINToAD)


        ContextMenuStrip1.Show(Cursor.Position)

    End Sub

    Private Sub synchActiveDirectoryADMIN(AdminTOAD As String)

        Dim a As MsgBoxResult = MsgBox("Die Daten des Mitarbeiters mit dem AD synchronisieren?", vbYesNo)
        If a = vbYes Then

            Dim ldap As String = ""

            Select Case cboALIASDomain._value
                Case "imex.local"
                    ldap = "LDAP://DC=IMEX,DC=LOCAL"
                Case "VERAGNEUHAUS.local"
                    ldap = "LDAP://DC=VERAGNEUHAUS,DC=LOCAL"
                Case "VERAGOST"
                    ldap = "LDAP://DC=VERAG,DC=OST,DC=DMN"
            End Select


            Dim dirEntry As System.DirectoryServices.DirectoryEntry
            Dim dirSearcher As System.DirectoryServices.DirectorySearcher
            Try
                dirEntry = New System.DirectoryServices.DirectoryEntry(ldap)
                dirSearcher = New System.DirectoryServices.DirectorySearcher(dirEntry)

                dirSearcher.Filter = " (&(objectClass=user)(objectCategory=person)(|(samAccountName=*" & txtALIASUser.Text & "*)))"

                Dim sr As DirectoryServices.SearchResult = dirSearcher.FindOne()
                If sr Is Nothing Then
                    Dim b As MsgBoxResult = MsgBox("User ist im AD nicht vorhanden?" & vbNewLine & "Solle der Mitarbeiter " & txtALIASUser.Text & " in der Domain " & cboALIASDomain.Text & " angelegt werden?", vbYesNo)
                    If b = vbYes Then
                        Dim frmAD = New frmADsearch("Referenzuser (Gruppenberechtigungen werden von diesem User übernommen)!")

                        If frmAD.ShowDialog = DialogResult.OK Then

                            MsgBox("The Lightweight Directory Access Protocol (LDAP) provider does not CURRENTLY support this method!")
                            'Sobald diese Funktion unterstützt wird, kann nachfolgende Funktion aktiviert werden
                            'https://learn.microsoft.com/en-us/dotnet/api/system.directoryservices.directoryentry.copyto
                            'Dim NewADAccount As DirectoryEntry = New DirectoryEntry(frmAD.activeDirectoryObj.ADEntry.Parent.Path, txtALIASUser.Text, txtPwd.Text)
                            'frmAD.activeDirectoryObj.ADEntry.CopyTo(NewADAccount)

                        End If
                    Else
                        Exit Sub
                    End If

                End If

                Dim de As System.DirectoryServices.DirectoryEntry = sr.GetDirectoryEntry()

                If de.SchemaClassName <> "user" Then
                    MsgBox("hinterlegter AD-User ist nicht vom Typ USER")
                    Exit Sub
                End If

                If AdminTOAD = "ADMINtoAD" Then



                    If (isFilled(de.Properties("givenName").Value)) Then de.Properties("givenName").Value = txtVname.Text
                    If (isFilled(de.Properties("department").Value)) Then de.Properties("department").Value = cboAbteilung._value
                    If (isFilled(de.Properties("company").Value)) Then de.Properties("company").Value = cboFirma.SelectedValue
                    If (isFilled(de.Properties("sn").Value)) Then de.Properties("sn").Value = txtNname.Text
                    If (isFilled(de.Properties("mail").Value)) Then de.Properties("mail").Value = txtEmail.Text
                    If (isFilled(de.Properties("streetAdress").Value)) Then de.Properties("streetAdress").Value = txtStrasse.Text
                    If (isFilled(de.Properties("postalCode").Value)) Then de.Properties("postalCode").Value = txtPlz.Text
                    If (isFilled(de.Properties("I").Value)) Then de.Properties("I").Value = txtOrt.Text
                    If (isFilled(de.Properties("mobile").Value)) Then de.Properties("mobile").Value = txtMobiltel.Text
                    If (isFilled(de.Properties("telephoneNumber").Value)) Then de.Properties("telephoneNumber").Value = txtTelNr.Text
                    If (isFilled(de.Properties("otherTelephone").Value)) Then de.Properties("otherTelephone").Value = txtDurchwahl.Text

                    If cbxGekuendigt.Checked Then
                        Dim expire As DateTime = datGekuendigtAm.Value
                        expire = expire.AddDays(1)
                        de.Properties("accountExpires").Value = expire.ToFileTime.ToString

                    End If
                    de.CommitChanges()
                Else



                    If txtEmail.Text = "" Then txtEmail.Text = de.Properties("mail").Value
                    If txtUsername.Text = "" Then txtUsername.Text = de.Properties("sAMAccountName").Value
                    If txtVname.Text = "" Then txtVname.Text = de.Properties("givenName").Value
                    If txtNname.Text = "" Then txtNname.Text = de.Properties("sn").Value
                    If txtStrasse.Text = "" Then txtStrasse.Text = de.Properties("streetAdress").Value
                    If txtPlz.Text = "" Then txtPlz.Text = de.Properties("postalCode").Value
                    If txtOrt.Text = "" Then txtOrt.Text = de.Properties("I").Value
                    If txtMobiltel.Text = "" Then txtMobiltel.Text = de.Properties("mobile").Value
                    If txtDurchwahl.Text = "" Then txtDurchwahl.Text = de.Properties("otherTelephone").Value
                    If txtALIASUser.Text = "" Then txtALIASUser.Text = de.Properties("sAMAccountName").Value
                    If txtEmailExtension.Text = "" Then txtEmailExtension.Text = de.Properties("extensionAttribute7").Value


                    Dim phoneNr As String = de.Properties("telephoneNumber").Value
                    If phoneNr <> "" Then
                        Dim digitsOnly As String = Regex.Replace(phoneNr, "\D", "")

                        If digitsOnly.Length > 10 Then
                            Dim digitCount As Integer = 0
                            Dim splitIndex As Integer = -1

                            For i As Integer = 0 To phoneNr.Length - 1
                                If Char.IsDigit(phoneNr(i)) Then
                                    digitCount += 1
                                    If digitCount = 10 Then
                                        splitIndex = i
                                        Exit For
                                    End If
                                End If
                            Next

                            If splitIndex <> -1 Then
                                If txtTelNr.Text = "" Then txtTelNr.Text = phoneNr.Substring(0, splitIndex + 1).Trim()
                                If txtDurchwahl.Text = "" Then txtDurchwahl.Text = phoneNr.Substring(splitIndex + 1).Trim()
                            Else
                                If txtTelNr.Text = "" Then txtTelNr.Text = phoneNr.Trim()
                            End If
                        Else
                            If txtTelNr.Text = "" Then txtTelNr.Text = phoneNr.Trim()
                        End If
                    End If

                    'cboALIASDomain.changeItem(frmAD.activeDirectoryObj.domain)
                    'cboAbteilung.changeItem(frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("department").Value))
                    'cboNiederlassung.changeItem(frmAD.setNoNullableValue(frmAD.activeDirectoryObj.ADEntry.Properties("company").Value))

                End If

            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End If

    End Sub

    Private Sub txtALIASUser_TextChanged(sender As Object, e As EventArgs) Handles txtALIASUser.TextChanged, cboALIASDomain.TextChanged

        If txtALIASUser.Text <> "" AndAlso cboALIASDomain._value <> "" Then
            btnUpdateAD.Enabled = True
        Else
            btnUpdateAD.Enabled = False
        End If

    End Sub

    Public Function isFilled(value As String) As Boolean

        If value IsNot Nothing Then
            If value <> "" Then
                Return False ' Werte aus AD sollen nur gesetzt, nicht überschr
            Else
                Return True
            End If
        End If
        Return True

    End Function


    Private Sub btnMAanlegen_Click(sender As Object, e As EventArgs) Handles btnMAanlegen.Click

        Dim newMid As Integer = 0
        If txtVname.Text = "" And txtNname.Text = "" Then MsgBox("Bitte geben Sie einen Namen ein!") : Exit Sub
        getMitarbeiter()
        If isUpdate Then
            mitarbeiter.mit_id = mid
            If UID.updateMitarbeiter(mitarbeiter) Then saveBerechtigungen(newMid)
        Else
            If UID.insertMitarbeiter(mitarbeiter, newMid) Then saveBerechtigungen(newMid)
        End If


        If checkMandatoryFields() Then
            timas.createEmployee(mitarbeiter, rtfInfoTimas.Text, cbxClientTimas.SelectedItem.Text, dtTimas)
            If rtfInfoTimas.Visible = False AndAlso rtfInfoTimas.Text <> "" Then MsgBox(rtfInfoTimas.Text)
            tbcntr_TabIndexChanged(sender, e)
        End If

    End Sub

    Private Sub btngetInfo_Click(sender As Object, e As EventArgs) Handles btngetInfo.Click
        If Not cbxTimasAngelegt.Checked Then
            rtfInfoTimas.Text = "Mitarbeiter nicht im Timas angelegt!"
            Exit Sub
        End If

        timas.getInfo(mitarbeiter, rtfInfoTimas.Text)

    End Sub

    Private Sub cbxTimasAngelegt_CheckedChanged(sender As Object, e As EventArgs) Handles cbxTimasAngelegt.CheckedChanged

        btnMAanlegen.Visible = Not cbxTimasAngelegt.Checked
        txtLohnNr.Enabled = Not cbxTimasAngelegt.Checked
        txtClientNr.Enabled = Not cbxTimasAngelegt.Checked
        cbxClientTimas.Enabled = Not cbxTimasAngelegt.Checked
        dgvData.Visible = Not cbxTimasAngelegt.Checked
        rtfInfoTimas.Visible = cbxTimasAngelegt.Checked
        btngetInfo.Visible = cbxTimasAngelegt.Checked
        btnDelete.Visible = cbxTimasAngelegt.Checked
        Button7.Visible = cbxTimasAngelegt.Checked

    End Sub

    Private Function checkMandatoryFields() As Boolean


        If Not cbxEinsteigsDat.Checked Or mitarbeiter.mit_einstiegsdatum = "" Then
            MsgBox("Einstiegsdatum prüfen!")
            Return False
        End If

        'If txtClientNr.Text = "" Then
        '    MsgBox("ClientNr prüfen!")
        '    Return False
        'End If

        If cbxClientTimas.SelectedItem.Text = "" Then
            MsgBox("ClientNr prüfen!")
            Return False
        End If



        If CDate(mitarbeiter.mit_einstiegsdatum).ToShortDateString <= DateTime.Parse("01/01/2000") Then
            MsgBox("Einstiegsdatum darf nicht vor 01.01.2000 liegen!")
            Return False
        End If

        If mitarbeiter.mit_gekuendigt Then
            MsgBox("Bereits gekündige MA können nicht angelegt werden!")
            Return False
        End If

        If mitarbeiter.mit_vname = "" Or mitarbeiter.mit_nname = "" Then
            MsgBox("Vor- und Nachnamen angeben!")
            Return False
        End If

        If mitarbeiter.mit_firma = "" Then
            MsgBox("Firma angeben!")
            Return False
        End If

        If txtLohnNr.Text = "" Then

            If Not vbYes = MsgBox("Möchten Sie den Mitarbeiter ohne Lohnnummer anlegen?" & vbNewLine & "Ohne Lohnnummer kann kein Abgleich ins Lohnsystem erfolgen!", vbYesNoCancel) Then
                Return False
            End If

        End If

        Return True

    End Function

    Sub initDGV(dt As DataTable)

        If dtTimas.Columns.Count > 0 Then

            If TabControl3.TabCount = 0 Then
                For Each row As DataRow In dt.DefaultView.ToTable(True, "groupType").Rows
                    Dim TabIndex As Integer                                         'Anzahl der erstellten Tabs, bei keinem Tab ist der Index 0
                    TabIndex = TabControl3.TabCount
                    TabControl3.TabPages.Add(row("groupType"))
                    If TabIndex = 0 Then
                        Dim tab As TabPage = Me.TabControl3.SelectedTab
                        Dim dv = New DataView(dt)
                        dv.RowFilter = "groupType = '" & tab.Text & "'"
                        dgvData.DataSource = dv
                        dgvData.AllowUserToAddRows = False
                        dgvData.AllowUserToDeleteRows = False
                        If dgvData.Columns.Count > 0 Then
                            With dgvData
                                .RowHeadersWidth = 10
                                .Columns("id").Visible = False
                                .Columns("name").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
                                .Columns("groupType").Visible = False
                                .Columns("info").Width = 350
                                .Columns("set").Width = 20
                                .Columns("set").HeaderText = "X"
                                .Dock = DockStyle.Fill

                            End With
                            tab.Controls.Add(Me.dgvData)
                        End If
                    End If

                Next
            End If
        End If


    End Sub


    Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl3.SelectedIndexChanged
        If dgvData Is Nothing And dgvData.Rows.Count < 1 Then Exit Sub
        Dim tab As TabPage = Me.TabControl3.SelectedTab
        If ((Not tab Is Nothing) AndAlso (Not tab.Controls.Contains(Me.dgvData))) Then
            Dim dv = New DataView(dtTimas)
            dv.RowFilter = "groupType = '" & tab.Text & "'"
            dgvData.DataSource = dv
            If dgvData.Columns.Count > 0 Then
                tab.Controls.Add(Me.dgvData)
            End If

            If (Me.isDataLoaded) Then
            End If
        End If
    End Sub

    Private isDataLoaded As Boolean = True

    Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
        If Not cbxTimasAngelegt.Checked Then
            rtfInfoTimas.Text = "Mitarbeiter nicht im Timas angelegt!"
            Exit Sub
        End If

        If vbYes = MsgBox("Soll die Verknüpfung zu Timas gelöscht werden?", vbYesNoCancel) Then
            getMitarbeiter()
            mitarbeiter.mit_PersonalNr = DBNull.Value
            mitarbeiter.mit_timasId = DBNull.Value
            If UID.updateMitarbeiter(mitarbeiter) Then
                MsgBox("Mitarbeitverknüpfung gelöscht!")
            End If

        End If

    End Sub



    Private Sub datEinstiegsdatum_ValueChanged(sender As Object, e As EventArgs) Handles datEinstiegsdatum.ValueChanged, cbUrlaubInStund.CheckedChanged, txtUrlaubsabsp.TextChanged, cboDaysPerWeek.SelectedIndexChanged

        If cbxEinsteigsDat.Checked AndAlso Not String.IsNullOrWhiteSpace(mitarbeiter.mit_einstiegsdatum) Then

            Dim einstiegsdat As Date
            If Date.TryParse(mitarbeiter.mit_einstiegsdatum, einstiegsdat) AndAlso einstiegsdat >= #01/01/2000# Then

                ' Prüfen, ob Arbeitszeit und Arbeitstage korrekt eingegeben wurden
                If Not String.IsNullOrWhiteSpace(txtWoStd.Text) AndAlso IsNumeric(txtWoStd.Text) AndAlso Not String.IsNullOrWhiteSpace(cboDaysPerWeek.Text) AndAlso IsNumeric(cboDaysPerWeek.Text) Then

                    ' Ende des Jahres oder ggf. Kündigungsdatum
                    Dim endOfCurrentYear As Date = New DateTime(einstiegsdat.Year, 12, 31)
                    Dim span As TimeSpan = endOfCurrentYear - einstiegsdat

                    If cbxGekuendigt.Checked AndAlso Not String.IsNullOrWhiteSpace(mitarbeiter.mit_kuendigungsdatum) Then

                        Dim kuendigungsdatum As Date
                        If Date.TryParse(mitarbeiter.mit_kuendigungsdatum, kuendigungsdatum) AndAlso kuendigungsdatum >= #01/01/2000# Then
                            span = kuendigungsdatum - einstiegsdat
                        End If
                    End If

                    Dim days As Double = span.TotalDays
                    Dim uansp As Double = 0
                    Dim aliquU As Double = 0

                    ' Urlaubsanspruch berechnen
                    calcUrlaubsabspruchNew(cbUrlaubInStund.Checked, uansp)

                    If days > 0 AndAlso uansp > 0 Then
                        If IsNumeric(txtUrlaubsabsp.Text) Then
                            uansp = CDbl(txtUrlaubsabsp.Text)
                        End If

                        ' aliquoter Urlaubsanspruch
                        aliquU = Math.Round((uansp / 365) * days, 2, MidpointRounding.AwayFromZero)
                        txtaliquUA.Text = aliquU.ToString("0.00")

                        lblHoursOrDays2.Text = If(cbUrlaubInStund.Checked, "H", "D")
                    End If
                End If
            End If
        End If
    End Sub

    Private Sub calcUrlaubsabspruch(UrlaubInStunden As Boolean, ByRef urlaubsabspruch As Double)

        urlaubsabspruch = 0 ' sicherstellen, dass immer ein Wert zurückgegeben wird

        Dim daysPerWeek As Double = 0
        Dim wochenstunden As Double = 0

        ' Tage pro Woche validieren
        If cboDaysPerWeek.SelectedItem IsNot Nothing AndAlso IsNumeric(cboDaysPerWeek.SelectedItem) Then
            daysPerWeek = CDbl(cboDaysPerWeek.SelectedItem)
        End If

        ' Wochenstunden validieren
        If IsNumeric(txtWoStd.Text) Then
            wochenstunden = CDbl(txtWoStd.Text)
        End If

        ' Wenn keine gültigen Werte, abbrechen
        If daysPerWeek <= 0 Then Exit Sub

        ' Jahresurlaub nur berechnen, wenn nicht "abgewählter Jahresurlaub"
        If Not cbabwJahresurlaub.Checked Then
            If Not UrlaubInStunden Then
                ' Urlaub in Tagen
                urlaubsabspruch = 5 * daysPerWeek
                lblHoursOrDays1.Text = "D"
            Else
                ' Urlaub in Stunden
                If wochenstunden > 0 Then
                    urlaubsabspruch = (wochenstunden / daysPerWeek) * 5
                    lblHoursOrDays1.Text = "H"
                End If
            End If
        End If

        ' Ergebnis anzeigen
        txtUrlaubsabsp.Text = urlaubsabspruch.ToString("0.00")

        'If Not UrlaubInStunden Then
        '    If cboDaysPerWeek.SelectedItem <> "" Then
        '        If Not cbabwJahresurlaub.Checked Then
        '            urlaubsabspruch = 5 * cboDaysPerWeek.SelectedItem
        '        End If
        '        lblHoursOrDays1.Text = "D"
        '    End If
        'Else
        '    If cboDaysPerWeek.SelectedItem <> "" AndAlso IsNumeric(txtWoStd.Text) AndAlso txtWoStd.Text > 0 Then
        '        If Not cbabwJahresurlaub.Checked Then
        '            urlaubsabspruch = (txtWoStd.Text / cboDaysPerWeek.SelectedItem) * cboDaysPerWeek.SelectedItem * 5
        '        End If
        '        lblHoursOrDays1.Text = "H"
        '    End If
        'End If
        'txtUrlaubsabsp.Text = urlaubsabspruch
    End Sub


    Private Sub calcUrlaubsabspruchNew(UrlaubInStunden As Boolean, ByRef urlaubsabspruch As Double)

        Dim tageProWoche As Double = 0
        Dim wochenstunden As Double = 0

        ' Eingaben validieren
        If cboDaysPerWeek.SelectedItem IsNot Nothing AndAlso IsNumeric(cboDaysPerWeek.SelectedItem) Then
            tageProWoche = CDbl(cboDaysPerWeek.SelectedItem)
        End If

        If IsNumeric(txtWoStd.Text) Then
            wochenstunden = CDbl(txtWoStd.Text)
        End If

        ' Nur berechnen, wenn Jahresurlaub nicht manuell abgewählt wurde
        If Not cbabwJahresurlaub.Checked Then
            urlaubsabspruch = BerechneUrlaubsanspruch(tageProWoche, wochenstunden, UrlaubInStunden)
        Else
            urlaubsabspruch = 0
        End If

        ' UI aktualisieren
        txtUrlaubsabsp.Text = urlaubsabspruch.ToString("0.00")
        lblHoursOrDays1.Text = If(UrlaubInStunden, "H", "D")

    End Sub

    Public Function BerechneUrlaubsanspruch(tageProWoche As Double, wochenstunden As Double, urlaubInStunden As Boolean) As Double

        ' Sicherheitsprüfungen
        If tageProWoche <= 0 Then Return 0
        If urlaubInStunden AndAlso wochenstunden <= 0 Then Return 0

        Dim anspruch As Double = 0

        If Not urlaubInStunden Then
            ' Urlaub in Tagen
            anspruch = 5 * tageProWoche
        Else
            ' Urlaub in Stunden: durchschnittliche Tagesarbeitszeit * 5
            anspruch = (wochenstunden / tageProWoche) * 5
        End If

        Return Math.Round(anspruch, 2, MidpointRounding.AwayFromZero)
    End Function

    Private Sub TabControl2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl2.SelectedIndexChanged
        If TabControl2.SelectedIndex = 2 Then
            Try

                timas = New VERAG_PROG_ALLGEMEIN.cTimasAPI("timas")

                If IsNothing(mitarbeiter.mit_timasId) Then
                    cbxTimasAngelegt.Checked = False
                    timas.getAllGroups(dtTimas)
                    initDGV(dtTimas)
                Else
                    cbxTimasAngelegt.Checked = True
                End If

                lblName1.Text = mitarbeiter.mit_vname & " " & mitarbeiter.mit_nname

                btnMAanlegen.Visible = Not cbxTimasAngelegt.Checked
                txtLohnNr.Enabled = Not cbxTimasAngelegt.Checked
                txtClientNr.Enabled = Not cbxTimasAngelegt.Checked
                cbxClientTimas.Enabled = Not cbxTimasAngelegt.Checked
                dgvData.Visible = Not cbxTimasAngelegt.Checked
                TabControl3.Visible = Not cbxTimasAngelegt.Checked
                rtfInfoTimas.Visible = cbxTimasAngelegt.Checked
                btngetInfo.Visible = cbxTimasAngelegt.Checked



                Dim dtbereitsausgezahlteUE As DataTable
                Dim bereitsgezahlteueberstunden = "select uest_date as Datum ,isnull(uest_100,0) as ÜS100 , isnull(uest_50,0) as ÜS50, isnull(uest_25,0) as ÜS25, isnull(uest_0,0) as ÜS50_Saldo, isnull(uest_paidout_sum,0) as ausbezahlt, uest_systemuser as eingetragen_von ,uest_created as eingetragen_am, cast (case when isnull([uest_ignorePayoutDate],0) = 0 then 0 else 1 end as bit) as ignoreAuszahlungsdatum, uest_deleted as geloescht
                FROM [ADMIN].[dbo].[tblUeberstunden] 
                where uest_deleted = 0 and uest_maId = " & mitarbeiter.mit_id & "
                Order by uest_date"




                dgvUberstundenauszahlungen.SET_SQL(bereitsgezahlteueberstunden, "ADMIN")
                dgvUberstundenauszahlungen.LOAD()

                Dim cell As DataGridViewCell = New DataGridViewCheckBoxCell()

                With dgvUberstundenauszahlungen
                    '.AutoGenerateColumns = False
                    '.Columns("ignoreAuszahlungsdatum").CellTemplate = cell
                    .Columns("ignoreAuszahlungsdatum").Width = 70
                    .Columns("ignoreAuszahlungsdatum").HeaderText = "zu spät eingetragen"
                    .Columns("ignoreAuszahlungsdatum").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

                    .Columns("Datum").Width = 70
                    .Columns("ÜS100").Width = 70
                    .Columns("ÜS100").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
                    .Columns("ÜS50").Width = 70
                    .Columns("ÜS50").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
                    .Columns("ÜS25").Width = 70
                    .Columns("ÜS25").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
                    .Columns("ÜS50_Saldo").Width = 70
                    .Columns("ÜS50_Saldo").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
                    .Columns("ausbezahlt").Width = 70
                    .Columns("ausbezahlt").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight



                End With



                'dtbereitsausgezahlteUE = SQL.loadDgvBySql(bereitsgezahlteueberstunden, "ADMIN", 100, True)

                'dgvUberstundenauszahlungen.DataSource = dtbereitsausgezahlteUE



            Catch ex As Exception
                VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
            End Try

        ElseIf TabControl2.SelectedIndex = 3 Then
            Dim usrcnlt = New usrcntlSessions(mitarbeiter)
            Panel2.Controls.Add(usrcnlt)

        End If

    End Sub

    Private Sub Button7_Click_1(sender As Object, e As EventArgs) Handles Button7.Click
        Me.Cursor = Cursors.WaitCursor
        'neue GUI für Änderungen im Timas
        Dim frmMitarbDetails As New frmMitarbTimas()
        frmMitarbDetails.mid = mitarbeiter.mit_timasId
        Me.Cursor = Cursors.Default
        frmMitarbDetails.ShowDialog()

    End Sub

    Private Sub cbxTimasMehrereFirmen_CheckedChanged(sender As Object, e As EventArgs) Handles cbxTimasMehrereFirmen.CheckedChanged

        clbTimasMehreFirmen.Enabled = cbxTimasMehrereFirmen.Checked
        If Not clbTimasMehreFirmen.Enabled Then
            For i = 0 To clbTimasMehreFirmen.Items.Count - 1

                clbTimasMehreFirmen.SetItemChecked(i, False)

            Next
        End If


    End Sub

    'Private Sub Button6_Click1(sender As Object, e As EventArgs)
    '    srcTAG = srcTAG.AddDays(-1)
    '    initBtns("Tag")
    'End Sub

    'Private Sub Button7_Click1(sender As Object, e As EventArgs)
    '    srcTAG = srcTAG.AddDays(1)
    '    initBtns("Tag")
    'End Sub

    'Private Sub Button5_Click1(sender As Object, e As EventArgs)
    '    initBtns("Tag")
    'End Sub

    'Private Sub btnJahr_Click(sender As Object, e As EventArgs)
    '    initBtns("Jahr")
    'End Sub

    'Private Sub btnBisMonat_Click(sender As Object, e As EventArgs)
    '    MONAT = MONAT.AddMonths(1)
    '    initBtns("Monat")
    'End Sub

    'Private Sub btnVonMonat_Click(sender As Object, e As EventArgs)
    '    MONAT = MONAT.AddMonths(-1)
    '    initBtns("Monat")
    'End Sub

    'Private Sub btnBisJahr_Click(sender As Object, e As EventArgs)
    '    JAHR = JAHR.AddYears(1)
    '    initBtns("Jahr")
    'End Sub

    'Private Sub btnVonJahr_Click(sender As Object, e As EventArgs)
    '    JAHR = JAHR.AddYears(-1)
    '    initBtns("Jahr")
    'End Sub

    'Private Sub btnMonat_Click(sender As Object, e As EventArgs)
    '    initBtns("Monat")
    'End Sub

    'Dim MONAT As Date = CDate("01." & Now.Month & "." & Now.Year) '.AddMonths(-1)
    'Dim srcTAG As Date = CDate(Now.ToShortDateString)

    'Dim JAHR As Date = CDate("01.01." & Now.Year)
    'Sub initBtns(MonatJahr)
    '    btnMonat.Text = MONAT.ToString("MMMM")
    '    btnJahr.Text = JAHR.Year
    '    Select Case MonatJahr
    '        Case "Monat"
    '            DateTimePicker1.Value = MONAT
    '            DateTimePicker2.Value = MONAT.AddMonths(1).AddDays(-1)
    '        Case "Jahr"
    '            DateTimePicker1.Value = JAHR
    '            DateTimePicker2.Value = JAHR.AddYears(1).AddDays(-1)
    '            'End If
    '        Case "Tag"
    '            DateTimePicker1.Value = srcTAG
    '            DateTimePicker2.Value = srcTAG
    '            If srcTAG = Now.ToShortDateString Then
    '                btnToday.Text = "Heute"
    '            ElseIf srcTAG = Now.AddDays(-1).ToShortDateString Then
    '                btnToday.Text = "Gestern"
    '            ElseIf srcTAG = Now.AddDays(-2).ToShortDateString Then
    '                btnToday.Text = "Vorgestern"
    '            Else
    '                btnToday.Text = srcTAG.ToString("dd.MM")
    '            End If

    '            'End If
    '        Case ""
    '            DateTimePicker1.Value = ("01." & Now.Month & "." & Now.Year)
    '            DateTimePicker2.Value = Now
    '    End Select

    '    initdgvSessions(CDate(DateTimePicker1.Value).Date, CDate(DateTimePicker2.Value).Date)
    '    'btnSuche.PerformClick()
    'End Sub

    'Private Sub initdgvSessions(von As Date, bis As Date)

    '    Dim SQL_String = ""

    '    Dim SQL_SESSIONS = "select 'AVISO/SDL' as System,[sess_niederlassung],[sess_ipAddress],[sess_PCName],[sess_PCUserName],[sess_login],[sess_logout]
    '                        FROM [ADMIN].[dbo].[tblSessions] 
    '                        where cast(sess_login as Date) between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "' and sess_maId = " & mitarbeiter.mit_id


    '    If mitarbeiter.mit_AliasAD_Username IsNot Nothing AndAlso mitarbeiter.mit_AliasAD_Username <> "" AndAlso mitarbeiter.mit_AliasAD_Domain IsNot Nothing AndAlso mitarbeiter.mit_AliasAD_Domain <> "" Then

    '        Dim SQL_SESSION_TS = "SELECT  'TS/PC','-','-',[TSServer],[BenutzerAnmeldeName],[LogOn_datetime],[LogOff_datetime]
    '                          FROM [Doku].[dbo].[TbL_LogOnLogOffLog] 
    '                          where [BenutzerAnmeldeName] = '" & mitarbeiter.mit_AliasAD_Domain & "\" & mitarbeiter.mit_AliasAD_Username & "' and cast([LogOn_datetime] as Date)  between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "'"

    '        SQL_String = " select * FROM ( " & SQL_SESSIONS & " UNION ALL " & SQL_SESSION_TS & ")  TEMP order by TEMP.sess_login"
    '    Else
    '        SQL_String = " select * FROM ( " & SQL_SESSIONS & ")  TEMP order by TEMP.sess_login"
    '    End If


    '    dgvSessions.SET_SQL(SQL_String, "ADMIN")
    '    dgvSessions.LOAD()

    '    With dgvSessions

    '        If dgvSessions.Rows.Count > 0 Then

    '            '.AutoGenerateColumns = False
    '            '.Columns("ignoreAuszahlungsdatum").CellTemplate = cell
    '            .Columns("System").Width = 70
    '            .Columns("sess_niederlassung").Width = 50
    '            .Columns("sess_niederlassung").HeaderText = "NL"
    '            .Columns("sess_ipAddress").Width = 100
    '            .Columns("sess_ipAddress").HeaderText = "IP-Adr"
    '            .Columns("sess_PCName").Width = 70
    '            .Columns("sess_PCName").HeaderText = "PC"
    '            .Columns("sess_PCUserName").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
    '            .Columns("sess_PCUserName").HeaderText = "Username"
    '            .Columns("sess_login").Width = 100
    '            .Columns("sess_login").HeaderText = "Login"
    '            .Columns("sess_logout").Width = 100
    '            .Columns("sess_logout").HeaderText = "Logout"

    '        End If


    '    End With


    'End Sub

    Private Sub loadBenachrichtiungenListe(Optional FIRMAID As Integer = -1)

        clInterneMailBenachrichtigungen.Items.Clear()
        Dim dt_Bebachrichtigungen As DataTable = SQL.loadDgvBySql("SELECT  mb_object +
                                           CASE 
                                              WHEN mb_firmaID IS NULL THEN ' (ALLE)'
                                              ELSE ' (' + [tblFirma].Firma_Bez + ')'
                                          END as mb_object, mb_id, mb_firmaID

                                        FROM [ADMIN].[dbo].[tblEMailbenachrichtigungen]
                                        left join [VERAG].[dbo].[tblFirma] on [mb_firmaID] = [tblFirma].Firma_ID order by mb_object,mb_firmaID", "ADMIN")
        For Each r As DataRow In dt_Bebachrichtigungen.Rows
            Dim edit As Boolean = True
            If FIRMAID > 0 Then
                If Not IsDBNull(r.Item("mb_firmaID")) AndAlso IsNumeric(r.Item("mb_firmaID")) AndAlso FIRMAID <> CInt((r.Item("mb_firmaID"))) Then
                    edit = False
                End If

            End If

            clInterneMailBenachrichtigungen.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem(r.Item("mb_object"), r.Item("mb_id")))



        Next

    End Sub
End Class

