#!/bin/bash

# Script de rollback pour revenir à l'ancienne architecture
# Version: 2.0.1
# Date: 2025-09-11

set -e

# Couleurs pour l'affichage
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

echo -e "${YELLOW}================================================${NC}"
echo -e "${YELLOW}   Rollback CLEO - Retour architecture legacy  ${NC}"
echo -e "${YELLOW}================================================${NC}"
echo ""

# Vérifier qu'on est dans le bon répertoire
if [ ! -f "index.php" ] || [ ! -d "config" ]; then
    echo -e "${RED}Erreur: Ce script doit être exécuté depuis la racine du projet CLEO${NC}"
    exit 1
fi

# Fonction pour demander confirmation
confirm() {
    read -p "$1 [y/N] " -n 1 -r
    echo
    if [[ ! $REPLY =~ ^[Yy]$ ]]; then
        return 1
    fi
    return 0
}

echo -e "${YELLOW}ATTENTION: Cette opération va restaurer l'ancienne configuration${NC}"
if ! confirm "Voulez-vous continuer?"; then
    echo "Rollback annulé"
    exit 0
fi

echo ""
echo -e "${YELLOW}1. Restauration des fichiers originaux...${NC}"

# Restaurer conf.php
if [ -f "config/conf_old.php" ]; then
    mv config/conf.php config/conf_new_backup.php 2>/dev/null || true
    mv config/conf_old.php config/conf.php
    echo -e "${GREEN}   ✓ config/conf.php restauré${NC}"
else
    # Chercher dans les backups
    LATEST_BACKUP=$(ls -td backup_* 2>/dev/null | head -1)
    if [ -n "$LATEST_BACKUP" ] && [ -f "$LATEST_BACKUP/conf.php.bak" ]; then
        cp "$LATEST_BACKUP/conf.php.bak" config/conf.php
        echo -e "${GREEN}   ✓ config/conf.php restauré depuis $LATEST_BACKUP${NC}"
    else
        echo -e "${RED}   ✗ Impossible de restaurer config/conf.php${NC}"
    fi
fi

# Restaurer d6_tools.php
if [ -f "pub/res/d6/d6_tools_old.php" ]; then
    mv pub/res/d6/d6_tools.php pub/res/d6/d6_tools_new_backup.php 2>/dev/null || true
    mv pub/res/d6/d6_tools_old.php pub/res/d6/d6_tools.php
    echo -e "${GREEN}   ✓ d6_tools.php restauré${NC}"
else
    # Chercher dans les backups
    LATEST_BACKUP=$(ls -td backup_* 2>/dev/null | head -1)
    if [ -n "$LATEST_BACKUP" ] && [ -f "$LATEST_BACKUP/d6_tools.php.bak" ]; then
        cp "$LATEST_BACKUP/d6_tools.php.bak" pub/res/d6/d6_tools.php
        echo -e "${GREEN}   ✓ d6_tools.php restauré depuis $LATEST_BACKUP${NC}"
    else
        echo -e "${RED}   ✗ Impossible de restaurer d6_tools.php${NC}"
    fi
fi

echo ""
echo -e "${YELLOW}2. Configuration de la base de données...${NC}"
echo -e "${YELLOW}   Note: Les bases uof_frontal et uof_linet doivent être disponibles${NC}"
echo -e "${YELLOW}   La base 'cleo' reste en place pour référence future${NC}"

echo ""
echo -e "${YELLOW}3. Nettoyage...${NC}"

# Conserver les nouveaux fichiers pour référence
if [ ! -d "migration/new_architecture_backup" ]; then
    mkdir -p migration/new_architecture_backup
fi

# Sauvegarder les nouveaux fichiers
[ -f "config/conf_new.php" ] && cp config/conf_new.php migration/new_architecture_backup/
[ -f "config/Database.php" ] && cp config/Database.php migration/new_architecture_backup/
[ -f "pub/res/d6/d6_tools_new.php" ] && cp pub/res/d6/d6_tools_new.php migration/new_architecture_backup/
[ -f ".env" ] && cp .env migration/new_architecture_backup/
[ -f ".env.example" ] && cp .env.example migration/new_architecture_backup/

echo -e "${GREEN}   ✓ Nouveaux fichiers sauvegardés dans migration/new_architecture_backup/${NC}"

echo ""
echo -e "${GREEN}================================================${NC}"
echo -e "${GREEN}   Rollback terminé!                            ${NC}"
echo -e "${GREEN}================================================${NC}"
echo ""
echo "L'application utilise maintenant l'ancienne architecture avec:"
echo "  - Base uof_frontal pour la configuration"
echo "  - Base uof_linet pour les données métier"
echo ""
echo "Les fichiers de la nouvelle architecture sont conservés dans:"
echo "  - migration/new_architecture_backup/"
echo ""
echo "Pour réessayer la migration plus tard:"
echo "  ./migration/deploy_new_architecture.sh"
echo ""