#!/usr/bin/env bash
#
# Actualiza los transportistas que requieren TU Chrome real: CMA-CGM y Hapag-Lloyd.
# (Maersk, MSC, ONE, Evergreen, Yang Ming y HMM se actualizan solos en el cloud
#  vía GitHub Actions; estos dos NO se pueden automatizar por DataDome/Cloudflare.)
#
# Uso:
#   bash scripts/update-manual-carriers.sh
#
# A qué BD escribe:
#   - Si existe .env.production  -> usa su DATABASE_URL (BD en la nube / producción).
#   - Si no                       -> usa la DATABASE_URL de .env (local).
#   - También puedes forzarla:    DATABASE_URL="postgres://..." bash scripts/update-manual-carriers.sh
#
# Qué hace:
#   1) Comprueba si tu Chrome ya está abierto con --remote-debugging-port=9222.
#      Si no, te pide cerrar Chrome y lo lanza por ti.
#   2) Espera a que confirmes que has resuelto el captcha/reto (CMA DataDome, Hapag Cloudflare).
#   3) Ejecuta batch-update-cma.ts y batch-update-hapag.ts (cambios + alarmas 🔔).

set -euo pipefail

cd "$(dirname "$0")/.."   # raíz del proyecto

PORT="${CMA_DEBUG_PORT:-9222}"
PROFILE="${CMA_CHROME_PROFILE:-$HOME/.config/google-chrome}"

# ── 1. Elegir la base de datos ───────────────────────────────────────────────
if [ -n "${DATABASE_URL:-}" ]; then
  echo "🗄️  Usando DATABASE_URL del entorno."
  export DATABASE_URL
elif [ -f ".env.production" ]; then
  echo "🗄️  Usando DATABASE_URL de .env.production (producción)."
  set -a; # shellcheck disable=SC1091
  . ./.env.production; set +a
else
  echo "🗄️  Usando DATABASE_URL de .env (local)."
fi

# ── 2. Asegurar Chrome con el puerto de depuración ───────────────────────────
debug_up() { curl -s --max-time 3 "http://127.0.0.1:${PORT}/json/version" >/dev/null 2>&1; }

if debug_up; then
  echo "✅ Chrome con depuración ya está activo en el puerto ${PORT}."
else
  echo "⚠️  No hay Chrome con --remote-debugging-port=${PORT}."
  echo "    Voy a lanzarlo. CIERRA primero todas las ventanas de Chrome."
  read -rp "    Pulsa ENTER cuando hayas cerrado Chrome... " _

  BIN=""
  for b in google-chrome google-chrome-stable chromium chromium-browser; do
    if command -v "$b" >/dev/null 2>&1; then BIN="$b"; break; fi
  done
  [ -z "$BIN" ] && { echo "❌ No se encontró Chrome/Chromium."; exit 1; }

  nohup "$BIN" \
    --remote-debugging-port="$PORT" \
    --user-data-dir="$PROFILE" \
    "https://www.cma-cgm.com/ebusiness/tracking" \
    >/tmp/chrome-debug.log 2>&1 &
  echo "🚀 Chrome lanzado (pid $!). Esperando al puerto de depuración..."

  for _ in $(seq 1 15); do
    if debug_up; then break; fi
    sleep 1
  done
  debug_up || { echo "❌ El puerto ${PORT} no respondió. ¿Quedó otro Chrome abierto?"; exit 1; }
  echo "✅ Puerto de depuración activo."
fi

# ── 3. Pausa para resolver los retos anti-bot ────────────────────────────────
echo ""
echo "👉 En la ventana de Chrome, entra una vez a CMA y a Hapag y resuelve el"
echo "   captcha (DataDome) / reto (Cloudflare) si aparecen."
read -rp "   Pulsa ENTER cuando puedas ver los datos de tracking... " _

# ── 4. Ejecutar los scrapers ─────────────────────────────────────────────────
echo ""
echo "═══════════════════════════════════════════"
echo " 1/2  CMA-CGM"
echo "═══════════════════════════════════════════"
npx tsx scripts/batch-update-cma.ts || echo "⚠️  CMA terminó con errores (revisa arriba)."

echo ""
echo "═══════════════════════════════════════════"
echo " 2/2  Hapag-Lloyd"
echo "═══════════════════════════════════════════"
npx tsx scripts/batch-update-hapag.ts || echo "⚠️  Hapag terminó con errores (revisa arriba)."

echo ""
echo "✅ Actualización manual completada. Los cambios y alarmas ya están en la BD."
