#!/usr/bin/env bash
#
# fix_arbo_bry.sh
#
# Corrige l'arborescence SOURCE avant import (cliImportDocsResidentsFTM.php) :
#   1) « Contrat Locataire »        -> fusionné dans « Contrat résident »
#      (ce dossier n'existe pas en base ; son contenu doit aller sous « Contrat résident »)
#   2) « Contentieux/Contentieux »  -> aplati sur « Contentieux »
#      (le niveau « Contentieux » dupliqué n'existe pas en base)
#
# Garanties :
#   - NON destructif : aucun fichier n'est jamais écrasé (un fichier déjà présent
#     à destination est laissé tel quel, le doublon source est supprimé).
#   - Gère les dossiers résidents en lecture seule (droit d'écriture remis puis retiré).
#
# Usage :
#   cli/fix_arbo_bry.sh                 # DRY-RUN sur le dossier par défaut (n'écrit rien)
#   cli/fix_arbo_bry.sh --go            # applique
#   cli/fix_arbo_bry.sh "/chemin/BRY SUR MARNE RS"        # DRY-RUN sur un autre dossier
#   cli/fix_arbo_bry.sh "/chemin/BRY SUR MARNE RS" --go   # applique sur un autre dossier

set -u

# ---- paramètres ------------------------------------------------------------
SRC="/var/www/html/essecCSS/BRY SUR MARNE RS"
APPLY=0
for a in "$@"; do
  case "$a" in
    --go) APPLY=1 ;;
    *)    SRC="${a%/}" ;;
  esac
done

if [ ! -d "$SRC" ]; then
  echo "ERREUR: dossier source introuvable : $SRC" >&2
  exit 1
fi

echo "=========================================================="
echo "Source : $SRC"
echo "Mode   : $([ "$APPLY" -eq 1 ] && echo 'REEL (--go)' || echo 'DRY-RUN (aucune écriture) — ajouter --go pour appliquer')"
echo "=========================================================="

cd "$SRC" || exit 1

echo "AVANT :"
echo "  fichiers sous 'Contrat Locataire'       : $(find . -path '*/Contrat Locataire/*' -type f | wc -l)"
echo "  fichiers sous 'Contentieux/Contentieux' : $(find . -path '*/Contentieux/Contentieux/*' -type f | wc -l)"
echo

# ---- 1) Contrat Locataire -> Contrat résident ------------------------------
echo "1) Contrat Locataire -> Contrat résident (fusion sans écrasement)"
find . -type d -name "Contrat Locataire" -print0 | while IFS= read -r -d '' src; do
  parent=$(dirname "$src")
  dest="$parent/Contrat résident"
  (cd "$src" && find . -type f -print0) | while IFS= read -r -d '' rel; do
    rel=${rel#./}
    if [ -e "$dest/$rel" ]; then
      echo "  = déjà présent (destination gardée) : ${parent#./} :: $rel"
      [ "$APPLY" -eq 1 ] && rm -f "$src/$rel"
    else
      echo "  -> déplacé : ${parent#./} :: $rel"
      if [ "$APPLY" -eq 1 ]; then
        mkdir -p "$dest/$(dirname "$rel")"
        mv "$src/$rel" "$dest/$rel"
      fi
    fi
  done
  # suppression du dossier vidé (gère le parent en lecture seule)
  if [ "$APPLY" -eq 1 ]; then
    chmod u+w "$parent" 2>/dev/null
    rm -rf "$src" 2>/dev/null && echo "  (dossier vidé supprimé : ${src#./})"
    chmod u-w "$parent" 2>/dev/null
  fi
done

echo
# ---- 2) Contentieux/Contentieux -> Contentieux -----------------------------
echo "2) Contentieux/Contentieux -> Contentieux (remonter d'un niveau)"
find . -type d -path "*/Contentieux/Contentieux" -print0 | while IFS= read -r -d '' inner; do
  parent=$(dirname "$inner")   # le Contentieux « parent »
  (cd "$inner" && find . -type f -print0) | while IFS= read -r -d '' rel; do
    rel=${rel#./}
    if [ -e "$parent/$rel" ]; then
      echo "  = collision, non déplacé : ${parent#./} :: $rel"
    else
      echo "  -> remonté : ${parent#./} :: $rel"
      if [ "$APPLY" -eq 1 ]; then
        mkdir -p "$parent/$(dirname "$rel")"
        mv "$inner/$rel" "$parent/$rel"
      fi
    fi
  done
  if [ "$APPLY" -eq 1 ]; then
    chmod u+w "$parent" 2>/dev/null
    rm -rf "$inner" 2>/dev/null && echo "  (dossier vidé supprimé : ${inner#./})"
    chmod u-w "$parent" 2>/dev/null
  fi
done

echo
echo "APRÈS :"
echo "  dossiers 'Contrat Locataire' restants        : $(find . -type d -name 'Contrat Locataire' | wc -l)"
echo "  dossiers 'Contentieux/Contentieux' restants   : $(find . -type d -path '*/Contentieux/Contentieux' | wc -l)"
echo "  fichiers restants sous 'Contrat Locataire'    : $(find . -path '*/Contrat Locataire/*' -type f | wc -l)"
[ "$APPLY" -eq 0 ] && echo && echo ">>> DRY-RUN terminé : rien n'a été modifié. Relancer avec --go pour appliquer."
