Imports System.Data.OleDb
Imports System.Configuration.ConfigurationSettings
Imports Mediatheek.data

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

#Region "Get locaties"


    Public Shared Function GetLocaties() As ArrayList
        'Hier maken we een functie getlocaties om alle locaties op te roepen en te steken in een arraylist 
        'Hier worden alle records ingelezen van de tabel locaties ( id, rek, vak, schap, soort, maxaantal )
        Try
            '1. Select en Pars aanmaken
            Dim sSQL As String = "SELECT * FROM tblLocatie"

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

                Dim sId, sRek, sVak, sSchap, sSoort, sMaxAantal As String

                sId = Convert.ToString(oRow.Item("LocatieID"))
                sRek = Convert.ToString(oRow.Item("LocRek"))
                sVak = Convert.ToString(oRow.Item("LocVak"))
                sSchap = Convert.ToString(oRow.Item("LocSchap"))
                sSoort = Convert.ToString(oRow.Item("LocSoort"))
                sMaxAantal = Convert.ToString(oRow.Item("MaxAantal"))
                Dim oLocatie As New clsLocatie(sId, sRek, sVak, sSchap, sSoort, sMaxAantal)
                arlLocaties.Add(oLocatie)
            Next

            '5. De ArrayList returnen
            Return arlLocaties

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

            Throw
        End Try
    End Function
    Public Shared Function GetLocaties2(ByVal sRekGekozen As String) As ArrayList
        'Hier maken we een functie getlocaties om alle schappen terug te zoeken van een bepaald gekozen rek
        'Hier worden alle records ingelezen van de tabel locaties ( id, rek, vak, schap, soort, maxaantal ) waar de locrek = gekozenrek in vorige cbo

        Try
            '1. Select en Pars aanmaken
            Dim sSQL As String = "SELECT * FROM tblLocatie WHERE LocRek=" + sRekGekozen
            'Dim sSQL As String = "SELECT * FROM tblLocatie "
            '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 student-objecten overbrengen
            Dim arlLocaties As ArrayList = New ArrayList
            Dim oRow As DataRow
            For Each oRow In oDataTable.Rows

                Dim sId, sRek, sVak, sSchap, sSoort, sMaxAantal As String

                sId = Convert.ToString(oRow.Item("LocatieID"))
                sRek = Convert.ToString(oRow.Item("LocRek"))
                sVak = Convert.ToString(oRow.Item("LocVak"))
                sSchap = Convert.ToString(oRow.Item("LocSchap"))
                sSoort = Convert.ToString(oRow.Item("LocSoort"))
                sMaxAantal = Convert.ToString(oRow.Item("MaxAantal"))
                Dim oLocatie As New clsLocatie(sId, sRek, sVak, sSchap, sSoort, sMaxAantal)
                arlLocaties.Add(oLocatie)
            Next

            '5. De ArrayList returnen
            Return arlLocaties

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

            Throw
        End Try
    End Function

    Public Shared Function GetLocaties3(ByVal sRekGekozen As String, ByVal sVakGekozen As String) As ArrayList
        'Hier maken we een functie getlocaties om alle svakken te zoeken waarbij een rek en een vak gekozen zijn 
        'Hier worden alle records ingelezen van de tabel locaties ( id, rek, vak, schap, soort, maxaantal ) waar de locrek = gekozenrek in vorige cbo

        Try
            '1. Select en Pars aanmaken
            Dim sSQL As String = "SELECT * FROM tblLocatie WHERE LocRek=" + sRekGekozen
            'Dim sSQL As String = "SELECT * FROM tblLocatie "
            '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 student-objecten overbrengen
            Dim arlLocaties As ArrayList = New ArrayList
            Dim oRow As DataRow
            For Each oRow In oDataTable.Rows

                Dim sId, sRek, sVak, sSchap, sSoort, sMaxAantal As String

                sId = Convert.ToString(oRow.Item("LocatieID"))
                sRek = Convert.ToString(oRow.Item("LocRek"))
                sVak = Convert.ToString(oRow.Item("LocVak"))
                sSchap = Convert.ToString(oRow.Item("LocSchap"))
                sSoort = Convert.ToString(oRow.Item("LocSoort"))
                sMaxAantal = Convert.ToString(oRow.Item("MaxAantal"))
                Dim oLocatie As New clsLocatie(sId, sRek, sVak, sSchap, sSoort, sMaxAantal)
                arlLocaties.Add(oLocatie)
            Next

            '5. De ArrayList returnen
            Return arlLocaties

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

            Throw
        End Try
    End Function

    Public Shared Function GetLocaties4(ByVal sRekGekozen As String, ByVal sVakGekozen As String, ByVal sSchapGekozen As String) As ArrayList
        'Hier maken we een functie getlocaties om alle locaties op te roepen en te steken in een arraylist die voldoen aan de rek,vak,schap gekozen
        'Hier worden alle records ingelezen van de tabel locaties ( id, rek, vak, schap, soort, maxaantal ) waar de locrek = gekozenrek in vorige cbo

        Try
            '1. Select en Pars aanmaken
            Dim sSQL As String = "SELECT * FROM tblLocatie WHERE LocRek=" + sRekGekozen + " and LocVak =" + sVakGekozen + " And LocSchap = " + sSchapGekozen
            'Dim sSQL As String = "SELECT * FROM tblLocatie "
            '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 student-objecten overbrengen
            Dim arlLocaties As ArrayList = New ArrayList
            Dim oRow As DataRow
            For Each oRow In oDataTable.Rows

                Dim sId, sRek, sVak, sSchap, sSoort, sMaxAantal As String

                sId = Convert.ToString(oRow.Item("LocatieID"))
                sRek = Convert.ToString(oRow.Item("LocRek"))
                sVak = Convert.ToString(oRow.Item("LocVak"))
                sSchap = Convert.ToString(oRow.Item("LocSchap"))
                sSoort = Convert.ToString(oRow.Item("LocSoort"))
                sMaxAantal = Convert.ToString(oRow.Item("MaxAantal"))
                Dim oLocatie As New clsLocatie(sId, sRek, sVak, sSchap, sSoort, sMaxAantal)
                arlLocaties.Add(oLocatie)
            Next

            '5. De ArrayList returnen
            Return arlLocaties

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

            Throw
        End Try
    End Function

    Public Shared Function GetLocatieByID(ByVal sID As String) As ArrayList


        Try
            '1. Select en Pars aanmaken
            Dim sSQL As String = "SELECT * FROM tblLocatie WHERE LocatieID=" & sID

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

            For Each oRow In oDataTable.Rows

                Dim sRek, sVak, sSchap, sSoort, sMaxAantal As String


                sId = Convert.ToString(oRow.Item("LocatieID"))
                sRek = Convert.ToString(oRow.Item("LocRek"))
                sVak = Convert.ToString(oRow.Item("LocVak"))
                sSchap = Convert.ToString(oRow.Item("LocSchap"))
                sSoort = Convert.ToString(oRow.Item("LocSoort"))
                sMaxAantal = Convert.ToString(oRow.Item("MaxAantal"))

                Dim oLocatie As New clsLocatie(sId, sRek, sVak, sSchap, sSoort, sMaxAantal)

                arlLocaties.Add(oLocatie)


            Next

            Return arlLocaties

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

            Throw
        End Try
    End Function
