<?php
// send_push_debug.php
// Debug-enabled script for sending Web Push notifications via web-push-php

// Mostrar errores en pantalla
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Autoload y funciones
require_once '../inc/funciones.php';
require_once '../../vendor/autoload.php';

use Minishlink\WebPush\WebPush;
use Minishlink\WebPush\Subscription;

// Conexión a BD
$r = '';
$mysqli = connectDB($r);
if ($mysqli->connect_error) {
    die("DB connect error: " . $mysqli->connect_error);
}

// Claves VAPID (defínelas en variables de entorno o reemplaza aquí)
$publicKey='BC4uAK9nHDxyQ8wF2Gzq8tlT2oEIldr2qFGycAc94TrU8AFZCh85kwSKVdxMN1BlmT2gCmiKOsEbnlpHU-x-snY';
$privateKey='U4eKx62dDwudIipFCs0dPQawByTmov9q502pbPx8yN0';


if (!$publicKey || !$privateKey) {
    die('Error: VAPID publicKey/privateKey no definidas.');
}

// Configuración VAPID
$auth = [
    'VAPID' => [
        'subject'    => 'mailto:info@quimiforen.com',
        'publicKey'  => $publicKey,
        'privateKey' => $privateKey,
    ],
];

// Crea el cliente WebPush
$webPush = new WebPush($auth);

// Parámetros de la notificación
$url   = $_GET['url']   ?? 'https://quimiforen.com/';
$title = $_GET['title'] ?? 'Título por defecto';
$body  = $_GET['body']  ?? 'Cuerpo por defecto';

// Obtener suscripciones activas
$result = $mysqli->query("SELECT * FROM push_subscribers WHERE activa = '1'");
if (!$result) {
    die("Query error: " . $mysqli->error);
}

$subs = [];
while ($row = $result->fetch_assoc()) {
    $subs[] = $row;
}
if (empty($subs)) {
    die('No se encontraron suscripciones activas.');
}

// Encolar notificaciones
foreach ($subs as $sub) {
    try {
        $subscription = Subscription::create([
            'endpoint'        => $sub['endpoint'],        
            'publicKey'       => $sub['public_key'],
            'authToken'       => $sub['auth_token'],
            'contentEncoding' => $sub['content_encoding'],
        ]);
    } catch (Exception $e) {
        echo "[✘] Error creando Subscription para endpoint {$sub['endpoint']}: {$e->getMessage()}<br>";
        continue;
    }

    try {
        $webPush->queueNotification(
            $subscription,
            json_encode([
                'title' => $title,
                'body'  => $body,
                'icon'  => '/icon.png',
                'badge' => '/icon-512.png',
                'url'   => $url,
            ])
        );
    } catch (Exception $e) {
        echo "[✘] Error al encolar notificación para {$sub['endpoint']}: {$e->getMessage()}<br>";
    }
}

// Envío y reporte
foreach ($webPush->flush() as $report) {
    $endpoint = $report->getRequest()->getUri()->__toString();
    if ($report->isSuccess()) {
        echo "[✔] Enviado a: {$endpoint}<br>";
    } else {
        echo "[✘] Error enviando a {$endpoint}: {$report->getReason()}<br>";
    }
}
