#!/usr/bin/env bash
set -Eeuo pipefail

BASE="${1:-/home/iotcuboc/pyme}"
PAQUETE="$(cd "$(dirname "$0")" && pwd)"
MARCA="$(date +%Y%m%d_%H%M%S)"
RESPALDO="$BASE/respaldos/correcciones_v5_3_2_$MARCA"

for ARCHIVO in public/productos_v3.php public/items_v3.php public/movimientos_stock_agrupados_v3.php; do
  if [[ ! -f "$BASE/$ARCHIVO" ]]; then
    echo "ERROR: falta el archivo requerido $BASE/$ARCHIVO" >&2
    exit 1
  fi
done

php -l "$PAQUETE/paso/aplicar_correcciones.php" >/dev/null
php -l "$PAQUETE/public/movimientos_stock_agrupados_v3.php" >/dev/null
mkdir -p "$RESPALDO/public" "$RESPALDO/preparados"
cp -p "$BASE/public/productos_v3.php" "$RESPALDO/public/productos_v3.php"
cp -p "$BASE/public/items_v3.php" "$RESPALDO/public/items_v3.php"
cp -p "$BASE/public/movimientos_stock_agrupados_v3.php" "$RESPALDO/public/movimientos_stock_agrupados_v3.php"

restaurar_error() {
  local codigo=$?
  cp -p "$RESPALDO/public/productos_v3.php" "$BASE/public/productos_v3.php" || true
  cp -p "$RESPALDO/public/items_v3.php" "$BASE/public/items_v3.php" || true
  cp -p "$RESPALDO/public/movimientos_stock_agrupados_v3.php" "$BASE/public/movimientos_stock_agrupados_v3.php" || true
  echo "ERROR: instalación cancelada en la línea ${BASH_LINENO[0]} (código $codigo)." >&2
  echo "Se restauraron los archivos originales." >&2
}
trap restaurar_error ERR

php "$PAQUETE/paso/aplicar_correcciones.php" productos "$RESPALDO/public/productos_v3.php" "$RESPALDO/preparados/productos_v3.php"
php "$PAQUETE/paso/aplicar_correcciones.php" items "$RESPALDO/public/items_v3.php" "$RESPALDO/preparados/items_v3.php"
php -l "$RESPALDO/preparados/productos_v3.php" >/dev/null
php -l "$RESPALDO/preparados/items_v3.php" >/dev/null

cp -p "$RESPALDO/preparados/productos_v3.php" "$BASE/public/productos_v3.php"
cp -p "$RESPALDO/preparados/items_v3.php" "$BASE/public/items_v3.php"
cp -p "$PAQUETE/public/movimientos_stock_agrupados_v3.php" "$BASE/public/movimientos_stock_agrupados_v3.php"

php -l "$BASE/public/productos_v3.php" >/dev/null
php -l "$BASE/public/items_v3.php" >/dev/null
php -l "$BASE/public/movimientos_stock_agrupados_v3.php" >/dev/null
trap - ERR

echo "Correcciones v5.3.2 instaladas correctamente."
echo "Respaldo: $RESPALDO"
echo "No se realizaron cambios en la base de datos."
