#!/bin/bash

# Script para corrigir atualização travada

echo "========================================="
echo "🔧 CORRIGINDO ATUALIZAÇÃO TRAVADA"
echo "========================================="
echo ""

BACKEND_DIR="/var/www/gestorstream/backend"
FRONTEND_DIR="/var/www/gestorstream/frontend"

# 1. Matar processos travados
echo "1. Matando processos travados..."
echo "----------------------------------------"
pkill -f "artisan migrate" 2>/dev/null && echo "Processos de migrate finalizados" || echo "Nenhum processo de migrate encontrado"
pkill -f "npm run build" 2>/dev/null && echo "Processos de build finalizados" || echo "Nenhum processo de build encontrado"
sleep 2
echo ""

# 2. Verificar e executar migrations pendentes
echo "2. Executando migrations pendentes..."
echo "----------------------------------------"
cd "$BACKEND_DIR" || exit 1
timeout 300 php artisan migrate --force
MIGRATE_EXIT=$?
if [ $MIGRATE_EXIT -eq 0 ]; then
    echo "✅ Migrations executadas com sucesso"
elif [ $MIGRATE_EXIT -eq 124 ]; then
    echo "⚠️ Migrations demoraram mais de 5 minutos (timeout)"
else
    echo "❌ Erro ao executar migrations (código: $MIGRATE_EXIT)"
fi
echo ""

# 3. Limpar cache
echo "3. Limpando cache..."
echo "----------------------------------------"
php artisan cache:clear && echo "✅ Cache limpo" || echo "❌ Erro ao limpar cache"
php artisan config:clear && echo "✅ Config limpo" || echo "❌ Erro ao limpar config"
php artisan route:clear && echo "✅ Rotas limpas" || echo "❌ Erro ao limpar rotas"
php artisan view:clear && echo "✅ Views limpas" || echo "❌ Erro ao limpar views"
echo ""

# 4. Verificar e corrigir dist/
echo "4. Verificando e corrigindo dist/..."
echo "----------------------------------------"
if [ ! -f "$FRONTEND_DIR/dist/index.html" ]; then
    echo "❌ index.html não existe. Executando script de correção..."
    if [ -f "$BACKEND_DIR/corrigir-403-pos-update.sh" ]; then
        bash "$BACKEND_DIR/corrigir-403-pos-update.sh"
    else
        echo "Script de correção não encontrado. Tentando build manual..."
        cd "$FRONTEND_DIR" || exit 1
        npm run build
    fi
else
    echo "✅ index.html existe"
fi
echo ""

# 5. Atualizar status da atualização no banco
echo "5. Atualizando status da atualização..."
echo "----------------------------------------"
cd "$BACKEND_DIR" || exit 1
php -r "
require __DIR__ . '/vendor/autoload.php';
\$app = require_once __DIR__ . '/bootstrap/app.php';
\$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();

\$update = \App\Models\SystemUpdate::where('status', 'running')->latest()->first();
if (\$update) {
    echo 'Atualização encontrada: ID ' . \$update->id . PHP_EOL;
    echo 'Status atual: ' . \$update->status . PHP_EOL;
    
    // Verificar se dist/index.html existe
    if (file_exists('/var/www/gestorstream/frontend/dist/index.html')) {
        echo 'index.html existe, marcando como concluída...' . PHP_EOL;
        \$update->markAsCompleted();
        echo '✅ Atualização marcada como concluída' . PHP_EOL;
    } else {
        echo '⚠️ index.html não existe, mas marcando como concluída mesmo assim' . PHP_EOL;
        \$update->appendLog('Atualização concluída manualmente via script de correção');
        \$update->markAsCompleted();
    }
} else {
    echo 'Nenhuma atualização em execução encontrada' . PHP_EOL;
}
"
echo ""

echo "========================================="
echo "✅ Correção concluída"
echo "========================================="
echo ""
echo "Próximos passos:"
echo "1. Verifique se o sistema está acessível"
echo "2. Se ainda houver erro 403, execute: bash $BACKEND_DIR/corrigir-403-pos-update.sh"
echo "3. Verifique os logs em: $BACKEND_DIR/storage/logs/"

