<?php
require '../includes/config.php';
require '../fpdf/fpdf.php';
require '../fpdf/src/autoload.php';
require '../includes/mailer_config.php';
require '../vendor/autoload.php';

use setasign\Fpdi\Fpdi;
use PHPMailer\PHPMailer\Exception;
use Endroid\QrCode\Builder\Builder;
use Endroid\QrCode\Writer\PngWriter;

header('Content-Type: application/json');

$codigo = $_GET['codigo'] ?? null;
if (!$codigo) {
    http_response_code(400);
    echo json_encode(['success' => false, 'error' => 'Código no proporcionado']);
    exit;
}

$stmt = $pdo->prepare("
    SELECT 
        a.nombre AS alumno_nombre,
        a.email AS alumno_email,
        a.telefono AS alumno_telefono,
        c.nombre AS curso_nombre,
        c.tipo,
        c.horas_trabajadas,
        c.competencias,
        d.fecha_emision
    FROM diplomas d
    JOIN alumnos_cursos ac ON d.alumno_curso_id = ac.id
    JOIN alumnos a ON ac.alumno_id = a.id
    JOIN cursos c ON ac.curso_id = c.id
    WHERE d.codigo_unico = ?
");
$stmt->execute([$codigo]);
$diploma = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$diploma) {
    http_response_code(404);
    echo json_encode(['success' => false, 'error' => 'Diploma no encontrado']);
    exit;
}

function t($txt) {
    return iconv('UTF-8', 'windows-1252//TRANSLIT', $txt);
}

$alumno = $diploma['alumno_nombre'];
$email = $diploma['alumno_email'];
$telefono = $diploma['alumno_telefono'];
$telefonoFormateado = '52' . preg_replace('/\D/', '', $telefono);
$curso = $diploma['curso_nombre'];
$tipo = $diploma['tipo'];
$horas = $diploma['horas_trabajadas'];
$competencias = $diploma['competencias'] ?? '';
$fecha = new DateTime($diploma['fecha_emision']);
$dia = str_pad($fecha->format('d'), 2, '0', STR_PAD_LEFT);
$mes = $fecha->format('m');
$anio = $fecha->format('Y');

$host = $_SERVER['HTTP_HOST'];
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? "https" : "http";
$baseDir = explode('/api', $_SERVER['SCRIPT_NAME'])[0];
$validationUrl = "$protocol://$host$baseDir/certificado.php?codigo=$codigo";

$qrPath = __DIR__ . "/../temp/qr_$codigo.png";
Builder::create()
    ->writer(new PngWriter())
    ->data($validationUrl)
    ->size(150)
    ->margin(5)
    ->build()
    ->saveToFile($qrPath);

$pdf = new Fpdi();
$pdf->AddPage();
$pdf->setSourceFile(__DIR__ . '/../fpdf/formatodiploma.pdf');
$template = $pdf->importPage(1);
$pdf->useTemplate($template);
$pdf->SetTextColor(33, 37, 41);

$pdf->SetFont('Helvetica', 'B', 12);
$pdf->SetXY(0, 245);
$pdf->Cell(210, 10, t("Dr. Juan Manuel Gutiérrez Méndez"), 0, 1, 'C');
$pdf->SetFont('Helvetica', '', 11);
$pdf->Cell(210, 6, t("Director de Proyectos"), 0, 1, 'C');

$pdf->SetFont('Helvetica', 'I', 10);
$pdf->SetXY(0, 268);
$pdf->Cell(210, 6, t("Se expide en la ciudad de Xalapa, Ver., a los {$dia} días de {$mes} de {$anio}"), 0, 1, 'C');

$pdf->Image($qrPath, 10, 240, 25, 25);
unlink($qrPath);

$tempPath = "/tmp/diploma_$codigo.pdf";
$pdf->Output($tempPath, 'F');

$mail = getMailer();
$mail->addAddress($email, $alumno);
$mail->Subject = "Tu diploma del curso {$curso}";
$mail->Body = "Hola {$alumno},\n\nAdjunto encontrarás tu diploma por haber concluido satisfactoriamente el curso tipo " . ucfirst($tipo) . ": {$curso}.\n\nGracias por tu participación.\n\nPuedes validar el diploma escaneando el código QR o visitando:\n$validationUrl";
$mail->addAttachment($tempPath, "Diploma-$codigo.pdf");

try {
    $mail->send();
    unlink($tempPath);
    $instanceId = 'instance126094';
    $token = 'd7n8da6p4iixalci';
    $mensajeWA = "Hola {$alumno}, hemos enviado el diploma de LANIA a tu correo personal. ¡Felicidades por concluir el curso!";

    $waUrl = "https://api.ultramsg.com/$instanceId/messages/chat";
    $waData = [
        'token' => $token,
        'to' => $telefonoFormateado,
        'body' => $mensajeWA
    ];

    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $waUrl,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => http_build_query($waData)
    ]);
    $waResponse = curl_exec($ch);
    curl_close($ch);

    echo json_encode(['success' => true, 'message' => 'Diploma enviado por correo y WhatsApp']);

} catch (Exception $e) {
    echo json_encode(['success' => false, 'error' => $mail->ErrorInfo]);
}
