#!/bin/bash
ssh root@45.55.211.224 bash <<'EOF'
echo "=========================================="
echo "1) Suscripciones guardadas en DB dev"
echo "=========================================="
mysql -uapp -p'AppDev#2026HSJ!' c2070042_hsj -e "
SELECT ps.id, ps.id_usuario_interno, ui.nick,
       LEFT(ps.endpoint, 60) AS endpoint_preview,
       LEFT(ps.user_agent, 80) AS ua,
       ps.created_at, ps.last_used_at
FROM push_subscripciones ps
LEFT JOIN usuarios_internos ui ON ui.id = ps.id_usuario_interno
ORDER BY ps.id DESC;
" 2>/dev/null

echo ""
echo "=========================================="
echo "2) Armadores existentes en distri"
echo "=========================================="
mysql -uapp -p'AppDev#2026HSJ!' c2070042_distri -e "
SELECT id, nick, id_tipo FROM usuarios WHERE id_tipo = 4 ORDER BY id;
" 2>/dev/null

echo ""
echo "=========================================="
echo "3) Ultimos pedidos de mostrador"
echo "=========================================="
mysql -uapp -p'AppDev#2026HSJ!' c2070042_distri -e "
SELECT id, id_cliente, id_estado, mostrador, id_usuario_que_tomo_pedido
FROM pedidos WHERE mostrador = 1 ORDER BY id DESC LIMIT 5;
" 2>/dev/null

echo ""
echo "=========================================="
echo "4) Apache error log (ultimas 40 lineas)"
echo "=========================================="
tail -n 40 /var/log/apache2/error.log 2>/dev/null | grep -iE 'push|webpush|minishlink|vapid|fatal|pedidomostrador' || echo "(sin matches relevantes)"
echo ""
echo "--- Ultimas 20 lineas crudas ---"
tail -n 20 /var/log/apache2/error.log 2>/dev/null

echo ""
echo "=========================================="
echo "5) Permisos y estructura vendor/"
echo "=========================================="
ls -la /var/www/html/vendor/autoload.php /var/www/html/vendor/minishlink 2>&1 | head -10

echo ""
echo "=========================================="
echo "6) Test manual de envio push"
echo "=========================================="
cd /var/www/html
php -r '
require "vendor/autoload.php";
require "config/vapid.php";
require "api/daos/pushSubscripcionesDao.php";

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

$dao = new PushSubscripcionesDao();
$subs = $dao->getPorTiposUsuario([4]);
echo "Suscripciones encontradas para tipo 4 (armadores): " . count($subs) . PHP_EOL;
foreach($subs as $s){
  echo "  id=" . $s["id"] . " usuario=" . $s["id_usuario_interno"] . " endpoint_host=" . parse_url($s["endpoint"], PHP_URL_HOST) . PHP_EOL;
}

if (empty($subs)) {
  echo "No hay suscripciones para probar." . PHP_EOL;
  exit;
}

$webPush = new WebPush([
  "VAPID" => [
    "subject" => VAPID_SUBJECT,
    "publicKey" => VAPID_PUBLIC_KEY,
    "privateKey" => VAPID_PRIVATE_KEY,
  ],
]);

$payload = json_encode([
  "title" => "Test desde consola",
  "body" => "Si lo ves, anda!",
  "url" => "/distribuidora/",
]);

foreach($subs as $row){
  $sub = Subscription::create([
    "endpoint" => $row["endpoint"],
    "publicKey" => $row["p256dh"],
    "authToken" => $row["auth"],
    "contentEncoding" => "aes128gcm",
  ]);
  $webPush->queueNotification($sub, $payload);
}

echo "Enviando..." . PHP_EOL;
foreach($webPush->flush() as $report){
  if ($report->isSuccess()) {
    echo "  OK -> " . parse_url($report->getRequest()->getUri()->__toString(), PHP_URL_HOST) . PHP_EOL;
  } else {
    $resp = $report->getResponse();
    $status = $resp ? $resp->getStatusCode() : "sin-respuesta";
    echo "  FAIL status=" . $status . " reason=" . $report->getReason() . PHP_EOL;
    if ($resp) echo "    body: " . substr((string)$resp->getBody(), 0, 300) . PHP_EOL;
  }
}
'
EOF
