#!/bin/bash

# Desk-Moloni v3.0 - Production Deployment Script
# Target: server.descomplicar.pt:9443 /home/ealmeida/desk.descomplicar.pt
# User: ealmeida:ealmeida

set -e

echo "🚀 Iniciando deployment do Desk-Moloni v3.0..."

# Configurações
SERVER="server.descomplicar.pt"
PORT="9443"
USER="root"
REMOTE_PATH="/home/ealmeida/desk.descomplicar.pt"
LOCAL_PATH="$(pwd)"
BACKUP_DIR="/tmp/desk-moloni-backup-$(date +%Y%m%d_%H%M%S)"

echo "📦 Configurações do Deploy:"
echo "   Servidor: $SERVER:$PORT"
echo "   Usuário: $USER"
echo "   Destino: $REMOTE_PATH"
echo "   Origem: $LOCAL_PATH"

# Função para executar comandos remotos
ssh_exec() {
    ssh -p $PORT $USER@$SERVER "$1"
}

# Função para copiar arquivos
rsync_copy() {
    rsync -avz --progress -e "ssh -p $PORT" "$1" "$USER@$SERVER:$2"
}

# 1. Verificar conexão SSH
echo "🔐 Verificando conexão SSH..."
ssh_exec "echo 'Conexão SSH OK'"

# 2. Criar backup do módulo atual (se existir)
echo "💾 Criando backup do módulo atual..."
ssh_exec "if [ -d '$REMOTE_PATH/modules/desk_moloni' ]; then 
    mkdir -p $BACKUP_DIR
    cp -r $REMOTE_PATH/modules/desk_moloni $BACKUP_DIR/
    echo 'Backup criado em $BACKUP_DIR'
else
    echo 'Nenhum módulo anterior encontrado'
fi"

# 3. Criar diretórios necessários
echo "📁 Criando estrutura de diretórios..."
ssh_exec "mkdir -p $REMOTE_PATH/modules"
ssh_exec "mkdir -p $REMOTE_PATH/uploads/desk_moloni/logs"
ssh_exec "mkdir -p $REMOTE_PATH/uploads/desk_moloni/cache"

# 4. Copiar módulo principal
echo "📋 Copiando módulo Desk-Moloni..."
rsync_copy "$LOCAL_PATH/modules/desk_moloni/" "$REMOTE_PATH/modules/desk_moloni/"

# 5. Copiar arquivos de configuração
echo "⚙️ Copiando configurações..."
if [ -f "$LOCAL_PATH/config/desk_moloni.php" ]; then
    rsync_copy "$LOCAL_PATH/config/desk_moloni.php" "$REMOTE_PATH/application/config/"
fi

# 6. Definir permissões corretas
echo "🔐 Definindo permissões..."
ssh_exec "chown -R ealmeida:ealmeida $REMOTE_PATH/modules/desk_moloni"
ssh_exec "chown -R ealmeida:ealmeida $REMOTE_PATH/uploads/desk_moloni"
ssh_exec "chmod -R 755 $REMOTE_PATH/modules/desk_moloni"
ssh_exec "chmod -R 777 $REMOTE_PATH/uploads/desk_moloni"

# 7. Executar instalação/atualização do banco de dados
echo "🗄️ Executando instalação/atualização do banco..."
ssh_exec "cd $REMOTE_PATH && php index.php desk_moloni admin install_db"

# 8. Verificar instalação
echo "✅ Verificando instalação..."
ssh_exec "cd $REMOTE_PATH && php -l modules/desk_moloni/desk_moloni.php"

# 9. Reiniciar serviços se necessário
echo "🔄 Reiniciando serviços..."
ssh_exec "systemctl reload apache2 || service apache2 reload || echo 'Apache reload failed'"

echo ""
echo "🎉 Deploy concluído com sucesso!"
echo ""
echo "📋 Próximos passos:"
echo "   1. Aceder ao painel admin: https://desk.descomplicar.pt/admin/desk_moloni"
echo "   2. Configurar credenciais OAuth do Moloni"
echo "   3. Testar sincronização"
echo "   4. Monitorizar logs: $REMOTE_PATH/uploads/desk_moloni/logs/"
echo ""
echo "💾 Backup disponível em: $BACKUP_DIR (no servidor)"
echo ""
echo "✨ Desk-Moloni v3.0 em produção! ✨"