#End Region

#Region "Get ID"
    Public Shared Function GetId(ByVal sIdGekozen As String) As ArrayList
        'Hier maken we een functie getlocaties om alle locaties op te roepen en te steken in een arraylist 
        'Hier worden alle records ingelezen van de tabel locaties ( id, rek, vak, schap, soort, maxaantal ) waar de locrek = gekozenrek in vorige cbo

        Try
            '1. Select en Pars aanmaken
            Dim sSQL As String = "SELECT * FROM tblLocatie WHERE LocatieID=" + sIdGekozen
            'Dim sSQL As String = "SELECT * FROM tblLocatie "
            '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 student-objecten overbrengen
            Dim arlLocaties As ArrayList = New ArrayList
            Dim oRow As DataRow
            For Each oRow In oDataTable.Rows

                Dim sId, sRek, sVak, sSchap, sSoort, sMaxAantal As String

                sId = Convert.ToString(oRow.Item("LocatieID"))
                sRek = Convert.ToString(oRow.Item("LocRek"))
                sVak = Convert.ToString(oRow.Item("LocVak"))
                sSchap = Convert.ToString(oRow.Item("LocSchap"))
                sSoort = Convert.ToString(oRow.Item("LocSoort"))
                sMaxAantal = Convert.ToString(oRow.Item("MaxAantal"))
                Dim oLocatie As New clsLocatie(sId, sRek, sVak, sSchap, sSoort, sMaxAantal)
                arlLocaties.Add(oLocatie)
            Next

            '5. De ArrayList returnen
            Return arlLocaties

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

            Throw
        End Try
    End Function
#End Region

