#!/bin/bash

# ============================================
# Script de Restauración de Archivos Protegidos
# ============================================
# Este script restaura archivos protegidos desde un backup
# ============================================

# Obtener directorio del script
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
cd "$PROJECT_DIR"

# Verificar si se proporcionó directorio de backup
if [ -z "$1" ]; then
    # Buscar el backup más reciente
    BACKUP_DIR=$(ls -td storage/app/backups/pre-update-* 2>/dev/null | head -1)

    if [ -z "$BACKUP_DIR" ]; then
        echo "❌ Error: No se encontró ningún directorio de backup"
        echo ""
        echo "Uso:"
        echo "  $0 [directorio_de_backup]"
        echo ""
        echo "Ejemplo:"
        echo "  $0 storage/app/backups/pre-update-20241215_143022"
        exit 1
    fi

    echo "📦 Usando backup más reciente: $BACKUP_DIR"
else
    BACKUP_DIR="$1"
fi

# Verificar que el directorio existe
if [ ! -d "$BACKUP_DIR" ]; then
    echo "❌ Error: Directorio de backup no encontrado: $BACKUP_DIR"
    exit 1
fi

# Mostrar información del backup
if [ -f "$BACKUP_DIR/BACKUP_INFO.txt" ]; then
    echo ""
    echo "📋 Información del backup:"
    cat "$BACKUP_DIR/BACKUP_INFO.txt"
    echo ""
fi

# Confirmar restauración
read -p "¿Deseas restaurar los archivos desde este backup? (y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
    echo "❌ Restauración cancelada"
    exit 0
fi

echo ""
echo "🔄 Restaurando archivos desde: $BACKUP_DIR"
echo ""

# Restaurar configuración
echo "📄 Restaurando configuración..."
if [ -f "$BACKUP_DIR/site.php" ]; then
    cp "$BACKUP_DIR/site.php" config/site.php && echo "  ✅ config/site.php restaurado" || echo "  ❌ Error al restaurar config/site.php"
else
    echo "  ⚠️  config/site.php no encontrado en backup"
fi

if [ -f "$BACKUP_DIR/cd-system.php" ]; then
    cp "$BACKUP_DIR/cd-system.php" config/cd-system.php && echo "  ✅ config/cd-system.php restaurado" || echo "  ❌ Error al restaurar config/cd-system.php"
else
    echo "  ⚠️  config/cd-system.php no encontrado en backup"
fi

# Restaurar assets - Logos
echo ""
echo "🎨 Restaurando logos..."
if [ -d "$BACKUP_DIR/logos" ]; then
    cp -r "$BACKUP_DIR/logos" public/cd-project/img/ 2>/dev/null && echo "  ✅ public/cd-project/img/logos/ restaurado" || echo "  ❌ Error al restaurar logos"
else
    echo "  ⚠️  logos/ no encontrado en backup"
fi

# Restaurar assets - Favicons
echo ""
echo "🎨 Restaurando favicons..."
if [ -d "$BACKUP_DIR/favicon" ]; then
    cp -r "$BACKUP_DIR/favicon" public/cd-project/img/ 2>/dev/null && echo "  ✅ public/cd-project/img/favicon/ restaurado" || echo "  ❌ Error al restaurar favicons"
else
    echo "  ⚠️  favicon/ no encontrado en backup"
fi

# Restaurar assets - Assets temporales
echo ""
echo "🎨 Restaurando assets temporales..."
if [ -d "$BACKUP_DIR/assets" ]; then
    cp -r "$BACKUP_DIR/assets" public/cd-project/ 2>/dev/null && echo "  ✅ public/cd-project/assets/ restaurado" || echo "  ❌ Error al restaurar assets"
else
    echo "  ⚠️  assets/ no encontrado en backup"
fi

# Restaurar assets - Meta tags
echo ""
echo "🎨 Restaurando meta tags..."
if [ -d "$BACKUP_DIR/meta-tags" ]; then
    cp -r "$BACKUP_DIR/meta-tags" public/cd-project/img/ 2>/dev/null && echo "  ✅ public/cd-project/img/meta-tags/ restaurado" || echo "  ❌ Error al restaurar meta tags"
else
    echo "  ⚠️  meta-tags/ no encontrado en backup"
fi

# Restaurar datos del proyecto
echo ""
echo "💾 Restaurando datos del proyecto..."
if [ -d "$BACKUP_DIR/project-data" ]; then
    cp -r "$BACKUP_DIR/project-data" database/seeders/ 2>/dev/null && echo "  ✅ database/seeders/project-data/ restaurado" || echo "  ❌ Error al restaurar datos"
else
    echo "  ⚠️  project-data/ no encontrado en backup"
fi

# Resumen
echo ""
echo "✅ Restauración completada"
echo ""
echo "📋 Verificar cambios con:"
echo "   git status"
echo ""
echo "💡 Limpiar cache de Laravel:"
echo "   php artisan config:clear"
echo "   php artisan cache:clear"
