#!/bin/bash

# 🎵 Veza Platform - Validation Finale
# ====================================

echo "🎵 Validation finale de Veza Platform"
echo "===================================="
echo ""

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

print_success() {
    echo -e "${GREEN}✅ $1${NC}"
}

print_error() {
    echo -e "${RED}❌ $1${NC}"
}

print_info() {
    echo -e "${BLUE}ℹ️  $1${NC}"
}

print_warning() {
    echo -e "${YELLOW}⚠️  $1${NC}"
}

# Validation 1: Services de base
echo "🔧 Validation des services de base..."
echo "------------------------------------"

# Backend API
if curl -s http://localhost:8080/api/health | grep -q "healthy"; then
    print_success "Backend API opérationnel"
else
    print_error "Backend API non accessible"
fi

# Frontend Web
if curl -s http://localhost:5176/ > /dev/null; then
    print_success "Frontend Web accessible"
else
    print_error "Frontend Web non accessible"
fi

# PostgreSQL
if pg_isready -h localhost -p 5432 > /dev/null 2>&1; then
    print_success "PostgreSQL opérationnel"
else
    print_error "PostgreSQL non accessible"
fi

# Redis
if redis-cli ping | grep -q "PONG"; then
    print_success "Redis opérationnel"
else
    print_error "Redis non accessible"
fi

echo ""

# Validation 2: Fonctionnalités principales
echo "🎵 Validation des fonctionnalités principales..."
echo "---------------------------------------------"

# Test de l'API backend
HEALTH_RESPONSE=$(curl -s http://localhost:8080/api/health)
if echo "$HEALTH_RESPONSE" | grep -q "healthy"; then
    print_success "API Backend fonctionnelle"
    VERSION=$(echo "$HEALTH_RESPONSE" | jq -r '.version' 2>/dev/null || echo "N/A")
    print_info "Version Backend: $VERSION"
else
    print_error "API Backend non fonctionnelle"
fi

# Test de l'interface web
WEB_RESPONSE=$(curl -s http://localhost:5176/)
if echo "$WEB_RESPONSE" | grep -q "react"; then
    print_success "Interface React chargée"
else
    print_error "Interface React non chargée"
fi

echo ""

# Validation 3: Architecture et fichiers
echo "🏗️  Validation de l'architecture..."
echo "--------------------------------"

# Vérifier la structure des dossiers
DIRECTORIES=("veza-frontend" "veza-backend-api" "veza-desktop" "veza-chat-server")
for dir in "${DIRECTORIES[@]}"; do
    if [ -d "$dir" ]; then
        print_success "Dossier $dir présent"
    else
        print_error "Dossier $dir manquant"
    fi
done

# Vérifier les fichiers de configuration
FILES=("docker-compose.production.yml" "start-veza.sh" "stop-veza.sh")
for file in "${FILES[@]}"; do
    if [ -f "$file" ]; then
        print_success "Fichier $file présent"
    else
        print_error "Fichier $file manquant"
    fi
done

echo ""

# Validation 4: Ports et processus
echo "🔌 Validation des ports et processus..."
echo "-------------------------------------"

# Vérifier les ports essentiels
PORTS=(
    "5176:Frontend"
    "8080:Backend"
    "5432:PostgreSQL"
    "6379:Redis"
)

for port_info in "${PORTS[@]}"; do
    port=$(echo $port_info | cut -d: -f1)
    service=$(echo $port_info | cut -d: -f2)
    
    if netstat -tuln 2>/dev/null | grep -q ":$port "; then
        print_success "Port $port ($service) ouvert"
    else
        print_warning "Port $port ($service) fermé ou non détecté"
    fi
done

echo ""

# Validation 5: Résumé et recommandations
echo "📊 Résumé de la validation"
echo "=========================="

# Compter les succès
SUCCESS_COUNT=$(grep -c "✅" <<< "$(tail -n +50 $0)")
ERROR_COUNT=$(grep -c "❌" <<< "$(tail -n +50 $0)")
WARNING_COUNT=$(grep -c "⚠️" <<< "$(tail -n +50 $0)")

echo "Tests réussis: $SUCCESS_COUNT"
echo "Tests échoués: $ERROR_COUNT"
echo "Avertissements: $WARNING_COUNT"

echo ""

if [ $ERROR_COUNT -eq 0 ]; then
    echo -e "${GREEN}🎉 Veza Platform est complètement fonctionnel !${NC}"
    echo ""
    echo "📱 Accès aux applications :"
    echo "   🌐 Web App: http://localhost:5176"
    echo "   🖥️  Desktop: ./start-desktop.sh"
    echo ""
    echo "🔧 Services actifs :"
    echo "   ✅ Backend API: http://localhost:8080"
    echo "   ✅ Frontend: http://localhost:5176"
    echo "   ✅ PostgreSQL: localhost:5432"
    echo "   ✅ Redis: localhost:6379"
    echo ""
    echo "🚀 Commandes utiles :"
    echo "   - Démarrage complet: ./start-veza.sh"
    echo "   - Arrêt: ./stop-veza.sh"
    echo "   - Test complet: ./test-veza-complete.sh"
    echo "   - Desktop: ./start-desktop.sh"
    echo ""
    echo -e "${GREEN}✅ L'application Veza est prête à être utilisée !${NC}"
else
    echo -e "${YELLOW}⚠️  Veza Platform est partiellement fonctionnel.${NC}"
    echo ""
    echo "🔧 Actions recommandées :"
    echo "   - Redémarrer les services: ./start-veza.sh"
    echo "   - Vérifier les logs: tail -f logs/*.log"
    echo "   - Tester manuellement: http://localhost:5176"
fi

echo ""
echo "🎵 Validation terminée" 