#!/bin/bash

# Script de diagnostic complet pour l'envoi d'email aux transporteurs
# Ce script fait TOUT automatiquement

set -e  # Arrêter en cas d'erreur

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

echo ""
echo "╔════════════════════════════════════════════════════════════╗"
echo "║  🔍 DIAGNOSTIC COMPLET - Email Transporteur               ║"
echo "╚════════════════════════════════════════════════════════════╝"
echo ""

# Fonction pour afficher les étapes
step_header() {
    echo ""
    echo -e "${BLUE}╔════════════════════════════════════════════════════════════╗${NC}"
    echo -e "${BLUE}║  $1${NC}"
    echo -e "${BLUE}╚════════════════════════════════════════════════════════════╝${NC}"
    echo ""
}

# Fonction pour les succès
success() {
    echo -e "${GREEN}✅ $1${NC}"
}

# Fonction pour les erreurs
error() {
    echo -e "${RED}❌ $1${NC}"
}

# Fonction pour les warnings
warning() {
    echo -e "${YELLOW}⚠️  $1${NC}"
}

# Fonction pour les infos
info() {
    echo -e "${BLUE}ℹ️  $1${NC}"
}

# Aller dans le répertoire backend
cd "$(dirname "$0")"

# ============================================================
# ÉTAPE 1: Arrêter le backend
# ============================================================
step_header "ÉTAPE 1/5: Arrêt du backend actuel"

BACKEND_PIDS=$(lsof -ti:4000 2>/dev/null || true)
if [ -n "$BACKEND_PIDS" ]; then
    info "Processus backend trouvés: $BACKEND_PIDS"
    kill -9 $BACKEND_PIDS 2>/dev/null || true
    sleep 2
    success "Backend arrêté"
else
    info "Aucun backend en cours d'exécution"
fi

# ============================================================
# ÉTAPE 2: Vérifier les modifications
# ============================================================
step_header "ÉTAPE 2/5: Vérification des modifications"

if grep -q "Using direct IP" src/infrastructure/email/email.adapter.ts; then
    success "Modifications DNS présentes dans email.adapter.ts"
else
    error "Modifications DNS ABSENTES dans email.adapter.ts"
    error "Le fix n'a pas été appliqué correctement!"
    exit 1
fi

# ============================================================
# ÉTAPE 3: Test de connexion SMTP (sans backend)
# ============================================================
step_header "ÉTAPE 3/5: Test de connexion SMTP directe"

info "Exécution de debug-email-flow.js..."
echo ""

if node debug-email-flow.js > /tmp/email-test.log 2>&1; then
    success "Test SMTP réussi!"
    echo ""
    echo "Résultats du test:"
    echo "─────────────────"
    tail -15 /tmp/email-test.log
else
    error "Test SMTP échoué!"
    echo ""
    echo "Logs d'erreur:"
    echo "──────────────"
    cat /tmp/email-test.log
    echo ""
    error "ARRÊT: La connexion SMTP ne fonctionne pas"
    error "Vérifiez vos credentials SMTP dans .env"
    exit 1
fi

# ============================================================
# ÉTAPE 4: Redémarrer le backend
# ============================================================
step_header "ÉTAPE 4/5: Redémarrage du backend"

info "Démarrage du backend en arrière-plan..."

# Démarrer le backend
npm run dev > /tmp/backend.log 2>&1 &
BACKEND_PID=$!

info "Backend démarré (PID: $BACKEND_PID)"
info "Attente de l'initialisation (15 secondes)..."

# Attendre que le backend démarre
sleep 15

# Vérifier que le backend tourne
if kill -0 $BACKEND_PID 2>/dev/null; then
    success "Backend en cours d'exécution"

    # Afficher les logs de démarrage
    echo ""
    echo "Logs de démarrage du backend:"
    echo "─────────────────────────────"
    tail -20 /tmp/backend.log
    echo ""

    # Vérifier le log DNS fix
    if grep -q "Using direct IP" /tmp/backend.log; then
        success "✨ DNS FIX DÉTECTÉ: Le backend utilise bien l'IP directe!"
    else
        warning "DNS fix non détecté dans les logs"
        warning "Cela peut être normal si le message est tronqué"
    fi

else
    error "Le backend n'a pas démarré correctement"
    echo ""
    echo "Logs d'erreur:"
    echo "──────────────"
    cat /tmp/backend.log
    exit 1
fi

# ============================================================
# ÉTAPE 5: Test de création de booking (optionnel)
# ============================================================
step_header "ÉTAPE 5/5: Instructions pour tester"

echo ""
echo "Le backend est maintenant en cours d'exécution avec les corrections."
echo ""
echo "Pour tester l'envoi d'email:"
echo "──────────────────────────────────────────────────────────────"
echo ""
echo "1. ${GREEN}Via le frontend${NC}:"
echo "   - Ouvrez http://localhost:3000"
echo "   - Créez un CSV booking"
echo "   - Vérifiez les logs backend pour:"
echo "     ${GREEN}✅ Email sent to carrier: <email>${NC}"
echo ""
echo "2. ${GREEN}Via l'API directement${NC}:"
echo "   - Utilisez Postman ou curl"
echo "   - POST http://localhost:4000/api/v1/csv-bookings"
echo "   - Avec un fichier et les données du booking"
echo ""
echo "3. ${GREEN}Vérifier Mailtrap${NC}:"
echo "   - https://mailtrap.io/inboxes"
echo "   - Cherchez: 'Nouvelle demande de réservation'"
echo ""
echo "──────────────────────────────────────────────────────────────"
echo ""
info "Pour voir les logs backend en temps réel:"
echo "   ${YELLOW}tail -f /tmp/backend.log${NC}"
echo ""
info "Pour arrêter le backend:"
echo "   ${YELLOW}kill $BACKEND_PID${NC}"
echo ""

success "Diagnostic terminé!"
echo ""
echo "╔════════════════════════════════════════════════════════════╗"
echo "║  ✅ BACKEND PRÊT - Créez un booking pour tester           ║"
echo "╚════════════════════════════════════════════════════════════╝"
echo ""
