#!/bin/bash

# Script para monitorar WhatsApp via PM2
# Uso: ./monitor-whatsapp.sh

echo "🔍 Monitoramento WhatsApp - Geocontrole API"
echo "=========================================="

# Função para mostrar status
show_status() {
    echo "📊 Status do PM2:"
    pm2 status geocontrole-api
    echo ""
    
    echo "🔌 Status WhatsApp:"
    curl -s http://localhost:3005/whatsapp/status | jq . 2>/dev/null || curl -s http://localhost:3005/whatsapp/status
    echo ""
}

# Função para mostrar logs em tempo real
show_logs() {
    echo "📋 Logs em tempo real (pressione Ctrl+C para sair):"
    echo "=================================================="
    pm2 logs geocontrole-api --lines 50
}

# Função para mostrar apenas logs do WhatsApp
show_whatsapp_logs() {
    echo "📱 Logs WhatsApp (últimas 20 linhas):"
    echo "====================================="
    pm2 logs geocontrole-api --lines 100 | grep -i whatsapp | tail -20
    echo ""
}

# Função para obter QR Code
show_qr() {
    echo "📱 QR Code atual:"
    echo "================"
    curl -s http://localhost:3005/whatsapp/qrcode 2>/dev/null | jq -r '.qr // "Nenhum QR Code disponível"'
    echo ""
    echo "💡 Para ver o QR Code visual, acesse:"
    echo "   http://localhost:3005/whatsapp/qr"
    echo ""
}

# Função para forçar reconexão
force_reconnect() {
    echo "🔄 Forçando reconexão do WhatsApp..."
    response=$(curl -s -X POST http://localhost:3005/whatsapp/reconectar)
    if echo "$response" | grep -q '"success":true'; then
        echo "✅ Reconexão forçada iniciada com sucesso"
        echo "⏳ Aguarde alguns segundos para o QR Code aparecer nos logs"
    else
        echo "❌ Erro na reconexão forçada"
        echo "Resposta: $response"
    fi
    echo ""
}

# Função para verificar e reconectar automaticamente
check_reconnect() {
    echo "🔍 Verificando necessidade de reconexão..."
    response=$(curl -s -X POST http://localhost:3005/whatsapp/check-reconnect)
    if echo "$response" | grep -q '"success":true'; then
        echo "✅ Verificação de conexão concluída"
    else
        echo "⚠️ Problema na verificação de conexão"
        echo "Resposta: $response"
    fi
    echo ""
}
# Função para restart seguro
restart_app() {
    echo "🔄 Reiniciando aplicação..."
    pm2 restart geocontrole-api
    echo "✅ Aplicação reiniciada"
    echo ""
    sleep 3
    show_status
}

# Função para iniciar monitor automático
start_monitor() {
    echo "🤖 Iniciando monitor automático de conexão..."
    echo "📱 Monitor verificará a conexão a cada 30 segundos"
    echo "⏸️ Pressione Ctrl+C para parar"
    echo ""
    node monitor-conexao.js start
}

# Menu principal
case "$1" in
    "status"|"s")
        show_status
        ;;
    "logs"|"l")
        show_logs
        ;;
    "whatsapp"|"w")
        show_whatsapp_logs
        ;;
    "qr"|"q")
        show_qr
        ;;
    "restart"|"r")
        restart_app
        ;;
    "force-reconnect"|"fr")
        force_reconnect
        ;;
    "check"|"c")
        check_reconnect
        ;;
    "auto-monitor"|"am")
        start_monitor
        ;;
    "monitor"|"m")
        while true; do
            clear
            echo "🔄 Auto-refresh a cada 10 segundos (Ctrl+C para sair)"
            echo "====================================================="
            show_status
            show_whatsapp_logs
            sleep 10
        done
        ;;
    *)
        echo "Uso: $0 [comando]"
        echo ""
        echo "Comandos disponíveis:"
        echo "  status (s)         - Mostrar status geral"
        echo "  logs (l)           - Mostrar logs em tempo real"
        echo "  whatsapp (w)       - Mostrar apenas logs do WhatsApp"
        echo "  qr (q)             - Mostrar QR Code atual"
        echo "  restart (r)        - Reiniciar aplicação"
        echo "  force-reconnect (fr) - Forçar reconexão WhatsApp"
        echo "  check (c)          - Verificar e reconectar se necessário"
        echo "  auto-monitor (am)  - Monitor automático de conexão"
        echo "  monitor (m)        - Monitoramento contínuo manual"
        echo ""
        echo "Exemplos:"
        echo "  $0 status          # Ver status"
        echo "  $0 qr              # Ver QR Code"
        echo "  $0 force-reconnect # Forçar reconexão"
        echo "  $0 auto-monitor    # Monitor automático"
        ;;
esac