'Imports System.Windows.Forms
Imports System.Diagnostics.Eventing.Reader
Imports Parkzeit.cMeineFunktionen

Public Class frmEintragParkzeit

    Dim Titel_Msgbox As String = "Erfassen Parkzeiten"     'wird als Titel bei einer Msgbox verwendet
    Dim Parkzeiten As New cParkzeitenDAL
    ' Dim myParkzeit As New cParkzeit
    Dim myParkzeit As New VERAG_PROG_ALLGEMEIN.cParkzeiten
    Dim hÄnderung As Boolean = False
    Dim Neuanlage As Boolean = False
    Dim DatumVon As Date
    Dim DatumBis As Date
    Dim Dauer As String
    Dim DauerMinuten As Long
    Dim Berechnung_freigegeben As Boolean = False

    Private Sub frmEintragParkzeit_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        'Escape händisch abfangen und auf Abbruch-Taste legen
        If e.KeyCode = Keys.Escape Then
            btnAbbruch.PerformClick()
        End If
    End Sub

    Private Sub frmEintragParkzeit_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        Icon = cMeineFunktionen.GetProgrammIcon

        Me.CenterToParent()

        cboTarif.fillWithSQL("SELECT distinct([TarifArt]) ,TarifArt FROM [Parkzeiten]", False, "PARKZEIT")
        cboTarif.changeItem("WABERERS")


        If frmMain.Aktive_ID = 0 Then
            'es erfolgt eine Neuanlage
            Neuanlage = True

            'Vorschlagswerte setzen
            dtpDatumVon.Value = DateSerial(Now.AddMonths(-1).Year, Now.AddMonths(-1).Month, 1)
            dtpDatumBis.Value = dtpDatumVon.Value
            txtLaufende_Nr.Text = "1"

        Else
            Me.Text += " (Änderung)"
            btnOK.Text = "Speichern"
            'ausgewählter Datensatz wird geladen
            'myParkzeit = Parkzeiten.LesenParkzeit(frmMain.Aktive_ID, "")
            myParkzeit = New VERAG_PROG_ALLGEMEIN.cParkzeiten(frmMain.Aktive_ID)

            'Werte(zuweisen)
            If myParkzeit.Laufende_Nr IsNot Nothing Then
                txtLaufende_Nr.Text = myParkzeit.Laufende_Nr.ToString
            Else
                txtLaufende_Nr.Text = ""
            End If


            dtpDatumVon.Value = myParkzeit.Von.Date
            dtpUhrzeitVon.Value = myParkzeit.Von
            dtpDatumBis.Value = myParkzeit.Bis.Date
            dtpUhrzeitBis.Value = myParkzeit.Bis
            txtKennzeichen.Text = myParkzeit.Kennzeichen.Trim
            txtKundenNr.Text = myParkzeit.KundenNr.ToString
            cboTarif.Text = myParkzeit.TarifArt
            txtDauer.Text = myParkzeit.Dauer
            DauerMinuten = myParkzeit.Dauer_Minuten
        End If
        hÄnderung = False

        Berechnung_freigegeben = True

    End Sub


    Private Sub btnAbbruch_Click(sender As System.Object, e As System.EventArgs) Handles btnAbbruch.Click
        Me.Close()
    End Sub


    Private Sub txtFeld_GotFocus(sender As Object, e As System.EventArgs) Handles txtLaufende_Nr.GotFocus, txtKennzeichen.GotFocus
        CType(sender, TextBox).SelectAll()
    End Sub

    Private Sub btnOK_Click(sender As System.Object, e As System.EventArgs) Handles btnOK.Click
        'Falls keine Änderung oder Neuanlage, dann kann Fenster geschlossen werden


        'Logische Prüfungen vor dem Speichern
        If cboTarif._value = "VERAG" Then
            'Logische Prüfungen vor dem Speichern
            If Not IsNumeric(txtKundenNr.Text) Then
                MsgBox("Bitte eine gültige Kundennummer eintragen.", , Titel_Msgbox)
                txtKundenNr.Focus()
                Exit Sub
            End If
        Else
            If VarToInt(txtLaufende_Nr.Text) = 0 Then
                MsgBox("Bitte eine gültige laufende Nummer eintragen.", , Titel_Msgbox)
                txtLaufende_Nr.Focus()
                Exit Sub
            End If
        End If



        'Logische Prüfungen vor dem Speichern
        If cboTarif._value = "" Then
            MsgBox("Bitte einen gültigen Tarif eintragen.", , Titel_Msgbox)
            cboTarif.Focus()
            Exit Sub
        End If

        DatumVon = dtpDatumVon.Value + dtpUhrzeitVon.Value.TimeOfDay
        DatumBis = dtpDatumBis.Value + dtpUhrzeitBis.Value.TimeOfDay

        If DatumBis <= DatumVon Then
            MsgBox("Die Bis-Zeit ist kleiner/gleich der Von-Zeit!", , Titel_Msgbox)
            dtpDatumVon.Focus()
            Exit Sub
        End If

        If txtKennzeichen.Text.Trim = "" Then
            MsgBox("Bitte das LKW-Kennzeichen eintragen.", , Titel_Msgbox)
            txtKennzeichen.Focus()
            Exit Sub
        End If

        'Änderungen werden gespeichert
        myParkzeit.Laufende_Nr = VarToInt(txtLaufende_Nr.Text)
        myParkzeit.Von = DatumVon
        myParkzeit.Bis = DatumBis
        myParkzeit.Kennzeichen = txtKennzeichen.Text.Trim
        myParkzeit.KundenNr = txtKundenNr.Text.Trim
        myParkzeit.TarifArt = cboTarif.Text
        myParkzeit.Dauer = txtDauer.Text
        myParkzeit.Dauer_Minuten = VarToInt(DauerMinuten)
        myParkzeit.SAVE()
        'Parkzeiten.SpeichernParkzeit(myParkzeit)

        'bei Änderung Fenster verlassen, ansonsten können weitere Daten eingegeben werden
        If Not Neuanlage Then
            Me.Close()
        Else
            'Jetzt Fenster für nächste Eingabe vorbereiten
            frmMain.Tabelle_anzeigen()

            If myParkzeit.Laufende_Nr IsNot Nothing AndAlso IsNumeric(myParkzeit.Laufende_Nr) Then
                txtLaufende_Nr.Text = (CInt(myParkzeit.Laufende_Nr) + 1).ToString
            End If
            dtpUhrzeitVon.Value = Now.Date
            dtpUhrzeitBis.Value = Now.Date
            dtpDatumBis.Value = dtpDatumVon.Value.Date
            txtKennzeichen.Text = ""
            dtpDatumVon.Focus()
            cboTarif.fillWithSQL("SELECT distinct([TarifArt]) ,TarifArt FROM [Parkzeiten]", False, "PARKZEIT")
            cboTarif.changeItem(myParkzeit.TarifArt)
        End If

    End Sub


    Private Sub dtpDatum_ValueChanged(sender As System.Object, e As System.EventArgs) Handles dtpDatumVon.ValueChanged, dtpDatumBis.ValueChanged, dtpUhrzeitVon.ValueChanged, dtpUhrzeitBis.ValueChanged
        If Not Berechnung_freigegeben Then Exit Sub

        'Dauer neu berechnen
        DatumVon = dtpDatumVon.Value + dtpUhrzeitVon.Value.TimeOfDay
        DatumBis = dtpDatumBis.Value + dtpUhrzeitBis.Value.TimeOfDay
        Try
            DauerMinuten = DateDiff(DateInterval.Minute, DatumVon, DatumBis)
            If DauerMinuten < 0 Then DauerMinuten = 0
            Dauer = Minuten_auf_Text(DauerMinuten)
        Catch ex As Exception
            DauerMinuten = 0
            Dauer = ""
        End Try

        txtDauer.Text = Dauer
        txtDauer.Refresh()
    End Sub

    Private Sub txtZahl_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtLaufende_Nr.KeyPress
        'Es sind nur Zahleneingaben erlaubt
        Dim asc As Integer = Convert.ToInt32(e.KeyChar)
        Select Case asc
          'Folgende Tasten sind erlaubt
          '8 = Rücktaste (Back)
          '13 = Enter
          '27 = Esc
          '48 To 57 = 0 bis 9
            Case 8, 13, 27, 48 To 57
            Case Else
                e.Handled = True
        End Select
    End Sub

    Private Sub cboTarif_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboTarif.SelectedIndexChanged
        txtLaufende_Nr.Enabled = True
        If cboTarif._value = "VERAG" Then
            txtLaufende_Nr.Enabled = False
        End If
    End Sub
End Class



