<?php
/**
 * API: Buscar Cliente en SAT (Digifact)
 * Soporte para NIT, CF y CUI
 */

header('Content-Type: application/json');
require_once '../../config/fel_config.php';

$input = json_decode(file_get_contents('php://input'), true);
$nit = isset($input['identifier']) ? trim($input['identifier']) : '';
$type = isset($input['type']) ? $input['type'] : 'NIT';

// 1. Caso Consumidor Final
if ($nit === 'CF' || $type === 'CF') {
    echo json_encode([
        'success' => true,
        'data' => [
            'taxID' => 'CF',
            'name' => 'CONSUMIDOR FINAL',
            'address' => 'CIUDAD',
            'type' => 'CF'
        ]
    ]);
    exit;
}

// 2. Caso NIT - Consulta a Digifact
if ($type === 'NIT') {
    $token = getFELToken();
    
    if (!$token) {
        // En caso de fallo de token, permitimos entrada manual devolviendo success false pero manejable
        http_response_code(500);
        echo json_encode(['success' => false, 'error' => 'Error de autenticación con FEL']);
        exit;
    }

    $url = FEL_API_URL . "/Shared";
    $nit_pad = str_pad(FEL_NIT_EMISOR, 12, "0", STR_PAD_LEFT);
    $nit_limpio = preg_replace('/[^0-9kK]/', '', $nit);

    $params = http_build_query([
        "TAXID"    => $nit_pad,
        "DATA1"    => "SHARED_GETINFONITcom",
        "DATA2"    => "NIT|" . $nit_limpio,
        "COUNTRY"  => "GT",
        "USERNAME" => FEL_USUARIO
    ]);

    $ch = curl_init($url . "?" . $params);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: " . $token, "Content-Type: application/json"]);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    $res = curl_exec($ch);
    curl_close($ch);
    
    $dataSAT = json_decode($res, true);

    if (isset($dataSAT['RESPONSE']) && count($dataSAT['RESPONSE']) > 0) {
        $info = $dataSAT['RESPONSE'][0];
        echo json_encode([
            'success' => true,
            'data' => [
                'taxID' => $nit_limpio,
                'name'  => $info['NOMBRE'],
                'address' => $info['Direccion'] ?? 'CIUDAD',
                'type' => 'NIT'
            ]
        ]);
    } else {
        echo json_encode(['success' => false, 'error' => 'NIT no encontrado en SAT']);
    }
} 
// 3. Caso CUI (DPI)
else if ($type === 'CUI') {
    // La consulta de NIT por CUI a veces no está disponible en este endpoint
    // Devolvemos success true para permitir que el usuario llene el nombre manualmente
    echo json_encode([
        'success' => true,
        'data' => [
            'taxID' => $nit,
            'name' => '', // Dejamos vacío para que el usuario lo llene
            'address' => 'CIUDAD',
            'type' => 'CUI'
        ]
    ]);
} 
else {
    // Otros casos
    echo json_encode([
        'success' => true,
        'data' => [
            'taxID' => $nit,
            'name' => '', 
            'address' => 'CIUDAD',
            'type' => $type
        ]
    ]);
}
?>