<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

class BonId {
    public $Filiale;
    public $Terminal;
    public $Nr;
        
    public function __construct($Filiale, $Terminal, $Nr) {
        $this->Filiale = $Filiale;
        $this->Terminal = $Terminal;
        $this->Nr = $Nr;
    }

    public function display() {
        echo "Bon Id: " . $this->Filiale . " " . $this->Terminal . " " . $this->Nr . "<br>";
    }
}

function SetButton ($todo) {
    global $filename;
    global $datum_von;

    $link = "'" . $filename . '?do=' . $todo . "'";
    $pre = '<input type="button" value="' . $todo . '" onclick="window.location.href=';
    $post = ';">';
    echo $pre . $link . $post;
    }

function DoButton ($todo) {
    $_POST["do"] = $todo;
    echo '<input type="submit" value="' . $todo . '">';
}

// Bons suchen und in Array speichern
function SelectFilTerm(string $filiale, string $terminal, $datum_von, $datum_bis, $zeit_von, $zeit_bis, $text): array {
    echo "Filiale: " . $filiale . "<br>";
    echo "Terminal: " . $terminal . "<br>";
    echo "Von: " . $datum_von . " " . $zeit_von . "<br>";
    echo "Bis: " . $datum_bis . " " . $zeit_bis . "<br><br>";  

    global $conn;
    $bonids = [];
    $bonid = null;
    $bonid_alt = $bonid;

    $sql_zeitbereich = "(Datum > '$datum_von' OR Datum = '$datum_von' AND Zeit > '$zeit_von') AND (Datum < '$datum_bis' OR Datum = '$datum_bis' And Zeit < '$zeit_bis')";

    if (empty($filiale)) {
        echo "Alle Filialen<br>";

        $sql = "SELECT Filiale, Terminal, Nr, Zeile FROM Bon WHERE " . $sql_zeitbereich;    
        } else 
        {
        if (empty($terminal)) {
            echo "Alle Terminals<br>";
            $sql = "SELECT Filiale, Terminal, Nr, Zeile FROM Bon WHERE Filiale = '$filiale' AND " . $sql_zeitbereich;
            } else {
            $sql = "SELECT Filiale, Terminal, Nr, Zeile FROM Bon WHERE Filiale = '$filiale' AND Terminal = '$terminal' AND " . $sql_zeitbereich;
            }
        }
        
    if (!empty($text)) {
        $sql = $sql . " AND Zeile LIKE '%" . $text . "%'";
    }

    // zu Testzwecken
    // echo $sql . "<br>";

    $result = $conn->query($sql);
        
    $i = 0;
    $bon_betrag = 0;
    $bon_betrag_total = 0;

    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {

            $bonid = new BonId($row["Filiale"], $row["Terminal"], $row["Nr"]);
            // $bonid->display();
            if ($bonid_alt != $bonid) {
                $i++;
                $bonids[] = $bonid;

                $bon_betrag_total = $bon_betrag_total + $bon_betrag;
                // echo " " . $bon_betrag_alt . "<br>";
                // $bon_betrag = 0;
            }
            $bonid_alt = $bonid;
            // $bon_betrag_alt = $bon_betrag;
            }
    } 
    echo $i++ . " Bons gefunden<br>";

    // Gesamttotal berechnen
    if (!empty($bonids)) {
        global $bon_total;
        $bon_total = 0;
        foreach ($bonids as $bonid) {
            $bon_betrag = SummeTotal($bonid->Filiale, $bonid->Terminal, $bonid->Nr);
            $bon_total += $bon_betrag;      
            }
        echo "Gesamt: CHF " . number_format($bon_total, 2);
        }
    
    echo "</div>";

    return $bonids;
    }

// Bon anzeigen
function ShowKontStr(string $Filiale, string $Terminal, $Nr) {
    echo "<div class='kontstr'>";

    global $conn;
    $filialname = "";

    $sql = "SELECT Zeile FROM Bon WHERE Filiale = '$Filiale' AND Terminal = '$Terminal' And Nr = '$Nr'";
    $result = $conn->query($sql);
    
    echo "<img class='logo' src='logo.png'><br>";

    if ($result->num_rows > 0) {
        $filialname = FilialeName($Filiale);       
        echo htmlspecialchars($filialname) . " Terminal " . $Terminal . "<br>";
        while ($row = $result->fetch_assoc()) {
            $zeile = $row["Zeile"];
            $zeile = str_replace(" ", "&nbsp;", $zeile);
            echo $zeile . "<br>";
            }
    } else {
        echo "0 results<br>";
    }
    echo "</div>";
}  

// Totalbeträge berechnen
function SummeTotal(string $Filiale, string $Terminal, $Nr) {
    global $conn;
    $bon_betrag = 0;

    $sql = "SELECT Zeile FROM Bon WHERE Filiale = '$Filiale' AND Terminal = '$Terminal' And Nr = '$Nr'";
    $result = $conn->query($sql);
    
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $zeile = $row["Zeile"];
            $pos = strpos($zeile, 'Totalbetrag');
            if ($pos !== false) {
                $substring = substr($zeile, 30);
                $bon_betrag = floatval($substring);
            }
        }
    } 
    return $bon_betrag;
}  

function FilialenArray(): array{
    global $conn;
    $filialen_array = [];
        
    $sql = "SELECT * FROM Filialen";
    $result = $conn->query($sql);
        
    if ($result->num_rows > 0) {
        // Output data of each row
        while($row = $result->fetch_assoc()) {
            // echo "Nr: " . $row["Filiale_Nr"]. " - Name: " . $row["Filiale_Name"] . "<br>";
            $filialen_array[$row["Filiale_Nr"]] = $row["Filiale_Name"];
        }
    } 
        
    return $filialen_array;
} 

function FilialeName($filialnr) {
    // echo "NR " . $filialnr;
    global $filialen_array;
    $filialname = $filialen_array[$filialnr];
    return $filialname;
}
?>
