<?php
// helpers/brevo.php — envío de emails transaccionales via Brevo API

function brevo_send(int $user_id, string $template_key, array $vars = []): bool {
    global $pdo;
    if (!defined('BREVO_API_KEY') || !BREVO_API_KEY) return false;

    // Obtener datos del usuario
    $u = $pdo->prepare("SELECT name, email FROM dm_users WHERE id=? AND deleted_at IS NULL");
    $u->execute([$user_id]);
    $user = $u->fetch();
    if (!$user) return false;

    $templates = _brevo_templates();
    if (!isset($templates[$template_key])) return false;
    $tpl = $templates[$template_key];

    $vars['name']       = $user['name'];
    $vars['email']      = $user['email'];
    $vars['app_url']    = 'https://dimark.co/supercerebro/';
    $vars['pricing_url']= 'https://dimark.co/supercerebro/home/#pricing';
    $subject = _brevo_interpolate($tpl['subject'], $vars);
    $body    = _brevo_interpolate($tpl['body'], $vars);

    $payload = json_encode([
        'sender'     => ['name' => BREVO_SENDER_NAME, 'email' => BREVO_SENDER_EMAIL],
        'to'         => [['email' => $user['email'], 'name' => $user['name']]],
        'subject'    => $subject,
        'htmlContent'=> $body,
    ]);

    $ch = curl_init('https://api.brevo.com/v3/smtp/email');
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $payload,
        CURLOPT_HTTPHEADER     => [
            'api-key: ' . BREVO_API_KEY,
            'Content-Type: application/json',
            'Accept: application/json',
        ],
        CURLOPT_TIMEOUT        => 10,
    ]);
    $resp = curl_exec($ch);
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    // Log en dm_billing_events para trazabilidad
    if ($pdo) {
        try {
            $pdo->prepare("INSERT INTO dm_billing_events (user_id, event_type, payload) VALUES (?,?,?)")
                ->execute([$user_id, 'email_sent_' . $template_key, json_encode(['subject'=>$subject,'status'=>$code])]);
        } catch (Throwable $e) {}
    }
    return $code === 201;
}

function _brevo_interpolate(string $text, array $vars): string {
    foreach ($vars as $k => $v) $text = str_replace('{{'.$k.'}}', $v, $text);
    return $text;
}

