

Imports System.Data.SqlClient
Imports System.Reflection

Public Class cParameterList
    Property ProgId As Object = Nothing
    Property firma As Object = Nothing
    ' Property OffertenNr As Object = Nothing
    Public LIST As New List(Of cParameter)
    Dim SQL As New SQL
    'Dim listTodelete As New List(Of cOfferte)

    Sub New(ProgId)
        Me.ProgId = ProgId
        '  Me.OffertenNr = OffertenNr
        LOAD_LIST(Me.ProgId)
    End Sub
    Sub New(ProgId, firma)
        Me.ProgId = ProgId
        Me.firma = firma
        '  Me.OffertenNr = OffertenNr
        LOAD_LIST(Me.ProgId, Me.firma)
    End Sub

    Public Sub CLEAR()
        LIST.Clear()
    End Sub
    Public Sub ADD(eb_EMail As String, Optional cc As Boolean = False, Optional bcc As Boolean = False)
        ' Dim l As New cOfferte
        'l.eb_bcc = bcc
        'LIST.Add(l)
    End Sub

    Public Sub LOAD_LIST(KundenNr, Optional firma = Nothing)
        Try
            LIST.Clear()
            Using conn As SqlConnection = SQL.GetNewOpenConnectionADMIN
                Using cmd As New SqlCommand("SELECT * FROM [tblParameter] WHERE progId IN (0,@ProgId) " & If(firma IsNot Nothing, " AND firma=@firma", ""), conn)
                    cmd.Parameters.AddWithValue("@ProgId", ProgId)
                    cmd.Parameters.AddWithValue("@firma", firma)
                    '  cmd.Parameters.AddWithValue("@OffertenNr", OffertenNr)
                    Dim dr = cmd.ExecuteReader()
                    While dr.Read
                        Dim l As New cParameter
                        For Each i In l.getParameterList()
                            Dim propInfo As PropertyInfo = l.GetType.GetProperty(i.Scalarvariable)
                            If dr.Item(i.Text) Is DBNull.Value Then
                                propInfo.SetValue(l, Nothing)
                            Else
                                propInfo.SetValue(l, dr.Item(i.Text))
                            End If
                        Next
                        LIST.Add(l)

                    End While
                    dr.Close()
                End Using
            End Using
        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
        End Try
    End Sub

    Public Function GET_PARAMETER_VALUE(param As String) As String
        For Each p In LIST
            If p.bezeichnung = param Then
                Return p.wert
            End If
        Next
        Return ""
    End Function

    Public Function GET_PARAMETER_VALUE_BOOL(param As String) As Boolean
        For Each p In LIST
            If p.bezeichnung = param Then
                Return (p.wert = "1" Or p.wert = "true")
            End If
        Next
        Return False
    End Function

End Class

Public Class cParameter
    Property Id As Integer
    Property bezeichnung As String
    Property wert As String
    Property firma As Object = Nothing
    Property beschreibung As Object = Nothing
    Property progId As Object = Nothing


    Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
        Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Id", Id,, True, True))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("bezeichnung", bezeichnung))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("wert", wert))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("firma", firma))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("beschreibung", beschreibung))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("progId", progId))

        Return list
    End Function
End Class
