#!/bin/bash

##################################################
# Script de déploiement LOCAL - CHAPS
# Usage: ./deploy-local.sh
##################################################

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

echo "=========================================="
echo "🚀 Déploiement LOCAL - CHAPS"
echo "=========================================="

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

# Fonction pour afficher les messages
log_info() {
    echo -e "${GREEN}[INFO]${NC} $1"
}

log_warn() {
    echo -e "${YELLOW}[WARN]${NC} $1"
}

log_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# Vérifier les prérequis
log_info "Vérification des prérequis..."
command -v php >/dev/null 2>&1 || { log_error "PHP n'est pas installé. Aborting."; exit 1; }
command -v composer >/dev/null 2>&1 || { log_error "Composer n'est pas installé. Aborting."; exit 1; }
command -v npm >/dev/null 2>&1 || { log_error "NPM n'est pas installé. Aborting."; exit 1; }

# Étape 1: Git Pull
log_info "📥 Récupération des dernières modifications..."
git pull origin master || { log_error "Git pull a échoué"; exit 1; }

# Étape 2: Mise à jour des dépendances Composer
log_info "📦 Mise à jour des dépendances PHP (Composer)..."
composer install --no-interaction --prefer-dist --optimize-autoloader

# Étape 3: Mise à jour des dépendances NPM
log_info "📦 Mise à jour des dépendances NPM..."
npm install

# Étape 4: Compilation des assets (Tailwind CSS)
log_info "🎨 Compilation de Tailwind CSS..."
npm run build:css

# Étape 5: Vérification du fichier .env
if [ ! -f .env ]; then
    log_warn "Fichier .env manquant, copie depuis .env.example..."
    cp .env.example .env
    php artisan key:generate
else
    log_info "✅ Fichier .env trouvé"
fi

# Étape 6: Cache Laravel
log_info "🗑️  Nettoyage des caches Laravel..."
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear

log_info "📝 Mise en cache de la configuration..."
php artisan config:cache
php artisan route:cache

# Étape 7: Migrations de base de données
read -p "Voulez-vous exécuter les migrations ? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    log_info "🗄️  Exécution des migrations..."
    php artisan migrate --force
else
    log_warn "⏭️  Migrations ignorées"
fi

# Étape 8: Permissions
log_info "🔐 Ajustement des permissions..."
chmod -R 775 storage bootstrap/cache
chmod -R 775 public/css

# Étape 9: Optimisation
log_info "⚡ Optimisation de l'application..."
php artisan optimize

echo ""
log_info "=========================================="
log_info "✅ Déploiement LOCAL terminé avec succès!"
log_info "=========================================="
echo ""
log_info "📊 Informations utiles:"
echo "   - URL locale: http://localhost:8000"
echo "   - Lancer le serveur: php artisan serve"
echo "   - Voir les logs: tail -f storage/logs/laravel.log"
echo ""
