<?php
// update_poi_details.php - Verarbeitet die Aktualisierung von Stolperstein-Details.

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// === Schritt 1: Debug-Logfile und Logging-Funktion zuerst definieren ===
$debugLogFile = __DIR__ . '/update_poi_details_debug.log';
require_once __DIR__ . '/logging_functions.php';

// === Schritt 2: Konfiguration und andere Funktionen laden ===
$config = require_once __DIR__ . '/config.php';
require_once __DIR__ . '/validation_functions.php';
require_once __DIR__ . '/update_poi_general.php';
require_once __DIR__ . '/db-connection.php'; 

// === Schritt 3: Validierungsprüfung ausführen ===
if (!isValidDatabaseRequest($debugLogFile)) {
    http_response_code(400);
    echo json_encode(["error" => "Ungültige URL-Parameter. Nur '?p' oder keine Parameter sind erlaubt."]);
    exit;
}

internal_debug_log("--- " . basename(__FILE__) . " START ---", $debugLogFile);
header('Content-Type: application/json');

try {
    // Eingabedaten des Clients verarbeiten
    $input = file_get_contents('php://input');
    $data = json_decode($input, true);

    // === ZUSÄTZLICHE PRÜFUNG: Sicherstellen, dass die Daten ein Array sind ===
    if (json_last_error() !== JSON_ERROR_NONE || !is_array($data)) {
        internal_debug_log("JSON Decode Error: " . json_last_error_msg() . " or data is not an array.", $debugLogFile);
        echo json_encode(['success' => false, 'error' => 'Ungültige JSON-Eingabe.']);
        exit;
    }

    // Zusätzliche Überprüfung auf erforderliche Daten
    if (empty($data['gid']) || empty($data['username'])) {
        internal_debug_log("Required data (gid or username) is missing.", $debugLogFile);
        echo json_encode(['success' => false, 'error' => 'Erforderliche Daten fehlen.']);
        exit;
    }

    // Daten für die allgemeine Funktion vorbereiten
    $dataToUpdate = [
        'gid' => $data['gid'],
        'updated_by' => $data['username'],
        'updated_at' => date('Y-m-d H:i:s'),
        // === Spezifische Logik für Details-Update-Skript ===
        // Überprüfen, ob die Felder existieren, bevor sie verwendet werden
        'first_name' => isset($data['first_name']) ? (string)$data['first_name'] : null,
        'last_name' => isset($data['last_name']) ? (string)$data['last_name'] : null,
        'year_of_birth' => isset($data['year_of_birth']) ? (int)$data['year_of_birth'] : null, // Konvertieren in int
        'stone_position' => isset($data['stone_position']) ? (string)$data['stone_position'] : null,
        // ===========================================
        'tablePrefix' => $config['tablePrefix']
    ];
    internal_debug_log("Data prepared for general update function: " . print_r($dataToUpdate, true), $debugLogFile);

    // Die allgemeine Funktion aufrufen
    $response = update_poi_general($dataToUpdate, $debugLogFile);

    // Das Ergebnis der Funktion an den Client zurückgeben
    echo json_encode($response);

} catch (Throwable $e) {
    $errorMessage = "Unhandled exception/error: " . $e->getMessage() . " in " . $e->getFile() . " on line " . $e->getLine();
    internal_debug_log($errorMessage, $debugLogFile);
    echo json_encode(['success' => false, 'error' => 'Ein unerwarteter Serverfehler ist aufgetreten.', 'details' => $errorMessage]);
}

internal_debug_log("--- " . basename(__FILE__) . " END ---", $debugLogFile);
?>