Imports IntraSell_DLL
Imports MySql.Data.MySqlClient

Class DashboardData

    Dim conn = NewMySQLConn(GetConnString())

    Property offeneTische As Integer = 0
    Property offeneAuftraege7Tage As Integer = 0
    Property offeneZustellungen As Integer = 0
    Property totalKassaTurnover As Integer = 0
    Property totalKassaTurnoverAnzahlRechnungen As Integer = 0
    Property AnzahlOffeneAngebote As Integer = 0
    Property AnzahlAufträge As Integer = 0
    Property AnzahlRechnungen As Integer = 0

    Property AnzahlOffeneAufträge As Integer = 0
    Property AnzahlOffeneRechnungen As Integer = 0
    Property AnzahlMahnungen As Integer = 0
    Property AnzahlAnrufe As Integer = 0
    Property AnzahlKunden As Integer = 0
    Property ArtikelAnlegen As Integer = 0
    'Property HatGemischteMWSTProKat As String
    Property CheckRegistrierkasse As String
    Property OffeneTasks = 0

    Sub Berechne()
        Try
            offeneTische = GetValue("select count(Nummer) from buchVorgang where KundNr in (select idnr from ofAdressen where Status like 'Tisch') and Typ='AU' and abgeschlossen=0 and Datum > date_add(current_timestamp, INTERVAL -7 DAY)")
            offeneAuftraege7Tage = GetValue("select count(Nummer) from buchVorgang v where Typ='AU' and abgeschlossen=0 and Datum > date_add(current_timestamp, INTERVAL -7 DAY) and exists(select 1 from [buchvorgang-artikel] p where p.Typ=v.Typ and p.Nummer=v.Nummer)")
            offeneZustellungen = GetValue("select count(Nummer) from buchVorgang v where TransportMethode='Zustellung' and Typ='AU' and Datum > CURDATE() and not exists(select 'x' from `buchVorgang-status` vs where vs.VorgangTyp=v.Typ and vs.VorgangNummer=v.Nummer and vs.Status='ZUGESTELLT' )")
            totalKassaTurnover = GetValue("select sum(SummeBrutto) from buchVorgang where Typ='AR' and abgeschlossen<>0 and Datum >= CURDATE()")
            totalKassaTurnoverAnzahlRechnungen = GetValue("select count(Nummer) from buchVorgang where Typ='AR' and abgeschlossen<>0  and Datum >= CURDATE()")
            AnzahlOffeneAngebote = GetValue("select count(Nummer) from buchVorgang where Typ='AN' and abgeschlossen=0 and Datum > date_add(current_timestamp, INTERVAL -1 YEAR)")

            AnzahlAufträge = GetValue("select count(Nummer) from buchVorgang where Typ='AR'")
            AnzahlRechnungen = GetValue("select count(Nummer) from buchVorgang where Typ='AR'")

            AnzahlOffeneAufträge = GetValue("select count(Nummer) from buchVorgang v where Typ='AU' and abgeschlossen=0 and exists(select 1 from [buchvorgang-artikel] p where p.Typ=v.Typ and p.Nummer=v.Nummer) and Datum > date_add(current_timestamp, INTERVAL -1 YEAR)")
            AnzahlOffeneRechnungen = GetValue("select count(Nummer) from buchVorgang where Typ='AR' and abgeschlossen=0 and Datum > date_add(current_timestamp, INTERVAL -1 YEAR)")
            AnzahlMahnungen = GetValue("select count(Nummer) from buchVorgang where Typ='AR' and bezahlt=0")
            AnzahlAnrufe = GetValue("select count(AnrufNr) from ofAnrufe")
            AnzahlKunden = GetValue("select count(Idnr) from ofAdressen")
            ArtikelAnlegen = GetValue("select count(ArtNr) from grArtikel where (produktAktiv=1 or produktAktiv=-1)")
            OffeneTasks = GetValue("select count(Id) from tasks")
            'HatGemischteMWSTProKat = ModuleArtikel.VerschiedeneMWSTProKategorie()
            CheckRegistrierkasse = ModulePOSPrinter.CheckRegistrierkasse()
        Catch ex As Exception
            IgnoreAppError(ex)
        End Try
    End Sub

    Private Function GetValue(Sql As String) As Integer
        Try
            Dim cmd As New MySqlCommand With {
                .Connection = conn,
                .CommandText = Sql
            }
            Return NVL(FirstRow(cmd), 0)
        Catch ex As Exception
            HandleAppError(ex, Silent:=True)
            Return 0
        End Try

    End Function


End Class
