#!/bin/bash

# Script de deploiement serveur (Linux)
# Usage: ./deploy-server.sh

set -e  # Arreter le script en cas d'erreur

echo "========================================"
echo "  Deploiement Serveur - Messager"
echo "========================================"
echo ""

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

# Verification du repertoire
if [ ! -f "artisan" ]; then
    echo -e "${RED}ERREUR: Ce script doit etre execute depuis le dossier racine du projet${NC}"
    exit 1
fi

# Fonction pour afficher les etapes
step() {
    echo -e "${GREEN}$1${NC}"
}

error() {
    echo -e "${RED}ERREUR: $1${NC}"
    exit 1
}

warning() {
    echo -e "${YELLOW}ATTENTION: $1${NC}"
}

# Mettre l'application en mode maintenance
step "[1/10] Mise en mode maintenance..."
php artisan down --retry=60 || warning "Impossible de mettre en mode maintenance"
echo ""

# Git pull
step "[2/10] Recuperation des dernieres modifications..."
git pull || error "Git pull a echoue"
echo ""

# Corriger les permissions git si necessaire
if [ -d ".git/objects" ]; then
    step "[3/10] Verification des permissions Git..."
    sudo chown -R $USER:$USER .git 2>/dev/null || true
    echo ""
fi

# Composer install
step "[4/10] Installation des dependances PHP..."
composer install --no-interaction --prefer-dist --optimize-autoloader --no-dev || error "Composer install a echoue"
echo ""

# NPM - Skip (assets doivent etre buildés en local et pushés via Git)
step "[5/10] Verification des assets buildés..."
if [ ! -d "public/build" ]; then
    warning "Le dossier public/build n'existe pas!"
    warning "Les assets doivent etre buildés en local (npm run build) et pushés via Git"
    warning "Ou transférés via: scp -r public/build estair@serveur:/path/to/messager/public/"
else
    echo "Assets buildés trouvés dans public/build"
fi
echo ""

# Clear cache
step "[6/10] Nettoyage du cache..."
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
echo ""

# Run migrations
step "[7/10] Execution des migrations..."
php artisan migrate --force || error "Migrations echouees"
echo ""

# Optimize
step "[8/10] Optimisation de l'application..."
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimize
echo ""

# Redemarrage des services
step "[9/10] Redemarrage des services..."

# Redemarrage des workers queue
php artisan queue:restart

# Optionnel: Redemarrer PHP-FPM (decommentez si necessaire)
# sudo systemctl restart php8.2-fpm

# Optionnel: Redemarrer Supervisor (decommentez si vous utilisez Supervisor)
# sudo supervisorctl reread
# sudo supervisorctl update
# sudo supervisorctl restart messager-worker:*

echo ""

# Retirer le mode maintenance
step "Sortie du mode maintenance..."
php artisan up
echo ""

echo "========================================"
echo -e "${GREEN}  Deploiement serveur termine avec succes!${NC}"
echo "========================================"
