Imports System.Data.OleDb
Imports Mediatheek.data

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

#Region "Get Genres"


    Public Shared Function GetGenres() As ArrayList
        'Hier maken we een functie getgenres om alle genres op te roepen en te steken in een arraylist 
        'Hier worden alle records ingelezen van de tabel tblGenre ( genreid en genrenaam )
        Try
            '1. Select en Pars aanmaken
            Dim sSQL As String = "SELECT * FROM tblGenre"

            '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 genre-objecten overbrengen
            Dim arlGenres As ArrayList = New ArrayList
            Dim oRow As DataRow
            For Each oRow In oDataTable.Rows

                Dim sGenreID, sGenreNaam As String

                sGenreID = Convert.ToString(oRow.Item("GenreID"))
                sGenreNaam = Convert.ToString(oRow.Item("GenreNaam"))
               
                Dim oGenre As New clsGenre(sGenreID, sGenreNaam)
                arlGenres.Add(oGenre)
            Next

            '5. De ArrayList returnen
            Return arlGenres

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

            Throw
        End Try
    End Function

    Public Shared Function GetGenreByGenreID(ByVal sGenreId As String) As clsGenre
        Dim oGenre As clsGenre
        For Each oGenre In GetGenres()
            If oGenre.GenreId = sGenreId Then
                Return oGenre
            End If
        Next
    End Function

    Public Shared Function GetGenreByID(ByVal sGenreID As String) As ArrayList


        Try
            '1. Select en Pars aanmaken
            Dim sSQL As String = "SELECT * FROM tblGenre WHERE GenreID=" & sGenreID

            '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 arlGenres As ArrayList = New ArrayList
            Dim oRow As DataRow

            For Each oRow In oDataTable.Rows

                Dim sGenreNaam As String


                sGenreId = Convert.ToString(oRow.Item("GenreId"))
                sGenreNaam = Convert.ToString(oRow.Item("GenreNaam"))

                Dim oGenre As New clsGenre(sGenreID, sGenreNaam)
                arlGenres.Add(oGenre)


            Next

            Return arlGenres


        Catch ex As Exception
            Debug.WriteLine(ex.Message)
            MsgBox(ex.ToString, MsgBoxStyle.OKOnly, "Fout bij genre opzoeken op id.")

            Throw
        End Try
    End Function

#End Region

#Region "Genre Toevoegen"

    Public Shared Sub VoegGenreToe(ByVal oGenre As clsGenre)
        'hier voegen we een genre toe
        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()

        oGenre.GenreID = getVolgendGenreId()

        Dim sInsert As String
        sInsert = "INSERT INTO tblGenre(GenreId,GenreNaam)VALUES(?,?)"

        Dim oPar1 As New OleDbParameter("@GenreId", oGenre.GenreID)
        Dim oPar2 As New OleDbParameter("@GenreNaam", oGenre.GenreNaam)

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


        oCommand.ExecuteNonQuery()
        oCon.Close()


    End Sub


    Private Shared Function getVolgendGenreId() As Integer
        'hier zoeken we het hoogste genreid en tellen we 1 op om een nieuwe genre aan te maken met zijn nieuwe id
        Try
            Dim sSQL As String = "SELECT MAX(GenreId) FROM tblGenre"
            Dim iMaxId As Integer
            Try
                iMaxId = Convert.ToInt32(clsDatabase.ExecuteScalar(sSQL))
            Catch
                iMaxId = 0
            End Try
            Return iMaxId + 1
        Finally
        End Try
    End Function


#End Region


End Class
