#!/bin/bash

# 🚀 Deploy PIX Completo - Local para Servidor
# Execute: ./deploy-pix-completo.sh usuario@servidor

echo "🚀 Deploy PIX - Liberi Kids (Local → Servidor)"
echo "=============================================="

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

log() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

warn() {
    echo -e "${YELLOW}[WARN]${NC} $1"
}

info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# Verificar parâmetros
if [ -z "$1" ]; then
    error "❌ Uso: ./deploy-pix-completo.sh usuario@servidor"
    echo "Exemplo: ./deploy-pix-completo.sh tiago@192.168.195.145"
    exit 1
fi

SERVIDOR=$1
info "🎯 Servidor destino: $SERVIDOR"

# Verificar se estamos no diretório correto
if [ ! -f "server-supabase.js" ]; then
    error "❌ Execute este script no diretório raiz do projeto!"
    exit 1
fi

echo ""
info "📦 ETAPA 1: Preparando arquivos locais..."

# Build do frontend
if [ -d "client" ]; then
    info "🔨 Fazendo build do frontend..."
    cd client
    npm run build
    if [ $? -eq 0 ]; then
        log "✅ Build do frontend concluído"
    else
        error "❌ Erro no build do frontend"
        exit 1
    fi
    cd ..
else
    warn "⚠️  Diretório client não encontrado"
fi

echo ""
info "📤 ETAPA 2: Enviando arquivos para o servidor..."

# Criar lista de arquivos para enviar
ARQUIVOS_ENVIAR=(
    "server-supabase.js"
    "config/"
    "sql/"
    "scripts/"
    "client/build/"
    "package.json"
    ".env.example"
    "aplicar-pix-supabase.sql"
    "configurar-pix-servidor.sh"
    "INTEGRACAO-PIX-GUIDE.md"
)

# Verificar conectividade SSH
info "🔗 Testando conexão SSH..."
ssh -o ConnectTimeout=10 -o BatchMode=yes $SERVIDOR exit
if [ $? -ne 0 ]; then
    error "❌ Não foi possível conectar ao servidor $SERVIDOR"
    echo "Verifique:"
    echo "  - Se o servidor está ligado"
    echo "  - Se o SSH está funcionando"
    echo "  - Se as credenciais estão corretas"
    exit 1
fi
log "✅ Conexão SSH OK"

# Criar diretório no servidor se não existir
info "📁 Criando diretório no servidor..."
ssh $SERVIDOR "mkdir -p ~/app_estoque"

# Enviar arquivos
info "📤 Enviando arquivos PIX..."
for arquivo in "${ARQUIVOS_ENVIAR[@]}"; do
    if [ -e "$arquivo" ]; then
        info "📤 Enviando: $arquivo"
        rsync -avz --progress "$arquivo" $SERVIDOR:~/app_estoque/
        if [ $? -eq 0 ]; then
            log "✅ $arquivo enviado"
        else
            warn "⚠️  Erro ao enviar $arquivo"
        fi
    else
        warn "⚠️  Arquivo não encontrado: $arquivo"
    fi
done

echo ""
info "🔧 ETAPA 3: Configurando no servidor..."

# Executar configuração no servidor
ssh $SERVIDOR << 'EOF'
    cd ~/app_estoque
    
    echo "🏦 Configurando PIX no servidor..."
    
    # Dar permissão de execução
    chmod +x configurar-pix-servidor.sh
    
    # Instalar dependências se necessário
    if [ ! -d "node_modules" ]; then
        echo "📦 Instalando dependências..."
        npm install
    fi
    
    # Instalar mercadopago se não existir
    if [ ! -d "node_modules/mercadopago" ]; then
        echo "📦 Instalando Mercado Pago SDK..."
        npm install mercadopago
    fi
    
    # Verificar se .env existe
    if [ ! -f ".env" ]; then
        echo "📝 Criando arquivo .env..."
        cp .env.example .env
    fi
    
    # Verificar se credenciais PIX estão no .env
    if ! grep -q "MERCADOPAGO_ACCESS_TOKEN" .env; then
        echo "📝 Adicionando configurações PIX ao .env..."
        cat >> .env << 'ENVEOF'

# =====================================================
# CONFIGURAÇÕES PIX - MERCADO PAGO
# =====================================================

# Access Token do Mercado Pago (TEST para desenvolvimento, PROD para produção)
MERCADOPAGO_ACCESS_TOKEN=TEST-sua_access_token_aqui

# Public Key do Mercado Pago
MERCADOPAGO_PUBLIC_KEY=pk_test_sua_public_key_aqui

# URL base para webhooks (importante para produção)
BASE_URL=http://localhost:5000
ENVEOF
    fi
    
    echo "✅ Configuração no servidor concluída!"
EOF

if [ $? -eq 0 ]; then
    log "✅ Configuração no servidor concluída"
else
    error "❌ Erro na configuração do servidor"
    exit 1
fi

echo ""
info "🎉 DEPLOY PIX CONCLUÍDO COM SUCESSO!"
echo ""

log "✅ Arquivos enviados para: $SERVIDOR:~/app_estoque/"
log "✅ Dependências instaladas"
log "✅ Configurações preparadas"
echo ""

warn "📝 PRÓXIMOS PASSOS NO SERVIDOR:"
echo ""
echo "1. 🏦 CONFIGURAR CREDENCIAIS MERCADO PAGO:"
echo "   ssh $SERVIDOR"
echo "   cd ~/app_estoque"
echo "   nano .env"
echo "   # Configure MERCADOPAGO_ACCESS_TOKEN e MERCADOPAGO_PUBLIC_KEY"
echo ""

echo "2. 🗄️ APLICAR SQL NO SUPABASE:"
echo "   - Acesse: https://supabase.com/dashboard"
echo "   - SQL Editor → Execute: aplicar-pix-supabase.sql"
echo ""

echo "3. 🔄 REINICIAR SERVIDOR:"
echo "   ssh $SERVIDOR"
echo "   cd ~/app_estoque"
echo "   pm2 restart liberi-kids"
echo "   # ou: pm2 start server-supabase.js --name liberi-kids"
echo ""

echo "4. 🧪 TESTAR PIX:"
echo "   - Acesse o sistema no servidor"
echo "   - Vá em Vendas → Clique no botão PIX (💳)"
echo "   - Verifique se QR Code é gerado"
echo ""

info "💡 CREDENCIAIS MERCADO PAGO:"
echo "  - Acesse: https://www.mercadopago.com.br/developers"
echo "  - Crie aplicação de 'Pagamentos online'"
echo "  - Copie Access Token e Public Key"
echo ""

log "🎉 SEU SISTEMA PIX ESTÁ PRONTO PARA CONFIGURAÇÃO FINAL!"
echo ""
warn "Execute os próximos passos no servidor para ativar o PIX!"