function _brevo_templates(): array {
    return [
        'welcome' => [
            'subject' => '¡Bienvenido a SuperCerebro, {{name}}!',
            'body'    => '<h2>Hola {{name}}, ¡ya tienes acceso!</h2><p>Tu prueba gratuita de 7 días ha comenzado. Tienes acceso a <strong>todos los módulos</strong>.</p><p><strong>Primer paso:</strong> conecta tu Claude API Key en <a href="{{app_url}}">Configuración → APIs</a> para activar el análisis con IA.</p><p>Si necesitas ayuda, responde este email.</p><br>— Equipo SuperCerebro',
        ],
        'trial_day3' => [
            'subject' => '{{name}}, ¿pudiste conectar tus APIs?',
            'body'    => '<h2>Hola {{name}}</h2><p>Ya llevas 3 días en SuperCerebro. Si aún no conectaste tus APIs (Meta, Google, Claude), aquí tienes la guía rápida:</p><ol><li>Ve a <strong>Configuración → APIs</strong></li><li>Pega tu Claude API key (console.anthropic.com)</li><li>Conecta Meta con tu System User Token</li></ol><p>¿Tienes alguna duda? Responde este email y te ayudamos en minutos.</p><br>— David, SuperCerebro',
        ],
        'trial_day5' => [
            'subject' => 'Te quedan 2 días de prueba, {{name}}',
            'body'    => '<h2>Hola {{name}}</h2><p>Tu prueba gratuita termina en <strong>2 días</strong>. No pierdas tu configuración ni tu historial.</p><p><a href="{{pricing_url}}" style="background:#E8272A;color:white;padding:12px 24px;text-decoration:none;border-radius:6px;display:inline-block">Ver planes desde $49/mes →</a></p><p>¿Tienes preguntas antes de decidir? Responde este email.</p><br>— Equipo SuperCerebro',
        ],
        'trial_day7' => [
            'subject' => 'Hoy termina tu prueba de SuperCerebro',
            'body'    => '<h2>Hola {{name}}</h2><p>Tu período de prueba <strong>termina hoy</strong>. Si no eliges un plan, tu cuenta quedará suspendida (datos conservados 30 días).</p><p><a href="{{pricing_url}}" style="background:#E8272A;color:white;padding:12px 24px;text-decoration:none;border-radius:6px;display:inline-block">Elegir mi plan ahora →</a></p><br>— Equipo SuperCerebro',
        ],
        'trial_expired' => [
            'subject' => 'Tu prueba de SuperCerebro terminó, {{name}}',
            'body'    => '<h2>Hola {{name}}</h2><p>Tu prueba gratuita ha terminado. Tu cuenta está suspendida pero <strong>todos tus datos están guardados por 30 días</strong>.</p><p>Puedes reactivarla en cualquier momento eligiendo un plan:</p><p><a href="{{pricing_url}}" style="background:#E8272A;color:white;padding:12px 24px;text-decoration:none;border-radius:6px;display:inline-block">Reactivar mi cuenta →</a></p><br>— Equipo SuperCerebro',
        ],
        'payment_failed' => [
            'subject' => 'No pudimos procesar tu pago, {{name}}',
            'body'    => '<h2>Hola {{name}}</h2><p>Intentamos renovar tu suscripción pero el pago no fue procesado.</p><p>Tienes <strong>3 días</strong> para actualizar tu método de pago antes de que la cuenta pase a modo lectura.</p><p><a href="{{app_url}}" style="background:#E8272A;color:white;padding:12px 24px;text-decoration:none;border-radius:6px;display:inline-block">Ir al dashboard → Gestionar facturación →</a></p><br>— Equipo SuperCerebro',
        ],
        'payment_success' => [
            'subject' => 'Pago confirmado — SuperCerebro {{plan}}',
            'body'    => '<h2>Hola {{name}}</h2><p>Tu suscripción al plan <strong>{{plan}}</strong> ha sido renovada exitosamente.</p><p>Próxima fecha de cobro: <strong>{{next_date}}</strong></p><p><a href="{{app_url}}">Ir al dashboard →</a></p><br>— Equipo SuperCerebro',
        ],
        'subscription_created' => [
            'subject' => '¡Bienvenido al plan {{plan}}, {{name}}!',
            'body'    => '<h2>¡Listo, {{name}}!</h2><p>Tu suscripción al plan <strong>{{plan}}</strong> está activa.</p><p>Tienes acceso a {{modules}} módulos y hasta {{accounts}} cuentas de clientes.</p><p><strong>¿Quieres que configuremos todo por ti?</strong> Solicita tu servicio de implementación desde el dashboard.</p><p><a href="{{app_url}}" style="background:#E8272A;color:white;padding:12px 24px;text-decoration:none;border-radius:6px;display:inline-block">Ir a SuperCerebro →</a></p><br>— Equipo SuperCerebro',
        ],
        'implementation_confirmed' => [
            'subject' => 'Implementación confirmada — SuperCerebro',
            'body'    => '<h2>Hola {{name}}</h2><p>Recibimos tu solicitud de implementación. El equipo de SuperCerebro te contactará en las próximas <strong>24 horas</strong> para agendar tu sesión.</p><p>Incluye: {{deliverables}}</p><br>— Equipo SuperCerebro',
        ],
        'implementation_delivered' => [
            'subject' => 'Tu implementación está lista, {{name}}',
            'body'    => '<h2>¡Listo, {{name}}!</h2><p>Tu implementación de SuperCerebro ha sido completada. Aquí el resumen:</p><p>{{summary}}</p><p>¿Tienes alguna duda? Responde este email o escríbenos por chat.</p><br>— Equipo SuperCerebro',
        ],
        'renewal_reminder' => [
            'subject' => 'Tu suscripción se renueva en {{days}} días',
            'body'    => '<h2>Hola {{name}}</h2><p>Solo para avisarte: tu suscripción SuperCerebro se renueva el <strong>{{date}}</strong> por <strong>${{amount}} USD</strong>.</p><p>Puedes gestionar tu plan o método de pago en: <a href="{{portal_url}}">Portal de facturación</a></p><br>— Equipo SuperCerebro',
        ],
    ];
}
