<?php
// Connessione al database
include('../include/headscript.php');
$conn = new mysqli($servername, $username, $password, $database);

// Recupera i dati dalla richiesta POST
$iduser = isset($_POST['user']) ? $_POST['user'] : 0;
$table = isset($_POST['table']) ? $_POST['table'] : '';
$settings = isset($_POST['settings']) ? $_POST['settings'] : '';

if ($iduser && $table && $settings) {
    // Decodifica il JSON delle impostazioni
    $settingsArray = json_decode($settings, true);

    if (json_last_error() === JSON_ERROR_NONE) {
        // Estrai visibilità e ordine delle colonne
        $column_visibility = json_encode(array_column($settingsArray['columns'], 'visible'));
        $column_order = json_encode($settingsArray['ColReorder']);

        // Verifica se esistono già impostazioni per l'utente e la pagina
        $stmt = $conn->prepare("SELECT column_visibility, column_order FROM user_table_settings WHERE iduser = ? AND page = ?");
        $stmt->bind_param("is", $iduser, $table);
        $stmt->execute();
        $result = $stmt->get_result();

        if ($result->num_rows > 0) {
            $row = $result->fetch_assoc();
            $existing_visibility = $row['column_visibility'];
            $existing_order = $row['column_order'];

            // Aggiorna solo se c'è una differenza rispetto alle impostazioni già salvate
            if ($existing_visibility != $column_visibility || $existing_order != $column_order) {
                $stmt = $conn->prepare("UPDATE user_table_settings SET column_visibility = ?, column_order = ?, updated_at = NOW() WHERE iduser = ? AND page = ?");
                $stmt->bind_param("ssis", $column_visibility, $column_order, $iduser, $table);
                if ($stmt->execute()) {
                    echo json_encode(['success' => true, 'message' => 'Settings updated']);
                } else {
                    echo json_encode(['error' => 'Failed to update settings']);
                }
            } else {
                echo json_encode(['success' => true, 'message' => 'No changes to save']);
            }
        } else {
            // Inserisci nuove impostazioni solo se non esistono già
            $stmt = $conn->prepare("INSERT INTO user_table_settings (iduser, page, column_visibility, column_order, created_at) VALUES (?, ?, ?, ?, NOW())");
            $stmt->bind_param("isss", $iduser, $table, $column_visibility, $column_order);
            if ($stmt->execute()) {
                echo json_encode(['success' => true, 'message' => 'Settings saved']);
            } else {
                echo json_encode(['error' => 'Failed to save settings']);
            }
        }
    } else {
        echo json_encode(['error' => 'Invalid JSON format']);
    }
} else {
    // Se non ci sono dati sufficienti, invia un errore
    http_response_code(400);
    echo json_encode(['error' => 'Invalid request']);
}

$conn->close();
