#!/bin/bash

# Script para ejecutar migraciones del sistema de comisiones multi-nivel
# Fecha: 2026-02-01
# Descripción: Aplica todas las migraciones necesarias para el sistema de comisiones

set -e  # Exit on any error

echo "🚀 Iniciando migraciones del sistema de comisiones multi-nivel..."

# Configurar variables
DB_HOST=${DB_HOST:-localhost}
DB_PORT=${DB_PORT:-5433}
DB_NAME=${DB_NAME:-smartfactvoice}
DB_USER=${DB_USER:-postgres}

# Función para ejecutar SQL
run_sql() {
    local file=$1
    echo "📄 Ejecutando: $file"
    psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -f "$file"
    if [ $? -eq 0 ]; then
        echo "✅ Completado: $file"
    else
        echo "❌ Error en: $file"
        exit 1
    fi
}

# Crear backup antes de las migraciones
echo "💾 Creando backup de la base de datos..."
pg_dump -h $DB_HOST -p $DB_PORT -U $DB_USER $DB_NAME > "backup_pre_commission_$(date +%Y%m%d_%H%M%S).sql"
echo "✅ Backup creado"

# Ejecutar migraciones en orden
echo "🔄 Aplicando migraciones..."

run_sql "prisma/migrations/001_add_commission_fields_to_empresas.sql"
run_sql "prisma/migrations/002_add_commission_fields_to_suscripciones.sql"
run_sql "prisma/migrations/003_create_comisiones_table.sql"
run_sql "prisma/migrations/004_create_precios_reseller_table.sql"
run_sql "prisma/migrations/005_create_limites_reseller_table.sql"
run_sql "prisma/migrations/006_update_schema_prisma.sql"

# Generar cliente Prisma
echo "🔧 Generando cliente Prisma..."
npx prisma generate

# Verificar integridad
echo "🔍 Verificando integridad de la base de datos..."
psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -c "
SELECT 
    'empresas' as tabla,
    COUNT(*) as registros,
    COUNT(CASE WHEN comision_porcentaje IS NOT NULL THEN 1 END) as con_comision
FROM empresas
UNION ALL
SELECT 
    'suscripciones' as tabla,
    COUNT(*) as registros,
    COUNT(CASE WHEN vendida_por_empresa_id IS NOT NULL THEN 1 END) as con_vendedor
FROM suscripciones;
"

echo "🎉 ¡Migraciones completadas exitosamente!"
echo ""
echo "📊 Resumen de cambios aplicados:"
echo "  ✅ Campos de comisiones agregados a 'empresas'"
echo "  ✅ Campos de ventas agregados a 'suscripciones'"
echo "  ✅ Tabla 'comisiones_nuevas' creada"
echo "  ✅ Tabla 'precios_reseller' creada"
echo "  ✅ Tabla 'limites_reseller' creada"
echo "  ✅ Índices y constraints aplicados"
echo "  ✅ Cliente Prisma regenerado"
echo ""
echo "🚀 El sistema de comisiones multi-nivel está listo para usar!"
echo ""
echo "📝 Próximos pasos:"
echo "  1. Implementar servicios TypeScript (JerarquiaEmpresasService, ComisionesService)"
echo "  2. Crear APIs para gestión de resellers y comisiones"
echo "  3. Desarrollar dashboards diferenciados"
echo "  4. Configurar primeros resellers de prueba"
