#!/usr/bin/env bash
# =====================================================================
#  Ajustes pedidos por FEVAL (Generalidades + Correcciones)
#
#  Este script copia los archivos y aplica las MIGRACIONES de base de datos.
#  NO recarga la base de asociados ni reconfigura beneficios: esos pasos los
#  ejecutas tu despues, para que tengas el control.
#
#  Uso:  bash aplicar.sh            (o)   bash aplicar.sh /ruta/a/la/app
# =====================================================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SRC="$SCRIPT_DIR/files"
APP_ROOT="${1:-$(cd "$SCRIPT_DIR/.." && pwd)}"

echo "==============================================================="
echo " Ajustes FEVAL v2"
echo " Raiz de la app: $APP_ROOT"
echo "==============================================================="
if [ ! -f "$APP_ROOT/public/index.php" ] || [ ! -d "$APP_ROOT/app" ]; then
  echo "ERROR: '$APP_ROOT' no parece la raiz de la app."
  echo "       Ejecuta:  bash aplicar.sh ~/public_html/feval"
  exit 1
fi

STAMP="$(date +%Y%m%d-%H%M%S)"
BACKUP="$APP_ROOT/_backup-feval-v2-$STAMP"
mkdir -p "$BACKUP"
echo "Respaldo de los originales en: $BACKUP"

echo "--- Copiando archivos -----------------------------------------"
cd "$SRC"
while IFS= read -r rel; do
  rel="${rel#./}"
  dest="$APP_ROOT/$rel"
  if [ -f "$dest" ]; then
    mkdir -p "$BACKUP/$(dirname "$rel")"
    cp -p "$dest" "$BACKUP/$rel"
  fi
  mkdir -p "$(dirname "$dest")"
  cp -f "$SRC/$rel" "$dest"
  chmod 644 "$dest"
  echo "  [OK] $rel"
done < <(find . -type f)

# Vistas que ya no existen (se quito la pantalla de confirmacion y el aviso
# de correo incorrecto). Se respaldan y se eliminan para no dejar basura.
for obsoleta in views/asociado/confirmacion.php views/asociado/aviso-correo.php; do
  if [ -f "$APP_ROOT/$obsoleta" ]; then
    mkdir -p "$BACKUP/$(dirname "$obsoleta")"
    mv "$APP_ROOT/$obsoleta" "$BACKUP/$obsoleta"
    echo "  [--] $obsoleta (eliminada, ya no se usa)"
  fi
done

# Base de asociados con las 3 zonas de la columna UBICACION
mkdir -p "$APP_ROOT/datos"
if [ -d "$SCRIPT_DIR/datos" ]; then
  cp -f "$SCRIPT_DIR"/datos/*.xlsx "$APP_ROOT/datos/" 2>/dev/null || true
  chmod 644 "$APP_ROOT"/datos/*.xlsx 2>/dev/null || true
  echo "  [OK] datos/Base-Asociados-FEVAL-3-zonas.xlsx"
fi

find "$APP_ROOT/views" "$APP_ROOT/public/assets" "$APP_ROOT/app" "$APP_ROOT/config" \
     "$APP_ROOT/database" "$APP_ROOT/scripts" "$APP_ROOT/datos" -type d -exec chmod 755 {} \; 2>/dev/null || true

echo "--- Aplicando migraciones de base de datos --------------------"
cd "$APP_ROOT"
if php scripts/migrate.php; then
  echo "Migraciones aplicadas correctamente."
else
  echo ""
  echo "!!! ATENCION: las migraciones FALLARON. Los archivos ya se copiaron,"
  echo "!!! pero la base NO se actualizo. Revisa el mensaje de arriba."
  echo "!!! Para revertir los archivos:  cp -rp \"$BACKUP\"/* \"$APP_ROOT\"/"
  exit 1
fi

echo "==============================================================="
echo " ARCHIVOS Y BASE ACTUALIZADOS. Ahora ejecuta TU estos pasos:"
echo "==============================================================="
echo ""
echo " PASO 1 - Rehacer zonas (de 77 pasan a 3 + Guachucal) y usuarios."
echo "          OJO: borra los asociados y selecciones actuales."
echo "    php scripts/preparar-produccion.php"
echo "    php scripts/preparar-produccion.php --confirmar \\"
echo "        --admin-nosotros=soluciones@singularidadia.com \\"
echo "        --admin-feval=CORREO_REAL_DE_FEVAL \\"
echo "        --asesor-feval=CORREO_DEL_ASESOR"
echo ""
echo " PASO 2 - Cargar la base con las 3 zonas y la sede:"
echo "    php scripts/cargar-base.php datos/Base-Asociados-FEVAL-3-zonas.xlsx"
echo ""
echo " PASO 3 - Beneficios, oferta, presupuestos, fechas y condiciones:"
echo "    php scripts/configurar-beneficios.php"
echo "    php scripts/configurar-beneficios.php --confirmar"
echo ""
echo " PASO 4 - Generar las claves de TODOS los asociados y el Excel para FEVAL:"
echo "    php scripts/generar-claves.php"
echo "    php scripts/generar-claves.php --confirmar"
echo "    -> queda en  datos/Claves-de-acceso-asociados.xlsx"
echo ""
echo " Respaldo de archivos: $BACKUP"
echo "==============================================================="
