Imports System.Data.OleDb
Imports Mediatheek.data

Public Class clsGroepDA
    '-- Enumerations --
    '-- Fields --
    '-- Constructors --
    Private Sub New()
    End Sub
    '-- Methoden --

#Region "Get Groepen"



    Public Shared Function GetGroepen() As ArrayList
        'Hier maken we een functie getgroepen om alle groepen op te roepen en te steken in een arraylist 

        'Hier worden alle records ingelezen van de tabel tblGroep ( groepid, groepnaam en aantalleden )
        Try
            '1. Select en Pars aanmaken
            Dim sSQL As String = "SELECT * FROM tblGroep"

            '3. De gegevens selecteren en naar een DataTable overbrengen
            Dim oDataTable As DataTable = clsDatabase.GetDT(sSQL)

            '4. De gegegevens van de DataTable naar 
            '   een ArrayList van groep-objecten overbrengen
            Dim arlGroepen As ArrayList = New ArrayList
            Dim oRow As DataRow
            For Each oRow In oDataTable.Rows

                Dim sGroepID, sGroepNaam, sAantalLeden As String

                sGroepID = Convert.ToString(oRow.Item("GroepID"))
                sGroepNaam = Convert.ToString(oRow.Item("GroepNaam"))
                sAantalLeden = Convert.ToString(oRow.Item("AantalLeden"))

                Dim oGroep As New clsGroep(sGroepID, sGroepNaam, sAantalLeden)
                arlGroepen.Add(oGroep)
            Next

            '5. De ArrayList returnen
            Return arlGroepen

        Catch ex As Exception
            Debug.WriteLine(ex.Message)

            Throw
        End Try
    End Function

    Public Shared Function getVolgendGroepId() As Integer
        Try
            Dim sSQL As String = "SELECT MAX(GroepId) FROM tblGroep"
            Dim iMaxId As Integer
            Try
                iMaxId = Convert.ToInt32(clsDatabase.ExecuteScalar(sSQL))
            Catch
                iMaxId = 0
            End Try
            Return iMaxId + 1
        Finally
        End Try
    End Function

    Public Shared Function GetGroepByID(ByVal sGroepID As String) As ArrayList
        'Hier maken we een functie GetAlbums om alle Albums op te roepen en te steken in een arraylist  met gegeven locatiid

        Try
            '1. Select en Pars aanmaken
            Dim sSQL As String = "SELECT * FROM tblGroep WHERE GroepID=" & sGroepID

            '3. De gegevens selecteren en naar een DataTable overbrengen
            Dim oDataTable As DataTable = clsDatabase.GetDT(sSQL)

            '4. De gegegevens van de DataTable naar 
            '   een ArrayList van album-objecten overbrengen
            Dim arlgroepen As ArrayList = New ArrayList
            Dim oRow As DataRow

            For Each oRow In oDataTable.Rows

                Dim sGroepNaam, sAantalLeden As String

                sGroepID = Convert.ToString(oRow.Item("GroepID"))
                sGroepNaam = Convert.ToString(oRow.Item("GroepNaam"))
                sAantalLeden = Convert.ToString(oRow.Item("AantalLeden"))

                Dim oGroep As New clsGroep(sGroepID, sGroepNaam, sAantalLeden)
                arlgroepen.Add(oGroep)


            Next

            Return arlgroepen


        Catch ex As Exception
            Debug.WriteLine(ex.Message)
            MsgBox("fout bij album opzoeken op id")

            Throw
        End Try
    End Function
#End Region


#Region "Groep Toevoegen"

    Public Shared Sub VoegGroepToe(ByVal oGroep As clsGroep)
        'hier is de functie om een nieuwe groep ( lid ) toe te voegen
        Dim sValue As String
        sValue = System.Configuration.ConfigurationSettings.AppSettings.Item("ConnectionString")

        Dim oCon As System.Data.OleDb.OleDbConnection
        oCon = New OleDbConnection(sValue)
        oCon.Open()



        Dim oCommand As OleDbCommand
        oCommand = oCon.CreateCommand()

        oGroep.GroepID = getVolgendGroepId()

        Dim sInsert As String
        sInsert = "INSERT INTO tblGroep(GroepId,GroepNaam,AantalLeden)VALUES(?,?,?)"

        Dim oPar1 As New OleDbParameter("@GroepId", oGroep.GroepID)
        Dim oPar2 As New OleDbParameter("@GroepNaam", oGroep.GroepNaam)
        Dim oPar3 As New OleDbParameter("@AantalLeden", oGroep.AantalLeden)

        oCommand.CommandText = sInsert
        oCommand.Parameters.Add(oPar1)
        oCommand.Parameters.Add(oPar2)
        oCommand.Parameters.Add(oPar3)




        oCommand.ExecuteNonQuery()
        oCon.Close()


    End Sub


    


#End Region

End Class
