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

// config laden
require_once 'config.php';

// Verbindungsaufbau zur Datenbank
$config = include('db-connection.php');
$host = $config['host'];
$port = $config['port'];
$dbname = $config['dbname'];
$user = $config['user'];
$password = $config['password'];

// Verbindung aufbauen
$dbconn = pg_connect("host=$host port=$port dbname=$dbname user=$user password=$password")
    or die('Verbindungsaufbau fehlgeschlagen: ' . pg_last_error());

// Eingabedaten aus JSON-Body
$data = file_get_contents('php://input');
$data = json_decode($data, true);
// Debug: Überprüfen, was im $data steckt
error_log("Empfangene Daten: " . print_r($data, true));

// Debug: Verbindungsdetails
error_log("Verbindungsdetails:");
error_log(print_r($dbconn, true));

// Überprüfen, ob die erforderlichen Daten vorhanden sind
$required_fields = ['gid', 'username', 'deviceInfo', 'first_name', 'last_name', 'year_of_birth', 'street', 'house_no', 'localdistrict', 'city'];
foreach ($required_fields as $field) {
    if (!isset($data[$field])) {
        error_log("Fehlendes Feld: " . $field);
    }
}

// Dynamischer Tabellenname aus der config.php laden
$tableName = "public.{$tablePrefix}";  // Der Tabellenname wird dynamisch gesetzt

// Umwandlung der Daten in JSONB für die Funktionsaufruf
$json_input_string = json_encode($data);

// SQL-Abfrage zur Ausführung der Funktion
// Funktion erwartet jetzt zwei Parameter: JSONB-Daten und den Tabellenpräfix
$sql = "SELECT insert_sc_test($1::jsonb, $2::text)";

// Logge den SQL-Befehl, um sicherzustellen, dass er korrekt ist
error_log("SQL-Befehl: " . $sql);

// SQL ausführen
$result = pg_query_params($dbconn, $sql, array($json_input_string, $tablePrefix));

// Ergebnis verarbeiten
if ($result) {
    $row = pg_fetch_assoc($result);
    echo json_encode(['success' => true, 'generated_gid' => $row['insert_sc_test']]);
} else {
    // Fehlerbehandlung mit detaillierter Fehlermeldung
    echo json_encode(['success' => false, 'error' => 'Fehler bei der Ausführung der Funktion: ' . pg_last_error($dbconn)]);
}

// Verbindung schließen
pg_free_result($result);
pg_close($dbconn);

?>
