#!/bin/bash

# 🚀 Deploy COMPLETO: PC → Servidor Limpo
# Este script envia TUDO do seu PC para o servidor
# Execute: ./deploy-completo-servidor.sh

echo "🚀 DEPLOY COMPLETO - Liberi Kids"
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}[✅ OK]${NC} $1"
}

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

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

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

# Configurações do servidor
SERVER_IP="192.168.195.145"
SERVER_USER="tiago"
SERVER_PATH="/home/tiago/app_estoque"

echo ""
info "📋 ESTE SCRIPT VAI ENVIAR:"
echo "  📁 Todos os arquivos do projeto"
echo "  🔧 Configurações e credenciais"
echo "  📦 Frontend compilado"
echo "  🏦 Configurações PIX"
echo "  🗄️  Scripts SQL"
echo "  📚 Documentação completa"
echo ""

read -p "Continuar com o deploy completo? (s/N): " confirma
if [[ $confirma != "s" && $confirma != "S" ]]; then
    error "❌ Deploy cancelado!"
    exit 1
fi

echo ""
info "🔨 PREPARANDO DEPLOY..."

# Verificar se o build existe
if [ ! -d "client/build" ]; then
    info "🏗️  Compilando frontend..."
    cd client
    npm run build
    cd ..
    log "✅ Frontend compilado"
fi

# Criar diretório temporário para deploy
TEMP_DIR="/tmp/liberi-deploy-$(date +%s)"
mkdir -p $TEMP_DIR

echo ""
info "📦 CRIANDO PACOTE DE DEPLOY..."

# Copiar arquivos essenciais
cp -r client/build $TEMP_DIR/
cp server-supabase.js $TEMP_DIR/
cp package.json $TEMP_DIR/
cp -r config $TEMP_DIR/
cp .env $TEMP_DIR/ 2>/dev/null || cp .env.example $TEMP_DIR/.env

# Copiar scripts e documentação
cp *.sh $TEMP_DIR/ 2>/dev/null || true
cp *.md $TEMP_DIR/ 2>/dev/null || true
cp *.sql $TEMP_DIR/ 2>/dev/null || true

# Criar estrutura de diretórios
mkdir -p $TEMP_DIR/uploads
mkdir -p $TEMP_DIR/logs

log "✅ Pacote criado: $TEMP_DIR"

echo ""
info "🌐 ENVIANDO PARA SERVIDOR..."

# Enviar tudo via rsync
rsync -avz --progress $TEMP_DIR/ $SERVER_USER@$SERVER_IP:$SERVER_PATH/

log "✅ Arquivos enviados"

echo ""
info "📦 INSTALANDO DEPENDÊNCIAS NO SERVIDOR..."

# Instalar dependências
ssh $SERVER_USER@$SERVER_IP "cd $SERVER_PATH && npm install"

log "✅ Dependências instaladas"

echo ""
info "🔧 CONFIGURANDO SERVIDOR..."

# Configurar permissões
ssh $SERVER_USER@$SERVER_IP "cd $SERVER_PATH && chmod +x *.sh"

# Verificar se .env existe
ssh $SERVER_USER@$SERVER_IP "cd $SERVER_PATH && [ ! -f .env ] && cp .env.example .env || true"

log "✅ Servidor configurado"

echo ""
info "🚀 INICIANDO APLICAÇÃO..."

# Iniciar com PM2
ssh $SERVER_USER@$SERVER_IP "cd $SERVER_PATH && pm2 start server-supabase.js --name liberi-kids"
ssh $SERVER_USER@$SERVER_IP "pm2 save"

log "✅ Aplicação iniciada"

echo ""
info "🧪 TESTANDO SERVIDOR..."

# Aguardar inicialização
sleep 3

# Testar se está respondendo
if ssh $SERVER_USER@$SERVER_IP "curl -s http://localhost:5000 > /dev/null"; then
    log "✅ Servidor respondendo"
else
    warn "⚠️  Servidor pode não estar respondendo"
fi

# Limpar arquivos temporários
rm -rf $TEMP_DIR

echo ""
log "🎉 DEPLOY COMPLETO FINALIZADO!"
echo ""

info "📋 RESUMO DO DEPLOY:"
echo "  ✅ Arquivos enviados: $(ssh $SERVER_USER@$SERVER_IP "cd $SERVER_PATH && find . -type f | wc -l") arquivos"
echo "  ✅ Dependências: Instaladas"
echo "  ✅ PM2: Configurado"
echo "  ✅ Servidor: Rodando"
echo ""

info "🌐 ACESSO:"
echo "  Frontend: http://$SERVER_IP:5000"
echo "  Status: pm2 status"
echo "  Logs: pm2 logs liberi-kids"
echo ""

info "🔧 COMANDOS ÚTEIS NO SERVIDOR:"
echo "  ssh $SERVER_USER@$SERVER_IP"
echo "  cd $SERVER_PATH"
echo "  pm2 restart liberi-kids"
echo "  pm2 logs liberi-kids"
echo ""

warn "💡 LEMBRE-SE:"
echo "  - Configure credenciais no .env se necessário"
echo "  - Aplique SQL no Supabase se for primeira vez"
echo "  - Teste todas as funcionalidades"
echo ""

log "✨ SEU PROJETO ESTÁ NO AR!"
