#!/bin/bash
# ============================================================
# Club Palestino CRM v2.0 — Script de instalación en /new
# Ejecutar desde el directorio donde están los archivos fuente
# USO: bash setup_new.sh /var/www/clubpalestino/public
# ============================================================

set -euo pipefail

# ── CONFIGURACIÓN ─────────────────────────────────────────────
BASE="${1:-/var/www/clubpalestino/public}"
NEW="$BASE/new"
SRC="$(dirname "$0")/src"   # Carpeta donde están los archivos descargados

echo "======================================================"
echo "  Club Palestino CRM v2.0 — Setup /new"
echo "  Destino: $NEW"
echo "======================================================"
echo ""

# ── PASO 1: CREAR ESTRUCTURA DE DIRECTORIOS ───────────────────
echo "📁 Creando estructura de directorios..."
mkdir -p "$NEW/admin"
mkdir -p "$NEW/api"
mkdir -p "$NEW/portal"
mkdir -p "$NEW/sql"
mkdir -p "$NEW/storage/logs"
mkdir -p "$NEW/storage/cache"
echo "   ✅ Directorios creados."
echo ""

# ── PASO 2: COPIAR Y RENOMBRAR ARCHIVOS ADMIN ─────────────────
echo "🖥️  Instalando paneles admin..."
declare -A ADMIN_FILES=(
    ["admin_dashboard_bi.php"]="index.php"
    ["admin_tarifas.php"]="tarifas.php"
    ["admin_actividades.php"]="actividades.php"
    ["admin_estacionamiento.php"]="estacionamiento.php"
    ["admin_restaurant.php"]="restaurant.php"
    ["admin_eventos.php"]="eventos.php"
    ["admin_facturacion.php"]="facturacion.php"
    ["admin_contabilidad.php"]="contabilidad.php"
    ["admin_rrhh.php"]="rrhh.php"
    ["admin_comunicaciones.php"]="comunicaciones.php"
    ["admin_seguridad.php"]="seguridad.php"
)
for SRC_FILE in "${!ADMIN_FILES[@]}"; do
    DEST_FILE="${ADMIN_FILES[$SRC_FILE]}"
    if [ -f "$SRC_FILE" ]; then
        cp "$SRC_FILE" "$NEW/admin/$DEST_FILE"
        echo "   ✅ admin/$DEST_FILE"
    else
        echo "   ⚠️  No encontrado: $SRC_FILE"
    fi
done
echo ""

# ── PASO 3: COPIAR Y RENOMBRAR APIs ───────────────────────────
echo "⚙️  Instalando APIs..."
declare -A API_FILES=(
    ["api_tarifas.php"]="tarifas.php"
    ["api_actividades.php"]="actividades.php"
    ["api_asistentes.php"]="asistentes.php"
    ["api_estacionamiento.php"]="estacionamiento.php"
    ["api_restaurant.php"]="restaurant.php"
    ["api_eventos.php"]="eventos.php"
    ["api_facturacion.php"]="facturacion.php"
    ["api_contabilidad.php"]="contabilidad.php"
    ["api_rrhh.php"]="rrhh.php"
    ["api_whatsapp.php"]="whatsapp.php"
    ["api_seguridad.php"]="seguridad.php"
)
for SRC_FILE in "${!API_FILES[@]}"; do
    DEST_FILE="${API_FILES[$SRC_FILE]}"
    if [ -f "$SRC_FILE" ]; then
        cp "$SRC_FILE" "$NEW/api/$DEST_FILE"
        echo "   ✅ api/$DEST_FILE"
    else
        echo "   ⚠️  No encontrado: $SRC_FILE"
    fi
done
echo ""

# ── PASO 4: COPIAR PORTAL PWA ─────────────────────────────────
echo "📱 Instalando portal del socio (PWA)..."
[ -f "portal_socio.html" ] && cp portal_socio.html "$NEW/portal/index.html" && echo "   ✅ portal/index.html"
[ -f "sw.js" ]             && cp sw.js             "$NEW/portal/sw.js"       && echo "   ✅ portal/sw.js"
[ -f "pwa_manifest.json" ] && cp pwa_manifest.json "$NEW/portal/manifest.json" && echo "   ✅ portal/manifest.json"
echo ""

