#!/bin/bash

echo "=========================================="
echo "DEPLOY: CORREÇÃO DO WEBHOOK OPENPIX"
echo "=========================================="
echo ""

# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Verificar se está no diretório correto
if [ ! -d "backend" ]; then
    echo -e "${RED}❌ ERRO: Este script deve ser executado na raiz do projeto (onde está a pasta backend)${NC}"
    echo "Diretório atual: $(pwd)"
    exit 1
fi

echo -e "${GREEN}✓${NC} Diretório correto: $(pwd)"
echo ""

# 1. Fazer backup
echo "1. Fazendo backup do WebhookController..."
BACKUP_FILE="backend/app/Http/Controllers/Api/WebhookController.php.backup.$(date +%Y%m%d_%H%M%S)"
if [ -f "backend/app/Http/Controllers/Api/WebhookController.php" ]; then
    cp backend/app/Http/Controllers/Api/WebhookController.php "$BACKUP_FILE"
    echo -e "${GREEN}✓${NC} Backup criado: $BACKUP_FILE"
else
    echo -e "${YELLOW}⚠${NC} Arquivo original não encontrado (será criado)"
fi
echo ""

# 2. Atualizar código
echo "2. Atualizando código do Git..."
git stash 2>/dev/null
PULL_OUTPUT=$(git pull origin main 2>&1)
PULL_EXIT=$?

if [ $PULL_EXIT -eq 0 ]; then
    echo -e "${GREEN}✓${NC} Git pull executado com sucesso"
    echo "$PULL_OUTPUT" | head -5
else
    echo -e "${RED}❌${NC} Erro ao executar git pull:"
    echo "$PULL_OUTPUT"
    echo ""
    echo -e "${YELLOW}Continuando mesmo assim...${NC}"
fi
echo ""

# 3. Limpar cache do Laravel
echo "3. Limpando cache do Laravel..."
cd backend

php artisan config:clear
if [ $? -eq 0 ]; then
    echo -e "${GREEN}✓${NC} Config cache limpo"
else
    echo -e "${RED}❌${NC} Erro ao limpar config cache"
fi

php artisan cache:clear
if [ $? -eq 0 ]; then
    echo -e "${GREEN}✓${NC} Application cache limpo"
else
    echo -e "${RED}❌${NC} Erro ao limpar application cache"
fi

php artisan route:clear
if [ $? -eq 0 ]; then
    echo -e "${GREEN}✓${NC} Route cache limpo"
else
    echo -e "${RED}❌${NC} Erro ao limpar route cache"
fi

cd ..
echo ""

# 4. Verificar rotas
echo "4. Verificando rotas de webhook..."
ROUTES=$(cd backend && php artisan route:list 2>/dev/null | grep webhook)

if [ -z "$ROUTES" ]; then
    echo -e "${RED}❌${NC} ERRO: Nenhuma rota de webhook encontrada!"
    echo ""
    echo "Verifique manualmente:"
    echo "  cd backend && php artisan route:list | grep webhook"
    exit 1
else
    echo -e "${GREEN}✓${NC} Rotas de webhook encontradas:"
    echo "$ROUTES" | while read line; do
        echo "  $line"
    done
fi
echo ""

# 5. Executar check de configuração
echo "5. Verificando configuração do webhook..."
if [ -f "check_webhook_config.php" ]; then
    php check_webhook_config.php > /tmp/webhook_config_check.log 2>&1
    
    if grep -q "✅ Sistema está configurado para receber webhooks" /tmp/webhook_config_check.log; then
        echo -e "${GREEN}✓${NC} Sistema configurado corretamente"
        echo ""
        echo "Configuração detectada:"
        grep -A 3 "Verificando configurações do OpenPIX" /tmp/webhook_config_check.log | tail -4
    else
        echo -e "${YELLOW}⚠${NC} Possíveis problemas de configuração:"
        tail -20 /tmp/webhook_config_check.log
    fi
else
    echo -e "${YELLOW}⚠${NC} Arquivo check_webhook_config.php não encontrado"
fi
echo ""

# 6. Executar teste do webhook
echo "6. Testando webhook..."
echo "=========================================="

if [ -f "test_webhook.php" ]; then
    php test_webhook.php
    TEST_EXIT=$?
    
    echo ""
    echo "=========================================="
    
    if [ $TEST_EXIT -eq 0 ]; then
        echo -e "${GREEN}✅ SUCESSO! WEBHOOK FUNCIONANDO!${NC}"
        echo ""
        echo "Próximos passos:"
        echo "1. Acesse o painel do OpenPIX"
        echo "2. Configure o webhook com a URL:"
        echo "   https://gestor.jf.eng.br/api/webhooks/openpix"
        echo ""
        echo "3. Cabeçalhos HTTP (remova Authorization se estiver configurado):"
        echo "   - Content-Type: application/json"
        echo "   - Accept: application/json"
        echo "   - X-OpenPix-Signature: Gerado por requisição"
        echo ""
        echo "4. Webhook Secret (HMAC):"
        echo "   openpix_EtpEIRxeT+5yt4MM4E8Ern3/WVoLzuRDtlJx15jHrFc="
        echo ""
    else
        echo -e "${RED}❌ TESTE FALHOU!${NC}"
        echo ""
        echo "Verifique:"
        echo "1. Logs do Laravel:"
        echo "   tail -50 backend/storage/logs/laravel.log"
        echo ""
        echo "2. Logs do servidor web (nginx/apache)"
        echo ""
        echo "3. Tente acessar manualmente:"
        echo "   curl -v https://gestor.jf.eng.br/api/webhooks/openpix"
    fi
else
    echo -e "${RED}❌${NC} Arquivo test_webhook.php não encontrado"
    echo ""
    echo "Teste manual:"
    echo "curl -X POST https://gestor.jf.eng.br/api/webhooks/openpix \\"
    echo "  -H 'Content-Type: application/json' \\"
    echo "  -d '{\"event\":\"OPENPIX:CHARGE_COMPLETED\",\"charge\":{\"correlationID\":\"test123\",\"transactionID\":\"test456\",\"status\":\"COMPLETED\"}}'"
fi

echo ""
echo "=========================================="
echo "DEPLOY CONCLUÍDO"
echo "=========================================="
echo ""

# Mostrar últimas linhas do log
if [ -f "backend/storage/logs/laravel.log" ]; then
    echo "Últimas 10 linhas do log:"
    echo "------------------------------------------"
    tail -10 backend/storage/logs/laravel.log
    echo "------------------------------------------"
fi

exit 0
