<?php
session_start();
require_once("inc/config.inc.php");
require_once("inc/functions.inc.php");
//Überprüfe, dass der User eingeloggt ist
//Der Aufruf von check_user() muss in alle internen Seiten eingebaut sein
$user = check_user();
?>

<?php include 'header.php'; ?>
<div class="container">
    <div class="row">
        <div class="col-md-12">
<h2>Stempelkarten-System</h2>

<?php
// Überprüfen, ob eine Benutzer-ID in der Session vorhanden ist
if (!isset($_SESSION['userid'])) {
    die("Kein Benutzer angemeldet.");
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $employee_id = $_POST['employee_id'];
    $datum = $_POST['datum'];
    $buchungen = $_POST['buchungen'];
    $deleted_entries = $_POST['deleted_entries']; // IDs der zu löschenden Einträge

    // Überprüfen, ob alle Termineinträge für denselben Tag sind
    foreach ($buchungen as $timestamp_id => $buchung) {
        if (date('Y-m-d', strtotime($buchung['timestamp_datetime'])) !== $datum) {
            die("Fehler: Nicht alle Termineinträge sind für denselben Tag.");
        }
    }

    try {
        $pdo->beginTransaction();

        // Löschvorgänge durchführen
        foreach ($deleted_entries as $deleted_id) {
            $delete_query = "DELETE FROM timestamps WHERE timestamp_id = :timestamp_id AND employee_id = :employee_id";
            $stmt = $pdo->prepare($delete_query);
            $stmt->bindParam(':timestamp_id', $deleted_id, PDO::PARAM_INT);
            $stmt->bindParam(':employee_id', $employee_id, PDO::PARAM_INT);
            $stmt->execute();
        }

        // Speichern oder Aktualisieren der Buchungen
        foreach ($buchungen as $timestamp_id => $buchung) {
            if (strpos($timestamp_id, 'new_') !== false) {
                // Neue Buchung hinzufügen
                $insert_query = "INSERT INTO timestamps (employee_id, timestamp_type, timestamp_datetime) VALUES (:employee_id, :timestamp_type, :timestamp_datetime)";
                $stmt = $pdo->prepare($insert_query);
            } else {
                // Bestehende Buchung aktualisieren
                $update_query = "UPDATE timestamps SET timestamp_type = :timestamp_type, timestamp_datetime = :timestamp_datetime WHERE timestamp_id = :timestamp_id AND employee_id = :employee_id";
                $stmt = $pdo->prepare($update_query);
                $stmt->bindParam(':timestamp_id', $timestamp_id, PDO::PARAM_INT);
            }

            $stmt->bindParam(':employee_id', $employee_id, PDO::PARAM_INT);
            $stmt->bindParam(':timestamp_type', $buchung['timestamp_type']);
            $stmt->bindParam(':timestamp_datetime', $buchung['timestamp_datetime']);
            $stmt->execute();
        }

        $pdo->commit();
        echo "Änderungen erfolgreich gespeichert.";
    } catch(PDOException $e) {
        $pdo->rollBack();
        echo "Datenbankfehler: " . $e->getMessage();
    }
} else {
    die("Ungültige Anfrage.");
}
?>
		</div>
	</div>
</div>

<?php include 'footer.php'; ?>