<?php
// update_poi_caretaker.php - Aktualisiert den Betreuer (caretaker) eines Stolpersteins.
// Das Skript leitet die Anfrage an die zentrale Funktion update_poi_general.php weiter.

// PHP-Fehlermeldungen direkt anzeigen, nur für Debug-Zwecke
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);


// === Konfiguration, Logging und Validierung importieren ===
$debugLogFile = __DIR__ . '/update_poi_caretaker_debug.log';
require_once __DIR__ . '/logging_functions.php';
require_once __DIR__ . '/validation_functions.php';
$config = require_once __DIR__ . '/config.php';

// Wichtig: Import der zentralen Update-Funktion
require_once __DIR__ . '/update_poi_general.php';

// === Aufruf der Validierungsfunktion ===
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);

    if (json_last_error() !== JSON_ERROR_NONE) {
        internal_debug_log("JSON Decode Error: " . json_last_error_msg(), $debugLogFile);
        throw new Exception('Ungültige JSON-Eingabe.');
    }

    // Überprüfen, ob die erforderlichen Felder vorhanden sind
    if (!isset($data['gid']) || !isset($data['caretaker'])) {
        internal_debug_log("Fehlende Daten: GID oder Caretaker.", $debugLogFile);
        throw new Exception('Fehlende Daten: GID oder caretaker.');
    }

    // Daten für die allgemeine Funktion vorbereiten
    $dataToUpdate = [
        'gid' => $data['gid'],
        'updated_by' => $data['username'] ?? null,
        'updated_at' => date('Y-m-d H:i:s'),
        'caretaker' => $data['caretaker'],
        '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 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);