#!/bin/bash

# ============================================
# Sciences Afrique - Script de Déploiement
# ============================================

echo "🚀 Déploiement de Sciences Afrique"
echo "=================================="

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

# Fonction pour afficher les messages
info() {
    echo -e "${GREEN}✓${NC} $1"
}

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

error() {
    echo -e "${RED}✗${NC} $1"
}

# 1. Vérifier les prérequis
echo ""
echo "1️⃣  Vérification des prérequis..."

if ! command -v php &> /dev/null; then
    error "PHP n'est pas installé"
    exit 1
fi
info "PHP trouvé: $(php -v | head -n 1)"

if ! command -v composer &> /dev/null; then
    error "Composer n'est pas installé"
    exit 1
fi
info "Composer trouvé"

if ! command -v npm &> /dev/null; then
    error "NPM n'est pas installé"
    exit 1
fi
info "NPM trouvé: $(npm -v)"

# 2. Installer les dépendances
echo ""
echo "2️⃣  Installation des dépendances..."

if [ ! -d "vendor" ]; then
    info "Installation de Composer..."
    composer install
else
    info "Dépendances Composer déjà installées"
fi

if [ ! -d "node_modules" ]; then
    info "Installation de NPM..."
    npm install
else
    info "Dépendances NPM déjà installées"
fi

# 3. Configuration de l'environnement
echo ""
echo "3️⃣  Configuration de l'environnement..."

if [ ! -f ".env" ]; then
    info "Création du fichier .env..."
    cp .env.example .env
    php artisan key:generate
else
    info "Fichier .env déjà existant"
fi

# 4. Base de données
echo ""
echo "4️⃣  Configuration de la base de données..."

info "Exécution des migrations..."
php artisan migrate --force

info "Seeding des badges..."
php artisan db:seed --class=BadgeSeeder

# 5. Cache et assets
echo ""
echo "5️⃣  Optimisation..."

info "Nettoyage du cache..."
php artisan cache:clear
php artisan config:clear
php artisan route:clear

info "Build des assets..."
npm run build

# 6. Tests
echo ""
echo "6️⃣  Exécution des tests..."

if [ "$1" == "--with-tests" ]; then
    info "Exécution des tests..."
    php artisan test
else
    warn "Tests ignorés (utilisez --with-tests pour les exécuter)"
fi

# 7. Résumé
echo ""
echo "=================================="
echo -e "${GREEN}✓ Déploiement terminé avec succès!${NC}"
echo "=================================="
echo ""
echo "📝 Prochaines étapes:"
echo "1. Configurer les variables d'environnement dans .env"
echo "2. Démarrer le serveur: php artisan serve"
echo "3. Démarrer Vite: npm run dev"
echo ""
echo "📚 Documentation:"
echo "- IMPROVEMENTS.md - Améliorations implémentées"
echo "- DEVELOPMENT.md - Guide de développement"
echo "- CHANGELOG.md - Historique des versions"
echo ""