# ── PASO 5: COPIAR SQLs ───────────────────────────────────────
echo "🗄️  Copiando archivos SQL..."
SQL_FILES=(
    "bd_multiempresa_core.sql"
    "tarifas_tabla_mysql.sql"
    "actividades_tablas_mysql.sql"
    "asistentes_memoria_mysql.sql"
    "estacionamiento_mysql.sql"
    "restaurant_mysql.sql"
    "eventos_mysql.sql"
    "facturacion_mysql.sql"
    "contabilidad_mysql.sql"
    "rrhh_mysql.sql"
    "whatsapp_mysql.sql"
    "seguridad_mysql.sql"
)
for f in "${SQL_FILES[@]}"; do
    [ -f "$f" ] && cp "$f" "$NEW/sql/$f" && echo "   ✅ sql/$f" || echo "   ⚠️  No encontrado: $f"
done
echo ""

# ── PASO 6: REEMPLAZAR RUTAS /api/ → /new/api/ ───────────────
echo "🔧 Actualizando rutas internas a /new/..."

# En paneles admin: reemplazar /api/ por /new/api/
find "$NEW/admin" -name "*.php" | while read f; do
    sed -i \
        "s|'/api/|'/new/api/|g" \
        "$f"
    echo "   ✅ Rutas actualizadas: $(basename $f)"
done

# En APIs: reemplazar rutas relativas entre módulos
find "$NEW/api" -name "*.php" | while read f; do
    sed -i \
        "s|'/api/|'/new/api/|g" \
        "$f"
done

# En portal HTML: actualizar rutas del service worker y APIs
if [ -f "$NEW/portal/index.html" ]; then
    sed -i \
        "s|'/portal/sw.js'|'/new/portal/sw.js'|g" \
        "$NEW/portal/index.html"
    sed -i \
        "s|'/api/|'/new/api/|g" \
        "$NEW/portal/index.html"
    sed -i \
        "s|'/portal/|'/new/portal/|g" \
        "$NEW/portal/index.html"
    echo "   ✅ Rutas actualizadas: portal/index.html"
fi

# En manifest.json: actualizar start_url y scope
if [ -f "$NEW/portal/manifest.json" ]; then
    sed -i \
        's|"start_url": "/portal/"|"start_url": "/new/portal/"|g' \
        "$NEW/portal/manifest.json"
    sed -i \
        's|"scope": "/portal/"|"scope": "/new/portal/"|g' \
        "$NEW/portal/manifest.json"
    echo "   ✅ Rutas actualizadas: portal/manifest.json"
fi

# En service worker: actualizar scope y rutas de cache
if [ -f "$NEW/portal/sw.js" ]; then
    sed -i \
        "s|'/portal/'|'/new/portal/'|g" \
        "$NEW/portal/sw.js"
    sed -i \
        "s|'/api/'|'/new/api/'|g" \
        "$NEW/portal/sw.js"
    echo "   ✅ Rutas actualizadas: portal/sw.js"
fi
echo ""

# ── PASO 7: CREAR ARCHIVO .env ────────────────────────────────
echo "🔐 Creando archivo .env de ejemplo..."
cat > "$NEW/.env.example" << 'ENVEOF'
# Club Palestino CRM v2.0 — Configuración
# Copiar como .env y completar con valores reales

APP_ENV=production
APP_DEBUG=false
APP_BASE_PATH=/new

# Base de datos
DB_HOST=localhost
DB_NAME=clubpalestino
DB_USER=cp_app
DB_PASS=CAMBIAR_PASSWORD

# Anthropic (Asistente IA)
ANTHROPIC_API_KEY=sk-ant-...

# WATI (WhatsApp)
WATI_TOKEN=eyJ...
WATI_ENDPOINT=https://live-server.wati.io

# SII Chile
SII_CERT_PATH_EMP1=/opt/clubpalestino/certs/empresa_1.pfx
SII_CERT_PASS_EMP1=CAMBIAR_PASSWORD_CERT

# Email alertas
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=admin@inteliworks.cl
SMTP_PASS=CAMBIAR_PASSWORD
ENVEOF
echo "   ✅ .env.example creado"
echo ""

