<?php
/**
 * cron_promos_contactos.php
 *
 * Cada ejecución:
 *   - Toma 1 contacto con nota vacía (o NULL), ordenado por fecha_alta asc.
 *   - Arma mensaje comercial y lo encola en mensajes_a_enviar.
 *   - Marca el contacto con una nota de bandera para no repetir.
 */

error_reporting(E_ALL);
ini_set('display_errors', 1);

// Config + PDO
require_once __DIR__ . '/config.php';
$pdo = db();

// Zona horaria Argentina
date_default_timezone_set('America/Argentina/Buenos_Aires');

// ----------------------------------------------------------
// 1) Buscar UN contacto pendiente (nota = '' o NULL)
// ----------------------------------------------------------
$sqlContacto = "
    SELECT id, telefono, nota, fecha_alta
    FROM contactos
    WHERE (nota IS NULL OR nota = '')
      AND telefono <> ''
    ORDER BY fecha_alta ASC, id ASC
    LIMIT 1
";

$stmt = $pdo->query($sqlContacto);
$contacto = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$contacto) {
    echo "No hay contactos pendientes (nota vacía).\n";
    exit;
}

$contactoId  = (int)$contacto['id'];
$telefonoRaw = trim($contacto['telefono']);
$fechaAlta   = $contacto['fecha_alta'];

if ($telefonoRaw === '') {
    echo "Contacto {$contactoId} sin teléfono, se salta.\n";
    exit;
}

// ----------------------------------------------------------
// 2) Normalizar teléfono para UltraMsg (+549...)
// ----------------------------------------------------------
$telNorm = preg_replace('/\s+/', '', $telefonoRaw);
if ($telNorm !== '' && $telNorm[0] !== '+') {
    $telNorm = '+' . $telNorm;
}

// ----------------------------------------------------------
// 3) Armar saludo según hora Argentina
// ----------------------------------------------------------
$hora = (int)date('G'); // 0–23

if ($hora < 12) {
    $saludo = "buen día";
} elseif ($hora < 19) {
    $saludo = "buenas tardes";
} else {
    $saludo = "buenas noches";
}

// ----------------------------------------------------------
// 4) Mensaje de venta
// ----------------------------------------------------------
$mensaje = "Hola, {$saludo}. Hace un tiempo charlamos por este medio, "
         . "te escribía para contarte que estamos ofreciendo servicios de:\n\n"
         . "- Jingles publicitarios (canciones a medida) por \$32.000\n"
         . "- Diseño de flyers (imágenes para redes) por \$18.000\n"
         . "- Diseño de sitios web por \$35.000 mensuales todo incluido\n"
         . "- Software a medida (diseñamos el sistema que necesites)\n\n"
         . "Podemos ayudarte con estas nuevas tecnologías para tu negocio, "
         . "¿te interesa algún servicio? Gracias por responder!";

// ----------------------------------------------------------
// 5) Evitar duplicados: ¿ya hay este mismo mensaje para este destinatario?
// ----------------------------------------------------------
$sqlExiste = "
    SELECT COUNT(*)
    FROM mensajes_a_enviar
    WHERE destinatario = :dest
      AND mensaje = :msg
";
$stmtExiste = $pdo->prepare($sqlExiste);
$stmtExiste->execute([
    ':dest' => $telNorm,
    ':msg'  => $mensaje,
]);
$yaExiste = (int)$stmtExiste->fetchColumn();

if ($yaExiste > 0) {
    echo "Ya existe un mensaje igual en cola para {$telNorm}, se marca nota igualmente.\n";
} else {
    // ------------------------------------------------------
    // 6) Insertar en cola mensajes_a_enviar
    // ------------------------------------------------------
    $sqlInsert = "
        INSERT INTO mensajes_a_enviar
            (destinatario, mensaje, prioridad, programado_para, intentos)
        VALUES
            (:dest, :msg, 20, NULL, 0)
    ";
    $stmtInsert = $pdo->prepare($sqlInsert);
    $stmtInsert->execute([
        ':dest' => $telNorm,
        ':msg'  => $mensaje,
    ]);

    echo "Encolado mensaje comercial para contacto {$contactoId} ({$telNorm}).\n";
}

// ----------------------------------------------------------
// 7) Marcar contacto como ya procesado (bandera en nota)
// ----------------------------------------------------------
// podés cambiar el texto si querés algo más corto
$nuevaNota = 'promo-servicios-' . date('Ymd');

$sqlUpdate = "
    UPDATE contactos
    SET nota = :nota
    WHERE id = :id
";
$stmtUpdate = $pdo->prepare($sqlUpdate);
$stmtUpdate->execute([
    ':nota' => $nuevaNota,
    ':id'   => $contactoId,
]);

echo "Contacto {$contactoId} marcado con nota='{$nuevaNota}'.\n";
echo "Proceso finalizado.\n";

