#!/bin/bash

# Script para verificar e corrigir erro 500 após merge

BACKEND_DIR="/var/www/gestorstream/backend"
NGINX_ERROR_LOG="/var/log/nginx/gestorstream-error.log"
LARAVEL_LOG="$BACKEND_DIR/storage/logs/laravel.log"

echo "🔍 Verificando erro 500..."
echo ""

# 1. Verificar se o código foi atualizado
echo "📝 [1/6] Verificando se o código foi atualizado..."
if grep -q "return false" "$BACKEND_DIR/app/Services/UpdateService.php" 2>/dev/null; then
    echo "❌ Código ainda contém 'return false' - precisa ser atualizado!"
    echo "   Execute: cd /var/www/gestorstream && git pull"
    echo "   OU corrija manualmente a linha 1029 do arquivo UpdateService.php"
    echo ""
else
    echo "✅ Código parece estar correto (não encontrou 'return false')"
    echo ""
fi

# 2. Verificar se há erro 500 nos logs recentes
echo "📋 [2/6] Verificando logs do Laravel por erros recentes..."
if [ -f "$LARAVEL_LOG" ]; then
    RECENT_ERRORS=$(tail -200 "$LARAVEL_LOG" | grep -E "ERROR|TypeError|Fatal error" | tail -10)
    if [ -n "$RECENT_ERRORS" ]; then
        echo "⚠️  Erros encontrados nos últimos logs:"
        echo "$RECENT_ERRORS"
        echo ""
    else
        echo "✅ Nenhum erro recente encontrado no log do Laravel"
        echo ""
    fi
else
    echo "⚠️  Arquivo de log do Laravel não encontrado: $LARAVEL_LOG"
    echo ""
fi

# 3. Verificar logs do Nginx
echo "🌐 [3/6] Verificando logs do Nginx..."
if [ -f "$NGINX_ERROR_LOG" ]; then
    RECENT_NGINX_ERRORS=$(tail -50 "$NGINX_ERROR_LOG" | grep -E "500|error|failed" | tail -10)
    if [ -n "$RECENT_NGINX_ERRORS" ]; then
        echo "⚠️  Erros encontrados no log do Nginx:"
        echo "$RECENT_NGINX_ERRORS"
        echo ""
    else
        echo "✅ Nenhum erro recente no log do Nginx"
        echo ""
    fi
else
    echo "⚠️  Arquivo de log do Nginx não encontrado: $NGINX_ERROR_LOG"
    echo ""
fi

# 4. Verificar cache do Laravel
echo "🧹 [4/6] Verificando caches do Laravel..."
cd "$BACKEND_DIR" || exit 1

echo "Limpando caches..."
php artisan cache:clear 2>&1 | head -5
php artisan config:clear 2>&1 | head -5
php artisan route:clear 2>&1 | head -5
php artisan view:clear 2>&1 | head -5
echo "✅ Caches limpos"
echo ""

# 5. Verificar permissões
echo "🔐 [5/6] Verificando permissões..."
if [ -d "$BACKEND_DIR/storage" ]; then
    STORAGE_PERMS=$(stat -c "%a" "$BACKEND_DIR/storage" 2>/dev/null || stat -f "%OLp" "$BACKEND_DIR/storage" 2>/dev/null)
    if [ "$STORAGE_PERMS" != "775" ] && [ "$STORAGE_PERMS" != "777" ]; then
        echo "⚠️  Permissões de storage podem estar incorretas: $STORAGE_PERMS"
        echo "   Execute: sudo chmod -R 775 $BACKEND_DIR/storage"
        echo ""
    else
        echo "✅ Permissões de storage OK: $STORAGE_PERMS"
        echo ""
    fi
else
    echo "❌ Diretório storage não encontrado!"
    echo ""
fi

# 6. Verificar status do backend service
echo "⚙️  [6/6] Verificando status do serviço backend..."
if systemctl is-active --quiet gestorstream-backend; then
    echo "✅ Serviço gestorstream-backend está rodando"
    
    # Verificar últimos erros do service
    SERVICE_ERRORS=$(journalctl -u gestorstream-backend -n 50 --no-pager | grep -iE "error|fatal|exception" | tail -5)
    if [ -n "$SERVICE_ERRORS" ]; then
        echo "⚠️  Erros encontrados no serviço:"
        echo "$SERVICE_ERRORS"
        echo ""
    fi
else
    echo "❌ Serviço gestorstream-backend NÃO está rodando!"
    echo "   Execute: sudo systemctl start gestorstream-backend"
    echo ""
fi

echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "✅ Verificação concluída!"
echo ""
echo "📝 Próximos passos:"
echo ""
echo "1. Se o código precisa ser atualizado:"
echo "   cd /var/www/gestorstream && git pull"
echo ""
echo "2. Limpar todos os caches e recriar:"
echo "   cd $BACKEND_DIR"
echo "   php artisan cache:clear"
echo "   php artisan config:cache"
echo "   php artisan route:cache"
echo "   php artisan view:cache"
echo ""
echo "3. Reiniciar o backend:"
echo "   sudo systemctl restart gestorstream-backend"
echo ""
echo "4. Limpar cache do navegador (Ctrl+Shift+R ou Cmd+Shift+R)"
echo ""
echo "5. Se ainda tiver erro 500, verificar:"
echo "   tail -100 $LARAVEL_LOG | grep -A 10 'ERROR'"
echo "   tail -50 $NGINX_ERROR_LOG"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