# ── PASO 8: CREAR INDEX.PHP RAÍZ ─────────────────────────────
echo "🌐 Creando redirect raíz /new/ → /new/admin/..."
cat > "$NEW/index.php" << 'PHPEOF'
<?php
// Club Palestino CRM v2.0 — Redirect principal
// /new/index.php → redirige al admin si está logueado, portal si no

session_start();
if (isset($_SESSION['admin_logged'])) {
    header('Location: /new/admin/');
} else {
    header('Location: /new/portal/');
}
exit;
PHPEOF
echo "   ✅ index.php raíz creado"
echo ""

# ── PASO 9: CREAR .HTACCESS ──────────────────────────────────
echo "🔒 Creando .htaccess de seguridad..."
cat > "$NEW/.htaccess" << 'HTEOF'
# Club Palestino CRM v2.0 — Reglas de seguridad Apache
# (Si usas Nginx, ignorar este archivo — la config ya está en nginx_seguridad.conf)

Options -Indexes
ServerSignature Off

# Proteger archivos sensibles
<FilesMatch "\.(env|sql|sh|key|pfx|p12|log)$">
    Order allow,deny
    Deny from all
</FilesMatch>

# Proteger directorios
<FilesMatch "^(\.git|\.env|backup|storage)">
    Order allow,deny
    Deny from all
</FilesMatch>

# Headers de seguridad
<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-XSS-Protection "1; mode=block"
</IfModule>
HTEOF
echo "   ✅ .htaccess creado"
echo ""

# ── PASO 10: PERMISOS ─────────────────────────────────────────
echo "🔐 Estableciendo permisos..."
chown -R www-data:www-data "$NEW" 2>/dev/null || true
find "$NEW" -type f -name "*.php"  -exec chmod 644 {} \; 2>/dev/null || true
find "$NEW" -type f -name "*.html" -exec chmod 644 {} \; 2>/dev/null || true
find "$NEW" -type f -name "*.js"   -exec chmod 644 {} \; 2>/dev/null || true
find "$NEW" -type f -name "*.json" -exec chmod 644 {} \; 2>/dev/null || true
find "$NEW" -type d -exec chmod 755 {} \; 2>/dev/null || true
chmod 600 "$NEW/.env.example" 2>/dev/null || true
echo "   ✅ Permisos establecidos"
echo ""

# ── RESUMEN FINAL ─────────────────────────────────────────────
echo "======================================================"
echo "  ✅ INSTALACIÓN EN /new COMPLETADA"
echo "======================================================"
echo ""
echo "  📁 Estructura instalada en: $NEW"
echo ""
echo "  🌐 URLs del sistema:"
echo "     Admin:  https://sociosclubpalestino.cl/new/admin/"
echo "     Portal: https://sociosclubpalestino.cl/new/portal/"
echo "     APIs:   https://sociosclubpalestino.cl/new/api/"
echo ""
echo "  📋 PRÓXIMOS PASOS:"
echo "     1. Copiar .env.example como .env y completar con valores reales"
echo "     2. Ejecutar los 12 SQLs en orden desde $NEW/sql/"
echo "     3. Configurar Nginx agregando location /new/ al vhost"
echo "     4. Verificar: curl https://sociosclubpalestino.cl/new/api/tarifas.php?action=uf_hoy"
echo ""
echo "  🗄️  Ejecutar SQLs (en orden):"
cd "$NEW/sql" 2>/dev/null || true
for f in \
    bd_multiempresa_core.sql \
    tarifas_tabla_mysql.sql \
    actividades_tablas_mysql.sql \
    asistentes_memoria_mysql.sql \
    estacionamiento_mysql.sql \
    restaurant_mysql.sql \
    eventos_mysql.sql \
    facturacion_mysql.sql \
    contabilidad_mysql.sql \
    rrhh_mysql.sql \
    whatsapp_mysql.sql \
    seguridad_mysql.sql; do
    echo "     mysql -u cp_app -p clubpalestino < $NEW/sql/$f"
done
echo ""
echo "  📖 Ver Manual de Instalación para más detalles."
echo "======================================================"
