#!/usr/bin/env bash
# start-event.sh — Arranca todo el sistema MD Karaoke Fest para el evento
# Uso: bash scripts/start-event.sh
set -euo pipefail

PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$PROJECT_ROOT"

echo ""
echo "  ╔══════════════════════════════════════╗"
echo "  ║       MD KARAOKE FEST — INICIO       ║"
echo "  ╚══════════════════════════════════════╝"
echo ""

# ── 1. Reconstruir playlist por si hubo cambios ──────────────────────────────
echo "▶ Reconstruyendo playlist..."
bash scripts/build-playlist.sh

# ── 2. Virtual audio sink para micrófonos ────────────────────────────────────
echo ""
echo "▶ Configurando sink de audio para micrófonos..."
if pactl list sinks short 2>/dev/null | grep -q "karaoke_mic"; then
  echo "  ✓ Sink 'karaoke_mic' ya existe"
else
  bash scripts/setup-mic-sink.sh
fi

# ── 3. Servidor WebSocket de micrófonos (background) ─────────────────────────
echo ""
echo "▶ Arrancando servidor de micrófonos (ws://0.0.0.0:8081)..."
if lsof -i :8081 -t &>/dev/null; then
  echo "  ✓ Puerto 8081 ya en uso — mic-server probablemente corriendo"
else
  python3 scripts/mic-server.py &
  MIC_PID=$!
  echo "  ✓ mic-server.py arrancado (PID $MIC_PID)"
fi

# ── 4. Servidor HTTP karaoke ─────────────────────────────────────────────────
echo ""
echo "▶ Arrancando servidor HTTP (puerto 8080)..."
if lsof -i :8080 -t &>/dev/null; then
  echo "  ✓ Puerto 8080 ya en uso — servidor probablemente corriendo"
else
  npx serve . -l 8080 -c serve.json --no-clipboard &
  HTTP_PID=$!
  echo "  ✓ Servidor HTTP arrancado (PID $HTTP_PID)"
fi

# ── 5. Panel de administración (puerto 8082) ─────────────────────────────────
echo ""
echo "▶ Arrancando panel de administración (puerto 8082)..."
if lsof -i :8082 -t &>/dev/null; then
  echo "  ✓ Puerto 8082 ya en uso — admin probablemente corriendo"
else
  if [[ -f admin/server.py ]]; then
    nohup python3 admin/server.py > admin/logs/admin-server.log 2>&1 &
    ADMIN_PID=$!
    echo "  ✓ Admin server arrancado (PID $ADMIN_PID)"
  else
    echo "  ⚠ admin/server.py no encontrado — saltando"
  fi
fi

sleep 2

# ── 6. URLs de acceso ─────────────────────────────────────────────────────────
echo ""
echo "  ┌──────────────────────────────────────────────────────────┐"
echo "  │  PLAYER (TV / Proyector)                                 │"
echo "  │  https://player.zensitpro.pro/player/                    │"
echo "  │  http://192.168.1.182:8080/player/                       │"
echo "  │                                                           │"
echo "  │  MICRÓFONO (móvil del cantante)                          │"
echo "  │  http://192.168.1.182:8080/player/mic.html               │"
echo "  │                                                           │"
echo "  │  CALIBRACIÓN / PLAYGROUND                                │"
echo "  │  http://192.168.1.182:8080/player/playground.html        │"
echo "  │                                                           │"
echo "  │  PANEL ADMIN (operador)                                  │"
echo "  │  http://192.168.1.182:8082/                              │"
echo "  └──────────────────────────────────────────────────────────┘"
echo ""
echo "  ✅ Sistema listo. Ctrl+C para detener todo."
echo ""

# Mantener script activo (los procesos de background siguen)
wait
