#!/bin/bash
# Correção completa do sistema - Atualização e Fila WhatsApp

set -e

echo "🔧 =========================================="
echo "   CORREÇÃO COMPLETA DO SISTEMA"
echo "=========================================="
echo ""

cd /var/www/gestorstream/backend

# 1. Limpar cache de comandos
echo "🧹 [1/6] Limpando cache de comandos..."
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
rm -rf bootstrap/cache/*.php 2>/dev/null || true
echo "✅ Caches limpos"
echo ""

# 2. Verificar se comando está registrado
echo "📱 [2/6] Verificando registro do comando..."
if php artisan list 2>/dev/null | grep -q "whatsapp:process-queue"; then
    echo "✅ Comando registrado corretamente"
else
    echo "⚠️  Comando não encontrado, tentando registrar..."
    php artisan package:discover --ansi
    if php artisan list 2>/dev/null | grep -q "whatsapp:process-queue"; then
        echo "✅ Comando registrado após package:discover"
    else
        echo "❌ Comando ainda não encontrado"
    fi
fi
echo ""

# 3. Verificar rota do webhook
echo "🔗 [3/6] Verificando rota do webhook..."
ROUTE_EXISTS=$(php artisan route:list 2>/dev/null | grep -i "webhooks.*gitea" || echo "")
if [ -n "$ROUTE_EXISTS" ]; then
    echo "✅ Rota encontrada:"
    echo "$ROUTE_EXISTS" | head -1
else
    echo "❌ Rota não encontrada"
fi
echo ""

# 4. Testar webhook
echo "🌐 [4/6] Testando webhook..."
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" https://gestor.jf.eng.br/api/v1/webhooks/gitea 2>/dev/null)
if [ "$HTTP_CODE" = "200" ]; then
    echo "✅ Webhook está funcionando (HTTP $HTTP_CODE)"
else
    echo "⚠️  Webhook retornou HTTP $HTTP_CODE"
    echo "   Verifique a configuração da rota"
fi
echo ""

# 5. Resetar jobs presos (se houver)
echo "🔄 [5/6] Resetando jobs presos..."
php artisan tinker --execute="
\$stuck = \App\Models\WhatsAppQueueJob::where('status', 'processing')
    ->where('updated_at', '<', now()->subMinutes(5))
    ->update(['status' => 'pending', 'scheduled_at' => now()]);
echo 'Jobs resetados: ' . \$stuck . PHP_EOL;
" 2>/dev/null || echo "⚠️  Erro ao resetar jobs"
echo ""

# 6. Testar processamento manual
echo "🧪 [6/6] Testando processamento manual..."
php artisan whatsapp:process-queue --count=1 2>&1 | head -5
echo ""

# 7. Verificar status final
echo "📊 Status Final:"
php artisan tinker --execute="
\$pending = \App\Models\WhatsAppQueueJob::where('status', 'pending')->count();
\$processing = \App\Models\WhatsAppQueueJob::where('status', 'processing')->count();
echo 'Jobs pendentes: ' . \$pending . PHP_EOL;
echo 'Jobs processando: ' . \$processing . PHP_EOL;
" 2>/dev/null || echo "Erro ao verificar status"

echo ""
echo "✅ =========================================="
echo "   CORREÇÃO CONCLUÍDA!"
echo "=========================================="
echo ""
echo "📋 Próximos passos:"
echo "   1. Verifique se o webhook está configurado no Gitea:"
echo "      URL: https://gestor.jf.eng.br/api/v1/webhooks/gitea"
echo "   2. Teste atualização manual no painel admin"
echo "   3. Monitore logs: tail -f storage/logs/laravel.log"

