#!/usr/bin/env bash
# =====================================================================
#  Ajustes solicitados por FEVAL (etapa de pruebas)
#   - El asesor ya NO cambia selecciones (solo consulta) y ve cuantas veces cambio
#   - El asesor SI accede a Reportes
#   - El asociado cambia su bono cuando quiera (auditado)
#   - Tarjetas de beneficio del mismo tamano + mejor vista en computador
#  INCLUYE MIGRACION DE BASE DE DATOS (003) que se aplica automaticamente.
#  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 (etapa de pruebas)"
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 (falta public/index.php o app/)."
  echo "       Ejecuta indicando la ruta:  bash aplicar.sh ~/public_html/feval"
  exit 1
fi

STAMP="$(date +%Y%m%d-%H%M%S)"
BACKUP="$APP_ROOT/_backup-ajustes-$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)

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

echo "--- Aplicando migracion de base de datos ----------------------"
cd "$APP_ROOT"
if php scripts/migrate.php; then
  echo "Migracion aplicada correctamente."
else
  echo ""
  echo "!!! ATENCION: la migracion FALLO. Los archivos ya se copiaron, pero la"
  echo "!!! base de datos NO se actualizo: el cambio de bono por el asociado"
  echo "!!! dara error hasta resolverlo. Revisa el mensaje de arriba."
  echo "!!! Para revertir los archivos:"
  echo "!!!   cp -rp \"$BACKUP\"/* \"$APP_ROOT\"/"
  exit 1
fi

echo "==============================================================="
echo " LISTO. Recarga la web con Ctrl+F5 (o en incognito)."
echo " Respaldo de archivos: $BACKUP"
echo "==============================================================="
