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

set -e

echo "🚨 =========================================="
echo "   CORREÇÃO ULTIMATE - ERRO 503"
echo "=========================================="
echo ""

cd /var/www/gestorstream/backend

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

# 2. Criar symlink para /dev/null (impede criação do arquivo)
echo "🔗 [2/9] Criando symlink para /dev/null..."
rm -f storage/framework/maintenance.php 2>/dev/null || true
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. Limpar todos os caches
echo "🧹 [3/9] 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 ""

# 4. Limpar cache do banco
echo "🗄️  [4/9] 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 do banco"
echo "✅ Cache do banco limpo"
echo ""

# 5. Verificar se middleware existe
echo "🔧 [5/9] Verificando middleware..."
if [ -f "app/Http/Middleware/DisableMaintenanceMode.php" ]; then
    echo "✅ Middleware existe"
else
    echo "❌ Middleware não existe - será criado pelo git pull"
fi
echo ""

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

# 7. Corrigir permissões
echo "🔐 [7/9] Corrigindo permissões..."
chown -R www-data:www-data storage bootstrap/cache 2>/dev/null || true
chmod -R 775 storage 2>/dev/null || true
chmod -R 775 bootstrap/cache 2>/dev/null || true
echo "✅ Permissões corrigidas"
echo ""

# 8. Limpar OPcache
echo "🧹 [8/9] Limpando OPcache..."
php -r "opcache_reset();" 2>/dev/null || echo "⚠️  OPcache não disponível"
echo "✅ OPcache limpo"
echo ""

# 9. Reiniciar serviços
echo "🔄 [9/9] 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 2
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 "📋 Verificando logs..."
    tail -20 storage/logs/laravel.log 2>/dev/null | grep -i "error\|exception" || echo "   Nenhum erro recente"
else
    echo "⚠️  Retornou HTTP $HTTP_CODE (esperado 200)"
fi

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

