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

include('include/headscript.php');

$conn = new mysqli($servername, $username, $password, $database);
if ($conn->connect_error) {
    die(json_encode(['success' => false, 'message' => "Connessione fallita: " . $conn->connect_error]));
}

// Verifica se è un upload di immagine
if (!empty($_FILES['photo']) && isset($_POST['idhome'])) {
    $idhome = intval($_POST['idhome']);

    $uploadDir = 'mainphoto/';
    if (!file_exists($uploadDir)) {
        mkdir($uploadDir, 0777, true);
    }

    $file = $_FILES['photo'];
    $originalName = pathinfo($file['name'], PATHINFO_FILENAME);
    $extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
    $allowedExtensions = ['jpg', 'jpeg', 'png', 'gif'];

    if (!in_array($extension, $allowedExtensions)) {
        die(json_encode(['success' => false, 'message' => "Formato non valido. Usa JPG, PNG o GIF."]));
    }

    $newFilename = $iduserlogin . "-" . preg_replace("/[^a-zA-Z0-9]/", "", $originalName) . "-" . time() . "." . $extension;
    $filePath = $uploadDir . $newFilename;

    if (move_uploaded_file($file['tmp_name'], $filePath)) {
        $stmt = $conn->prepare("UPDATE home SET mainphoto = ? WHERE idhome = ?");
        $stmt->bind_param("si", $newFilename, $idhome);
        $stmt->execute();
        $stmt->close();

        echo json_encode(['success' => true, 'filename' => $newFilename]);
    } else {
        echo json_encode(['success' => false, 'message' => "Errore nel salvataggio del file."]);
    }
    exit();
}

// Aggiornamento di tutti i campi inviati
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['idhome'])) {
    $idhome = intval($_POST['idhome']);

    // Lista dei campi consentiti
    $allowedFields = [
        'name',
        'comment',
        'fulladdress',
        'address',
        'zip',
        'city',
        'country',
        'latitude',
        'longitude',
        'cadastral_municipality',
        'cadastral_section',
        'cadastral_sheet',
        'cadastral_particle',
        'cadastral_sub',
        'cadastral_category',
        'cadastral_class',
        'cadastral_surface',
        'cadastral_rendita',
        'cadastral_notes'
    ];

    $updates = [];
    $values = [];
    $types = '';

    // Raccogli i campi da aggiornare
    foreach ($_POST as $key => $value) {
        if (in_array($key, $allowedFields)) {
            $updates[] = "$key = ?";
            $values[] = $conn->real_escape_string($value);
            $types .= 's'; // Tutti i valori sono trattati come stringhe per semplicità
        }
    }

    if (empty($updates)) {
        echo json_encode(['success' => false, 'message' => "Nessun campo valido da aggiornare."]);
        exit();
    }

    // Aggiungi idhome per la WHERE clause
    $values[] = $idhome;
    $types .= 'i';

    // Costruisci la query
    $query = "UPDATE home SET " . implode(', ', $updates) . " WHERE idhome = ?";
    $stmt = $conn->prepare($query);
    if ($stmt === false) {
        die(json_encode(['success' => false, 'message' => "Errore nella preparazione della query: " . $conn->error]));
    }

    // Bind dinamico dei parametri
    $stmt->bind_param($types, ...$values);

    // Esegui la query
    if ($stmt->execute()) {
        echo json_encode(['success' => true, 'message' => 'Aggiornamento riuscito']);
    } else {
        echo json_encode(['success' => false, 'message' => 'Errore: ' . $stmt->error]);
    }

    $stmt->close();
} else {
    echo json_encode(['success' => false, 'message' => "Richiesta non valida."]);
}

$conn->close();
