#!/bin/bash

# Script para testar lógicas via endpoints HTTP
# Uso: ./teste-cron-http.sh [tipo]

NUMERO_TESTE="553199329118"
BASE_URL="http://localhost:3005"

echo "🧪 TESTE LÓGICAS VIA HTTP - Geocontrole"
echo "======================================"
echo "📱 Número: $NUMERO_TESTE"
echo ""

# Função para verificar se o servidor está rodando
verificar_servidor() {
    if curl -s ${BASE_URL}/whatsapp/status > /dev/null 2>&1; then
        echo "✅ Servidor está rodando"
        return 0
    else
        echo "❌ Servidor não está respondindo"
        echo "💡 Execute: npm start"
        return 1
    fi
}

# Função para testar via endpoint de teste personalizado
teste_via_endpoint() {
    local tipo="$1"
    local mensagem="$2"
    
    echo "📤 Enviando teste via API..."
    
    # Criar arquivo temporário com JSON válido para evitar problemas de escape
    local temp_json=$(mktemp)
    
    # Escrever JSON válido no arquivo temporário
    cat > "$temp_json" << EOF
{
    "numero": "$NUMERO_TESTE",
    "mensagem": "$mensagem"
}
EOF
    
    local resultado=$(curl -s -X POST ${BASE_URL}/whatsapp/teste \
        -H "Content-Type: application/json" \
        -d @"$temp_json")
    
    # Limpar arquivo temporário
    rm -f "$temp_json"
    
    if echo "$resultado" | grep -q '"success":true'; then
        echo "✅ Mensagem enviada com sucesso"
        echo "📱 Resposta: $(echo "$resultado" | jq -r '.message' 2>/dev/null || echo 'Sucesso')"
    else
        echo "❌ Erro ao enviar mensagem"
        echo "📱 Resposta: $resultado"
        
        # Debug adicional
        echo "🔍 Debug:"
        echo "   Tipo: $tipo"
        echo "   Número: $NUMERO_TESTE"
        echo "   Tamanho da mensagem: ${#mensagem} caracteres"
    fi
}

# Função para testar RNC vencida
teste_rnc_vencida_http() {
    echo "🔍 Testando RNC vencida via HTTP..."
    
    local mensagem="🚨 [TESTE] Verificação RNC Vencida - Este é um teste da lógica de verificação de RNC vencida. Executado: $(date '+%d/%m/%Y às %H:%M') - Lógica: Busca por RNC com Finalizado = NÃO e vencidas há mais de 5 dias - Número de teste: $NUMERO_TESTE - Sistema funcionando corretamente!"

    teste_via_endpoint "rnc-vencida" "$mensagem"
}

# Função para testar RNC a vencer
teste_rnc_vencer_http() {
    echo "🔍 Testando RNC a vencer via HTTP..."
    
    local mensagem="⚠️ [TESTE] Verificação RNC a Vencer - Este é um teste da lógica de verificação de RNC a vencer. Executado: $(date '+%d/%m/%Y às %H:%M') - Lógica: Busca por RNC com Finalizado = NÃO e que vencem entre 0 e 2 dias - Número de teste: $NUMERO_TESTE - Sistema funcionando corretamente!"

    teste_via_endpoint "rnc-vencer" "$mensagem"
}

# Função para testar análise SGI vencida
teste_analise_sgi_http() {
    echo "🔍 Testando Análise SGI vencida via HTTP..."
    
    local mensagem="🚨 [TESTE] Verificação Análise SGI Vencida - Este é um teste da lógica de verificação de análise SGI vencida. Executado: $(date '+%d/%m/%Y às %H:%M') - Lógica: Busca por Análise SGI com Finalizado = NÃO e vencidas há mais de 5 dias - Número de teste: $NUMERO_TESTE - Sistema funcionando corretamente!"

    teste_via_endpoint "analise-sgi" "$mensagem"
}

# Função para testar conectividade geral
teste_conectividade_http() {
    echo "🔍 Testando conectividade geral..."
    
    local mensagem="✅ [TESTE] Conectividade WhatsApp - Teste geral de conectividade do sistema WhatsApp. Executado: $(date '+%d/%m/%Y às %H:%M') - Número de teste: $NUMERO_TESTE - Conexão: Funcionando - API: Operacional - Sistema pronto para envio de notificações!"

    teste_via_endpoint "conectividade" "$mensagem"
}

# Função para mostrar ajuda
mostrar_ajuda() {
    echo "Uso: $0 [tipo]"
    echo ""
    echo "Tipos disponíveis:"
    echo "  conectividade    - Teste simples de conectividade"
    echo "  rnc-vencida     - Simula lógica de RNC vencida"
    echo "  rnc-vencer      - Simula lógica de RNC a vencer"
    echo "  analise-sgi     - Simula lógica de análise SGI vencida"
    echo "  todas           - Executa todos os testes"
    echo ""
    echo "Exemplos:"
    echo "  $0 conectividade"
    echo "  $0 rnc-vencida"
    echo "  $0 todas"
}

# Processar argumentos
if ! verificar_servidor; then
    exit 1
fi

case $1 in
    "conectividade")
        teste_conectividade_http
        ;;
    "rnc-vencida")
        teste_rnc_vencida_http
        ;;
    "rnc-vencer")
        teste_rnc_vencer_http
        ;;
    "analise-sgi")
        teste_analise_sgi_http
        ;;
    "todas")
        echo "🔄 Executando todos os testes HTTP..."
        echo ""
        teste_conectividade_http
        echo ""
        teste_rnc_vencida_http
        echo ""
        teste_rnc_vencer_http
        echo ""
        teste_analise_sgi_http
        ;;
    *)
        mostrar_ajuda
        ;;
esac

echo ""
echo "🎉 Teste finalizado!"
echo "📱 Verifique as mensagens no número: $NUMERO_TESTE"