<?php
// ultramsg_api.php
require_once __DIR__ . '/config.php';

function ultramsg_send_text(string $telefono, string $mensaje): array
{
    $url = "https://api.ultramsg.com/" . ULTRA_INSTANCE_ID . "/messages/chat";

    $params = [
        'token' => ULTRA_TOKEN,
        'to'    => $telefono,
        'body'  => $mensaje,
    ];

    $ch = curl_init();

    curl_setopt_array($ch, [
        CURLOPT_URL            => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 30,
        CURLOPT_CUSTOMREQUEST  => 'POST',
        CURLOPT_POSTFIELDS     => http_build_query($params),
        CURLOPT_HTTPHEADER     => [
            'content-type: application/x-www-form-urlencoded',
        ],
    ]);

    $response = curl_exec($ch);
    $error    = curl_error($ch);
    $httpCode = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($error) {
        return ['ok' => false, 'error' => $error, 'http' => $httpCode];
    }

    $data = json_decode($response, true);

    return [
        'ok'   => $httpCode === 200,
        'http' => $httpCode,
        'data' => $data,
        'raw'  => $response,
    ];
}

/**
 * Descarga un archivo de UltraMsg (imagen/audio) y guarda en /media
 * Devuelve la ruta relativa para guardar en SQL, o null si falla.
 */
function descargar_media(string $url, string $prefijo): ?string
{
    $contenido = @file_get_contents($url);
    if ($contenido === false) {
        return null;
    }

    $ext = pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_EXTENSION) ?: 'bin';

    $subdir = date('Y/m/d'); // media/2025/12/01/...
    $dir    = WHATSAPP_MEDIA_DIR . '/' . $subdir;

    if (!is_dir($dir)) {
        mkdir($dir, 0775, true);
    }

    $nombreArchivo = $prefijo . '_' . uniqid() . '.' . $ext;
    $rutaCompleta  = $dir . '/' . $nombreArchivo;

    if (file_put_contents($rutaCompleta, $contenido) === false) {
        return null;
    }

    // Ruta relativa para usar en HTML
    $rutaRelativa = 'media/' . $subdir . '/' . $nombreArchivo;
    return $rutaRelativa;
}
