<?php
session_start();

// Configuración de conexión a Firebird
$host = 'localhost'; 
$database = 'C:\Program Files (x86)\Common Files\Aspel\Sistemas Aspel\SAE9.00\Ejemplos\EJEMPLOS.FDB';
$username = 'SYSDBA'; 
$password = 'masterkey';

// Verifica si se envió el formulario
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    try {
        // Conexión a la base de datos
        $dbh = new PDO("firebird:host=$host;dbname=$database;charset=UTF8", $username, $password);

        // Generar la nueva clave del cliente
        $sql = "SELECT CLAVE FROM CLIE01";
        $stmt = $dbh->query($sql);
        $claves = $stmt->fetchAll(PDO::FETCH_COLUMN);

        // Filtrar solo claves numéricas
        $numeric_claves = array_filter($claves, 'is_numeric');
        $last_clave = max($numeric_claves);
        $new_clave_number = ($last_clave !== null ? intval($last_clave) : 0) + 1;
        $new_clave = sprintf('%10d', $new_clave_number);

        // Insertar en CLIE01
        $sql_clie01 = "INSERT INTO CLIE01 (
            CLAVE, STATUS, NOMBRE, RFC, CURP, CALLE, NUMEXT, NUMINT, COLONIA, MUNICIPIO, ESTADO, PAIS, TELEFONO, EMAILPRED, SALDO
        ) VALUES (
            :clave, 'A', :nombre, :rfc, :curp, :calle, :numext, :numint, :colonia, :municipio, :estado, :pais, :telefono, :email, 0.000
        )";

        $stmt_clie01 = $dbh->prepare($sql_clie01);
        $stmt_clie01->execute([
            ':clave' => $new_clave,
            ':nombre' => $_POST['nombre'],
            ':rfc' => $_POST['rfc'],
            ':curp' => $_POST['curp'],
            ':calle' => $_POST['calle'],
            ':numext' => $_POST['numext'],
            ':numint' => $_POST['numint'],
            ':colonia' => $_POST['colonia'],
            ':municipio' => $_POST['municipio'],
            ':estado' => $_POST['estado'],
            ':pais' => $_POST['pais'],
            ':telefono' => $_POST['telefono'],
            ':email' => $_POST['email'],
        ]);

        // Insertar campos libres en CLIE_CLIB01
        $campos_libres = [];
        foreach ($_POST as $key => $value) {
            if (strpos($key, 'campo_libre_') === 0) {
                $campo = str_replace('campo_libre_', '', $key);
                $campos_libres[$campo] = $value;
            }
        }

        if (!empty($campos_libres)) {
            $columns = implode(", ", array_keys($campos_libres));
            $placeholders = ":" . implode(", :", array_keys($campos_libres));

            $sql_clie_clib01 = "INSERT INTO CLIE_CLIB01 (CVE_CLIE, $columns) VALUES (:cve_clie, $placeholders)";
            $stmt_clie_clib01 = $dbh->prepare($sql_clie_clib01);

            $params = [':cve_clie' => $new_clave];
            foreach ($campos_libres as $campo => $valor) {
                $params[":$campo"] = $valor;
            }

            $stmt_clie_clib01->execute($params);
        }

        // Respuesta exitosa
        echo json_encode(['success' => true, 'message' => 'Cliente creado correctamente.']);
    } catch (PDOException $e) {
        // Manejo de errores
        echo json_encode(['success' => false, 'message' => "Error: " . $e->getMessage()]);
    }
    exit;
}
?>