#Region "VoegLocatiesToe"


    Public Shared Sub VoegLocatieToe(ByVal oLocatie As clsLocatie)
       
        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()

        oLocatie.Id = getVolgendLocatieid()
        Dim sInsert As String
        sInsert = "INSERT INTO tblLocatie(LocatieID,LocRek,LocVak,LocSchap,LocSoort,MaxAantal)VALUES(?,?,?,?,?,?)"

        Dim oPar1 As New OleDbParameter("@LocatieID", oLocatie.Id)
        Dim oPar2 As New OleDbParameter("@LocRek", oLocatie.Rek)
        Dim oPar3 As New OleDbParameter("@LocVak", oLocatie.Vak)
        Dim oPar4 As New OleDbParameter("@LocSchap", oLocatie.Schap)
        Dim oPar5 As New OleDbParameter("@LocSoort", oLocatie.Soort)
        Dim oPar6 As New OleDbParameter("@MaxAantal", oLocatie.MaxAantal)
        oCommand.CommandText = sInsert
        oCommand.Parameters.Add(oPar1)
        oCommand.Parameters.Add(oPar2)
        oCommand.Parameters.Add(oPar3)
        oCommand.Parameters.Add(oPar4)
        oCommand.Parameters.Add(oPar5)
        oCommand.Parameters.Add(oPar6)
        oCommand.ExecuteNonQuery()
        oCon.Close()
    End Sub

    Private Shared Function getVolgendLocatieid() As Integer
        Try
            Dim sSQL As String = "SELECT MAX(LocatieId) FROM tblLocatie"
            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

#Region "WijzigLocaties"

    Public Shared Function WijzigLocatie(ByVal oLocatie As clsLocatie)

        Dim oCon As OleDbConnection
        Try
            Dim sValue As String
            sValue = System.Configuration.ConfigurationSettings.AppSettings.Item("ConnectionString")
            Dim oCon2 As System.Data.OleDb.OleDbConnection
            oCon2 = New OleDbConnection(sValue)
            oCon2.Open()

            Dim oCommand2 As OleDbCommand
            oCommand2 = oCon2.CreateCommand()
            Dim sInsert As String
            
            sInsert = "UPDATE tblLocatie SET LocRek=?, LocVak=?, LocSchap=?, LocSoort=?, MaxAantal=? WHERE LocatieID=?"


            Dim oPar1 As New OleDbParameter("@LocRek", oLocatie.Rek)
            Dim oPar2 As New OleDbParameter("@LocVak", oLocatie.Vak)
            Dim oPar3 As New OleDbParameter("@LocSchap", oLocatie.Schap)
            Dim oPar4 As New OleDbParameter("@LocSoort", oLocatie.Soort)
            Dim oPar5 As New OleDbParameter("@MaxAantal", oLocatie.MaxAantal)
            Dim oPar6 As New OleDbParameter("@LocatieID", oLocatie.Id)
            oCommand2.CommandText = sInsert
            oCommand2.Parameters.Add(oPar1)
            oCommand2.Parameters.Add(oPar2)
            oCommand2.Parameters.Add(oPar3)
            oCommand2.Parameters.Add(oPar4)
            oCommand2.Parameters.Add(oPar5)
            oCommand2.Parameters.Add(oPar6)
            oCommand2.ExecuteNonQuery()
            oCon2.Close()


        Catch ex As Exception
            Debug.WriteLine(ex.Message)
            Throw
        Finally
            '4. Connectie vrijgeven
            If Not oCon Is Nothing Then
                oCon.Close()
                oCon.Dispose()
            End If
        End Try
    End Function


#End Region

#Region "VerwijderLocaties"
    Public Shared Function VerwijderLocatie(ByVal iId As Integer)
        Dim oCon As OleDbConnection

        Try
            Dim sValue As String
            sValue = System.Configuration.ConfigurationSettings.AppSettings.Item("ConnectionString")
            Dim oCon3 As System.Data.OleDb.OleDbConnection
            oCon3 = New OleDbConnection(sValue)
            oCon3.Open()

            Dim oCommand3 As OleDbCommand
            oCommand3 = oCon3.CreateCommand()
            Dim sInsert As String
            

            sInsert = "DELETE FROM tblLocatie WHERE LocatieID=?"

            Dim oPar As New OleDbParameter("@LocatieID", iId)
            oCommand3.CommandText = sInsert
            oCommand3.Parameters.Add(oPar)


            oCommand3.ExecuteNonQuery()

            oCon3.Close()
        Catch ex As Exception
            Debug.WriteLine(ex.Message)
            Throw
        Finally

            If Not oCon Is Nothing Then
                oCon.Close()
                oCon.Dispose()
            End If
        End Try
    End Function
#End Region

  
    '-- Events --
End Class
