#!/bin/bash

# ===========================================
# HOTFIX PRODUCTION - Correction urgente
# ===========================================

set -e

echo "🚑 HOTFIX en cours..."

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

log_info() {
    echo -e "${YELLOW}[$(date '+%H:%M:%S')] $1${NC}"
}

log_success() {
    echo -e "${GREEN}[$(date '+%H:%M:%S')] ✅ $1${NC}"
}

log_error() {
    echo -e "${RED}[$(date '+%H:%M:%S')] ❌ $1${NC}"
}

# Vérifier qu'on est dans le bon répertoire
if [ ! -f "composer.json" ]; then
    log_error "Pas dans le répertoire du projet!"
    exit 1
fi

# 1. Sauvegarde rapide
log_info "Sauvegarde des logs actuels..."
if [ -d "var/log" ]; then
    cp -r var/log /tmp/search-logs-backup-$(date +%H%M%S) || true
fi

# 2. Nettoyer complètement le cache
log_info "Nettoyage complet du cache..."
rm -rf var/cache/prod/* || true
php bin/console cache:clear --env=prod --no-debug
php bin/console cache:warmup --env=prod --no-debug

# 3. Vérifier les permissions
log_info "Correction des permissions..."
chmod -R 755 var/
chmod -R 666 var/log/* || true

# 4. Tester la configuration
log_info "Test de la configuration..."
php bin/console lint:container --env=prod

# 5. Tester l'autoloader
log_info "Optimisation de l'autoloader..."
composer dump-autoload --optimize --no-dev

# 6. Test de l'endpoint en local
log_info "Test de l'endpoint de santé..."
timeout 10 php -S 127.0.0.1:8999 -t public/ > /dev/null 2>&1 &
SERVER_PID=$!
sleep 3

if curl -s "http://127.0.0.1:8999/api/search/health" | grep -q "OK"; then
    log_success "Endpoint de santé fonctionne!"
    HEALTH_OK=true
else
    log_error "Endpoint de santé ne fonctionne pas"
    HEALTH_OK=false
fi

# Arrêter le serveur de test
kill $SERVER_PID || true

# 7. Test CORS
if [ "$HEALTH_OK" = true ]; then
    log_info "Test CORS..."
    php -S 127.0.0.1:8999 -t public/ > /dev/null 2>&1 &
    SERVER_PID=$!
    sleep 2
    
    cors_response=$(curl -s -H "Origin: https://cours2facu.varascundo.com" \
                         -H "Access-Control-Request-Method: GET" \
                         -H "Access-Control-Request-Headers: Content-Type" \
                         -X OPTIONS "http://127.0.0.1:8999/api/search/health")
    
    if echo "$cors_response" | grep -q "Access-Control-Allow-Origin\|allow-origin"; then
        log_success "CORS fonctionne"
    else
        log_error "Problème CORS détecté"
        echo "Réponse CORS: $cors_response"
    fi
    
    kill $SERVER_PID || true
fi

# 8. Vérifier la configuration .env
log_info "Vérification de la configuration..."
if grep -q "APP_ENV=prod" .env; then
    log_success "APP_ENV configuré en production"
else
    log_error "APP_ENV non configuré pour la production"
fi

# 9. Afficher les informations importantes
echo ""
echo "======================================"
echo "📋 RÉSUMÉ DU HOTFIX"
echo "======================================"
echo "✅ Cache vidé et rechargé"
echo "✅ Permissions corrigées"  
echo "✅ Container validé"
echo "✅ Autoloader optimisé"

if [ "$HEALTH_OK" = true ]; then
    echo "✅ Endpoint de santé OK"
else
    echo "❌ Endpoint de santé KO"
fi

echo ""
echo "🔗 URLs à tester:"
echo "  - https://ia-search.varascundo.com/api/search/health"
echo "  - https://ia-search.varascundo.com/api/search?q=test"

echo ""
echo "📋 Prochaines étapes:"
echo "  1. Vérifier que le serveur web (Apache/Nginx) est redémarré"
echo "  2. Vérifier les logs du serveur web"
echo "  3. Tester depuis le navigateur"

echo ""
log_success "🚀 HOTFIX terminé!"