<?php
// Datos de conexión Firebird
$host = 'localhost';
$database = 'C:\Program Files (x86)\Common Files\Aspel\Sistemas Aspel\SAE7.00\Ejemplos\Ejemplos.fdb';
$username = 'SYSDBA';
$password = 'masterkey';

header('Content-Type: application/json');

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Validamos que los datos existen
    if (!isset($_POST['campo'], $_POST['valor'], $_POST['clienteId'])) {
        echo json_encode(['status' => 'error', 'message' => 'Datos incompletos']);
        exit;
    }

    $campo = $_POST['campo'];
    $valor = $_POST['valor'];
    $clienteId = $_POST['clienteId'];

    // Lista de campos permitidos para prevenir SQL Injection
    $allowedFields = ['CALLE_ENVIO', 'NUMEXT_ENVIO', 'NUMINT_ENVIO', 'CRUZAMIENTOS_ENVIO'];

    if (!in_array($campo, $allowedFields)) {
        echo json_encode(['status' => 'error', 'message' => 'Campo no permitido']);
        exit;
    }

    try {
        // Conexión a Firebird
        $dbh = new PDO("firebird:dbname=$database;charset=UTF8", $username, $password, [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
        ]);

        // Construcción dinámica del SQL usando campos validados
        $sql = "UPDATE CLIE01 SET $campo = :valor WHERE CLAVE = :clienteId";
        $stmt = $dbh->prepare($sql);
        $stmt->bindParam(':valor', $valor);
        $stmt->bindParam(':clienteId', $clienteId);

        $stmt->execute();

        if ($stmt->rowCount() > 0) {
            echo json_encode(['status' => 'success', 'message' => 'Campo actualizado correctamente']);
        } else {
            echo json_encode(['status' => 'error', 'message' => 'No se realizaron cambios (verifica si el valor es igual al anterior)']);
        }
    } catch (PDOException $e) {
        echo json_encode(['status' => 'error', 'message' => 'Error al actualizar el campo: ' . $e->getMessage()]);
    }
} else {
    echo json_encode(['status' => 'error', 'message' => 'Método de solicitud no permitido']);
}
