#!/bin/bash
# Correção FINAL DEFINITIVA do erro 503

set -e

echo "🚨 =========================================="
echo "   CORREÇÃO FINAL DEFINITIVA - ERRO 503"
echo "=========================================="
echo ""

cd /var/www/gestorstream/backend

# 1. Remover arquivo de manutenção
echo "🔓 [1/8] Removendo arquivo de manutenção..."
rm -f storage/framework/maintenance.php
echo "✅ Removido"
echo ""

# 2. Criar symlink para /dev/null
echo "🔗 [2/8] Criando symlink para /dev/null..."
ln -sf /dev/null storage/framework/maintenance.php
chown www-data:www-data storage/framework/maintenance.php 2>/dev/null || true
echo "✅ Symlink criado"
echo ""

# 3. Garantir que bootstrap/app.php tem preventRequestsDuringMaintenance com '*'
echo "🔧 [3/8] Verificando bootstrap/app.php..."
if ! grep -q "preventRequestsDuringMaintenance(except: \['\*'\]" bootstrap/app.php; then
    echo "⚠️  Adicionando preventRequestsDuringMaintenance com '*'..."
    # Adicionar antes do fechamento do withMiddleware
    sed -i "/withExceptions/i\        \$middleware->preventRequestsDuringMaintenance(except: ['*']);" bootstrap/app.php
    echo "✅ Adicionado"
else
    echo "✅ Já está configurado"
fi
echo ""

# 4. Limpar todos os caches
echo "🧹 [4/8] Limpando caches..."
php artisan config:clear 2>/dev/null || true
php artisan cache:clear 2>/dev/null || true
php artisan route:clear 2>/dev/null || true
php artisan view:clear 2>/dev/null || true
rm -rf bootstrap/cache/*.php 2>/dev/null || true
echo "✅ Caches limpos"
echo ""

# 5. Limpar cache do banco
echo "🗄️  [5/8] Limpando cache do banco..."
php artisan tinker --execute="
try {
    \Illuminate\Support\Facades\Cache::flush();
    \Illuminate\Support\Facades\DB::table('cache')->where('key', 'like', '%maintenance%')->delete();
    echo 'Cache limpo';
} catch (\Exception \$e) {
    echo 'Erro: ' . \$e->getMessage();
}
" 2>/dev/null || echo "⚠️  Erro ao limpar cache"
echo "✅ Cache limpo"
echo ""

# 6. Regenerar autoloader
echo "🔧 [6/8] Regenerando autoloader..."
COMPOSER_ALLOW_SUPERUSER=1 composer dump-autoload --optimize --no-dev --quiet 2>&1 || true
echo "✅ Autoloader regenerado"
echo ""

# 7. Limpar OPcache e reiniciar
echo "🧹 [7/8] Limpando OPcache..."
php -r "opcache_reset();" 2>/dev/null || true
echo "✅ OPcache limpo"
echo ""

# 8. Reiniciar serviços
echo "🔄 [8/8] Reiniciando serviços..."
PHP_VERSION=$(php -r "echo PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;" 2>/dev/null || echo "8.2")
systemctl restart php${PHP_VERSION}-fpm 2>/dev/null || true
sleep 3
nginx -t && systemctl reload nginx 2>/dev/null || true
echo "✅ Serviços reiniciados"
echo ""

# Teste final
echo "🧪 Testando..."
sleep 3
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" https://gestor.jf.eng.br/api/v1/setup/check 2>/dev/null || echo "000")

if [ "$HTTP_CODE" = "200" ]; then
    echo "✅ SUCESSO! Sistema está respondendo com HTTP 200"
elif [ "$HTTP_CODE" = "503" ]; then
    echo "❌ AINDA RETORNA 503"
    echo ""
    echo "📋 O problema pode estar no nível do Laravel 11."
    echo "   Verifique se há algum processo criando o arquivo:"
    echo "   watch -n 1 'ls -la storage/framework/maintenance.php'"
else
    echo "⚠️  Retornou HTTP $HTTP_CODE (esperado 200)"
fi

echo ""
echo "✅ =========================================="
echo "   CORREÇÃO CONCLUÍDA!"
echo "=========================================="

