Public Class frmBerechtigungsObjekte
    Dim progId = -1
    Dim codename = ""
    Dim sql As New VERAG_PROG_ALLGEMEIN.SQL
    Dim BerechtigungsObjekte As VERAG_PROG_ALLGEMEIN.cBerechtigungsObjekte_List
    Dim BerechtigungenGruppen As VERAG_PROG_ALLGEMEIN.cBerechtigungenGruppen_List

    Sub New(progId)

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

    End Sub
    Sub New(progId, codename)

        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()
        Me.progId = progId
        Me.codename = codename
        ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.

    End Sub
    Private Sub frmBerechtigungsObjekte_Load(sender As Object, e As EventArgs) Handles Me.Load
        Label10.Text = codename
        init()
    End Sub

    Sub init(Optional searchparam As String = "")
        MyComboBox1.SelectedIndex = 0
        gdvGruppen.Rows.Clear()
        dgvObjekte.Rows.Clear()
        dgvGruppenBenutzer.Rows.Clear()

        BerechtigungsObjekte = New VERAG_PROG_ALLGEMEIN.cBerechtigungsObjekte_List(progId, searchparam)
        BerechtigungenGruppen = New VERAG_PROG_ALLGEMEIN.cBerechtigungenGruppen_List(progId)

        For Each b In BerechtigungenGruppen.LIST
            gdvGruppen.Rows.Add(b.bergr_id, b.bergr_bezeichnung)
        Next

        '  Dim dt As DataTable = sql.loadDgvBySql("SELECT [bero_id],[bero_bezeichnung],[bero_art]  FROM [tblBerechtigungsObjekte] WHERE [bero_progId]=" & progId, "ADMIN")
        For Each b In BerechtigungsObjekte.LIST
            dgvObjekte.Rows.Add(b.bero_id, b.bero_bezeichnung, b.bero_art)
        Next

        MyComboBox2.Items.Clear()
        MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        For Each i In BerechtigungenGruppen.LIST
            MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem(i.bergr_bezeichnung, i.bergr_id))
        Next

        MyComboBox3.Items.Clear()
        MyComboBox3.fillWithSQL("SELECT [mit_id],[mit_username] + ' (' + mit_vname + ' ' + mit_nname + ') ' + mit_firma FROM [ADMIN].[dbo].[tblMitarbeiter] /*INNER JOIN [ADMIN].[dbo].[tblBerProg] ON mit_id=[bepr_userId] INNER JOIN [ADMIN].[dbo].[tblBerechtigungen] ON  [ber_id]=[bepr_berId] " &
                                " WHERE ber_progId=" & progId & " AND [ber_allowed]=1*/ ORDER BY mit_username", False, "ADMIN", True)
        gdvGruppen.ClearSelection()
        dgvObjekte.ClearSelection()
        dgvGruppenBenutzer.ClearSelection()



        cboFirma.Items.Clear()
        cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG", "1"))
        cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("IMEX", "20"))
        cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATILLA", "7"))
        cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("UNISPED", "21"))
        cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AMBAR", "24"))
        cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("FRONTOFFICE", "17"))
        cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERIMEX", "25"))

        cboAbteilung.Items.Clear()
        cboAbteilung.fillWithSQL("SELECT [abt_id],[abt_bezeichnung] FROM tblAbteilungen", False, "ADMIN", True)
        cboNiederlassung.Items.Clear()
        cboNiederlassung.fillWithSQL("SELECT [nl_id],[nl_bezeichnung] FROM tblNiederlassungen", False, "ADMIN", True)




    End Sub
    Private Sub dgvObjekte_SelectionChanged(sender As Object, e As EventArgs) Handles dgvObjekte.SelectionChanged
        dgvGruppenBenutzer.Rows.Clear()
        If dgvObjekte.SelectedRows.Count = 0 Then Exit Sub
        loadGruppen()
    End Sub

    Sub loadGruppen()
        If dgvObjekte.SelectedRows.Count = 0 Then Exit Sub
        dgvGruppenBenutzer.Rows.Clear()
        For Each b In BerechtigungsObjekte.LIST
            If b.bero_id = dgvObjekte.SelectedRows(0).Cells("id").Value Then
                If b.BER_OBJ_ZUORD IsNot Nothing Then
                    For Each bz In b.BER_OBJ_ZUORD
                        dgvGruppenBenutzer.Rows.Add(bz.beroz_id, bz.Bezeichnung, bz.beroz_art, bz.beroz_berechtigungsstufe)

                        ' If bz.beroz_art = "B" Then
                        '    MyListBox2.Items.Add(bz.BenutzerBezeichnung & " (B)")
                        '  Else
                        '    MyListBox2.Items.Add(bz.GruppenBezeichnung & " (G)")
                        '  dgvGruppenBenutzer.Rows.Add(bz.beroz_id, bz.GruppenBezeichnung, bz.beroz_art, bz.beroz_berechtigungsstufe)
                        ' End If
                    Next
                    Exit Sub
                End If
            End If
        Next
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If dgvObjekte.SelectedRows.Count = 0 Then Exit Sub
        'Gruppe zuordnen
        If MyComboBox2._value = String.Empty Then Exit Sub
        If Not IsNumeric(MyTextBox2.Text) Then Exit Sub

        Dim BOZ As New VERAG_PROG_ALLGEMEIN.cBerechtigungsObjekteZuordnung
        BOZ.beroz_beroId = dgvObjekte.SelectedRows(0).Cells("id").Value
        BOZ.beroz_bergrId = MyComboBox2._value
        BOZ.beroz_art = "G"
        BOZ.beroz_berechtigungsstufe = MyTextBox2.Text
        BOZ.INSERT()
        BerechtigungsObjekte.LOAD_LIST()
        loadGruppen()
        MyComboBox2.SelectedIndex = 0
        MyTextBox2.Text = "0"
    End Sub

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        If dgvObjekte.SelectedRows.Count = 0 Then Exit Sub
        'Gruppe zuordnen
        If cboAbteilung._value = String.Empty Then Exit Sub
        If Not IsNumeric(MyTextBox6.Text) Then Exit Sub

        Dim BOZ As New VERAG_PROG_ALLGEMEIN.cBerechtigungsObjekteZuordnung
        BOZ.beroz_beroId = dgvObjekte.SelectedRows(0).Cells("id").Value
        BOZ.beroz_bergrId = cboAbteilung._value
        BOZ.beroz_art = "A"
        BOZ.beroz_berechtigungsstufe = MyTextBox6.Text
        BOZ.INSERT()
        BerechtigungsObjekte.LOAD_LIST()
        loadGruppen()
        cboAbteilung.SelectedIndex = 0
        MyTextBox6.Text = "0"
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        If dgvObjekte.SelectedRows.Count = 0 Then Exit Sub
        'Gruppe zuordnen
        If cboNiederlassung._value = String.Empty Then Exit Sub
        If Not IsNumeric(MyTextBox5.Text) Then Exit Sub

        Dim BOZ As New VERAG_PROG_ALLGEMEIN.cBerechtigungsObjekteZuordnung
        BOZ.beroz_beroId = dgvObjekte.SelectedRows(0).Cells("id").Value
        BOZ.beroz_bergrId = cboNiederlassung._value
        BOZ.beroz_art = "N"
        BOZ.beroz_berechtigungsstufe = MyTextBox5.Text
        BOZ.INSERT()
        BerechtigungsObjekte.LOAD_LIST()
        loadGruppen()
        cboNiederlassung.SelectedIndex = 0
        MyTextBox5.Text = "0"
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        If dgvObjekte.SelectedRows.Count = 0 Then Exit Sub
        'Benutzer zuordnen
        If MyComboBox3._value = String.Empty Then Exit Sub
        If Not IsNumeric(MyTextBox3.Text) Then Exit Sub

        Dim BOZ As New VERAG_PROG_ALLGEMEIN.cBerechtigungsObjekteZuordnung
        BOZ.beroz_beroId = dgvObjekte.SelectedRows(0).Cells("id").Value
        BOZ.beroz_bergrId = MyComboBox3._value
        BOZ.beroz_art = "B"
        BOZ.beroz_berechtigungsstufe = MyTextBox3.Text
        BOZ.INSERT()
        BerechtigungsObjekte.LOAD_LIST()
        loadGruppen()
        MyComboBox3.SelectedIndex = 0
        MyTextBox3.Text = "0"
    End Sub

    Private Sub dgvGruppenBenutzer_KeyDown(sender As Object, e As KeyEventArgs) Handles dgvGruppenBenutzer.KeyDown
        If dgvGruppenBenutzer.SelectedRows.Count = 0 Then Exit Sub
        If e.KeyCode = Keys.Delete Then
            If vbYes = MsgBox("Möchten Sie die Zuordnung wirklich löschen?", vbYesNoCancel) Then
                Dim BOZ As New VERAG_PROG_ALLGEMEIN.cBerechtigungsObjekteZuordnung
                BOZ.beroz_id = dgvGruppenBenutzer.SelectedRows(0).Cells("dgvGrBen_id").Value
                BOZ.DELETE()
                BerechtigungsObjekte.LOAD_LIST()
                loadGruppen()
            End If
        End If
    End Sub

    Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
       If MyComboBox1.Text = String.Empty Then Exit Sub
        If MyTextBox1.Text = String.Empty Then Exit Sub
        For Each b In BerechtigungsObjekte.LIST
            dgvObjekte.Rows.Add(b.bero_id, b.bero_bezeichnung, b.bero_art)
            If b.bero_bezeichnung = MyTextBox1.Text Then
                MsgBox("Das Objekt existiert bereits!")
                Exit Sub
            End If
        Next
        Dim BO As New VERAG_PROG_ALLGEMEIN.cBerechtigungsObjekte
        BO.bero_progId = progId
        BO.bero_bezeichnung = MyTextBox1.Text
        BO.bero_art = MyComboBox1.Text
        BO.INSERT()
        MyComboBox1.Text = String.Empty
        init()
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        If MyTextBox4.Text = String.Empty Then Exit Sub
        Dim BGR As New VERAG_PROG_ALLGEMEIN.cBerechtigungenGruppen
        BGR.bergr_progId = progId
        BGR.bergr_bezeichnung = MyTextBox4.Text
        BGR.INSERT()
        MyTextBox4.Text = ""
        init()
    End Sub

    Private Sub gdvGruppen_KeyDown(sender As Object, e As KeyEventArgs) Handles gdvGruppen.KeyDown
        If gdvGruppen.SelectedRows.Count = 0 Then Exit Sub
        If e.KeyCode = Keys.Delete Then
            If vbYes = MsgBox("Möchten Sie die Gruppe und alle verbundenen Zuordnungen wirklich löschen?", vbYesNoCancel) Then
                Dim BGR As New VERAG_PROG_ALLGEMEIN.cBerechtigungenGruppen
                BGR.bergr_id = gdvGruppen.SelectedRows(0).Cells("dgvGrp_id").Value
                BGR.DELETE()
                init()
            End If
        End If
    End Sub

    Private Sub dgvObjekte_KeyDown(sender As Object, e As KeyEventArgs) Handles dgvObjekte.KeyDown
        If dgvObjekte.SelectedRows.Count = 0 Then Exit Sub
        If e.KeyCode = Keys.Delete Then
            If vbYes = MsgBox("Möchten Sie das Objekt und alle verbundenen Zuordnungen wirklich löschen?", vbYesNoCancel) Then
                Dim BGR As New VERAG_PROG_ALLGEMEIN.cBerechtigungsObjekte
                BGR.bero_id = dgvObjekte.SelectedRows(0).Cells("id").Value
                BGR.DELETE()
                init()
            End If
        End If
    End Sub


    Private Sub gdvGruppen_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles gdvGruppen.CellContentDoubleClick, gdvGruppen.CellDoubleClick
        If gdvGruppen.SelectedRows.Count > 0 Then
            Dim f As New frmBerechtigungenUser()
            f.lbl.Text = "Benutzer in der Gruppe: " & gdvGruppen.SelectedRows(0).Cells("dgvGrp_bez").Value
            Dim dt = sql.loadDgvBySql("SELECT [mit_id],mit_username,mit_firma, mit_gekuendigt   FROM [tblBerechtigungenBenutzerGruppenZuordnung] inner join tblMitarbeiter on mit_id=berbgz_mitId where [berbgz_bergrId]='" & gdvGruppen.SelectedRows(0).Cells("dgvGrp_id").Value & "' AND isnull(mit_username,'') <>'' ORDER BY mit_username", "ADMIN")
            f.gdvGruppen.Rows.Clear()
            If dt IsNot Nothing Then
                For Each r In dt.Rows
                    f.gdvGruppen.Rows.Add(r("mit_id"), r("mit_username"), r("mit_firma"), r("mit_gekuendigt"))
                Next
                f.Show()
            Else
                MsgBox("Keine Benutzer gefunden!")
            End If

        End If

    End Sub

    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
        Dim f As New frmBerechtigungenUser()
        f.lbl.Text = "Freigeschaltene Benutzer: " & Me.codename
        ' MsgBox(Me.progId)
        Dim dt = sql.loadDgvBySql("SELECT [mit_id],[mit_username],mit_firma, mit_gekuendigt  FROM [ADMIN].[dbo].[tblBerProg] INNER JOIN tblMitarbeiter on mit_id= bepr_userId WHERE bepr_programm='" & Me.codename & "' AND [ber_allowed]=1 AND isnull(mit_username,'') <>''ORDER BY mit_username", "ADMIN")
        f.gdvGruppen.Rows.Clear()

        If dt IsNot Nothing Then
            For Each r In dt.Rows
                f.gdvGruppen.Rows.Add(r("mit_id"), r("mit_username"), r("mit_firma"), r("mit_gekuendigt"))
            Next
            f.Show()
        Else
            MsgBox("Keine Benutzer gefunden!")
        End If
    End Sub

    Private Sub MyTextBox7_KeyDown(sender As Object, e As KeyEventArgs) Handles txtSuche.KeyDown


        Dim sqladdon As String = ""

        If e.KeyCode = Keys.Enter Then
            If txtSuche.Text <> "" Then
                sqladdon &= " AND [bero_bezeichnung] like '%" & txtSuche.Text & "%'"
            End If
            init(sqladdon)
        End If

    End Sub

    Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
        If dgvObjekte.SelectedRows.Count = 0 Then Exit Sub
        'Gruppe zuordnen
        If cboFirma._value = String.Empty Then Exit Sub
        If Not IsNumeric(MyTextBox6.Text) Then Exit Sub

        Dim BOZ As New VERAG_PROG_ALLGEMEIN.cBerechtigungsObjekteZuordnung
        BOZ.beroz_beroId = dgvObjekte.SelectedRows(0).Cells("id").Value
        BOZ.beroz_bergrId = cboFirma._value
        BOZ.beroz_art = "F"
        BOZ.beroz_berechtigungsstufe = MyTextBox7.Text
        BOZ.INSERT()
        BerechtigungsObjekte.LOAD_LIST()
        loadGruppen()
        cboFirma.SelectedIndex = 0
        MyTextBox6.Text = "0"
    End Sub
End Class