#!/bin/bash

set -e

echo "🚀 Build de l'admin pour déploiement serveur"
echo "============================================"
echo ""

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

# Vérifier qu'on est dans le bon répertoire
if [ ! -f "package.json" ]; then
    echo "❌ Erreur: Exécutez ce script depuis la racine du projet"
    exit 1
fi

# Étape 1: Configuration Next.js pour serveur
echo -e "${BLUE}📦 Étape 1/4: Configuration Next.js${NC}"
if [ -f "next.config.js" ]; then
    cp next.config.js next.config.js.backup
fi
cp next.config.server.js next.config.js
echo -e "${GREEN}✅ Configuration serveur activée${NC}"
echo ""

# Étape 2: Installation des dépendances
echo -e "${BLUE}📦 Étape 2/4: Vérification des dépendances${NC}"
if [ ! -d "node_modules" ]; then
    echo "Installation des dépendances..."
    npm install
else
    echo "Dépendances déjà installées"
fi
echo -e "${GREEN}✅ Dépendances OK${NC}"
echo ""

# Étape 3: Build Next.js
echo -e "${BLUE}📦 Étape 3/4: Build de production${NC}"
rm -rf .next

if npm run build; then
    echo -e "${GREEN}✅ Build réussi${NC}"
else
    echo -e "${YELLOW}⚠️  Build avec avertissements${NC}"
fi
echo ""

# Étape 4: Préparer les fichiers pour le déploiement
echo -e "${BLUE}📦 Étape 4/4: Préparation du déploiement${NC}"

# Créer le dossier de déploiement
mkdir -p deploy
rm -rf deploy/*

# Copier les fichiers nécessaires
echo "Copie des fichiers..."
cp -r .next deploy/
cp -r public deploy/
cp package.json deploy/
cp package-lock.json deploy/ 2>/dev/null || true
cp next.config.server.js deploy/next.config.js

# Créer le dossier data
mkdir -p deploy/data
cp data/.gitkeep deploy/data/ 2>/dev/null || true

# Créer un fichier .env.example
cat > deploy/.env.example << 'EOF'
# Mot de passe admin
ADMIN_PASSWORD=votre_mot_de_passe_securise

# Port (optionnel, par défaut 3000)
PORT=3000
EOF

# Créer un fichier de lancement
cat > deploy/start.sh << 'EOF'
#!/bin/bash
# Script de lancement pour le serveur

# Installer les dépendances production uniquement
npm ci --production

# Démarrer le serveur
npm start
EOF

chmod +x deploy/start.sh

# Créer un fichier README pour le déploiement
cat > deploy/DEPLOY.md << 'EOF'
# Déploiement sur serveur

## Étapes de déploiement

1. **Transférer les fichiers sur le serveur**
   ```bash
   rsync -avz --delete deploy/ user@marama.syoul.fr:/var/www/pension-admin/
   ```

2. **Se connecter au serveur**
   ```bash
   ssh user@marama.syoul.fr
   cd /var/www/pension-admin
   ```

3. **Configurer les variables d'environnement**
   ```bash
   cp .env.example .env
   nano .env  # Modifier ADMIN_PASSWORD
   ```

4. **Installer et démarrer**
   ```bash
   chmod +x start.sh
   ./start.sh
   ```

5. **Avec PM2 (recommandé)**
   ```bash
   npm install -g pm2
   pm2 start npm --name "pension-admin" -- start
   pm2 save
   pm2 startup
   ```

## Configuration Nginx (reverse proxy)

```nginx
server {
    listen 80;
    server_name admin.marama.syoul.fr;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
```

## SSL avec Certbot

```bash
sudo certbot --nginx -d admin.marama.syoul.fr
```
EOF

echo -e "${GREEN}✅ Fichiers prêts dans deploy/${NC}"
echo ""

# Restaurer la config originale
if [ -f "next.config.js.backup" ]; then
    mv next.config.js.backup next.config.js
fi

# Afficher le résumé
DEPLOY_SIZE=$(du -sh deploy | cut -f1)

echo ""
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}✅ BUILD SERVEUR TERMINÉ !${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo -e "📁 Dossier de déploiement: ${BLUE}deploy/${NC}"
echo -e "📊 Taille: ${BLUE}${DEPLOY_SIZE}${NC}"
echo ""
echo -e "${YELLOW}📤 Prochaines étapes:${NC}"
echo ""
echo "1. Transférer sur le serveur:"
echo "   ${BLUE}rsync -avz --delete deploy/ user@marama.syoul.fr:/var/www/pension-admin/${NC}"
echo ""
echo "2. Sur le serveur:"
echo "   ${BLUE}cd /var/www/pension-admin${NC}"
echo "   ${BLUE}./start.sh${NC}"
echo ""
echo "3. Configurer le mot de passe admin:"
echo "   ${BLUE}nano .env${NC}"
echo "   ${BLUE}ADMIN_PASSWORD=votre_mot_de_passe${NC}"
echo ""
echo -e "${YELLOW}📖 Documentation complète: deploy/DEPLOY.md${NC}"
echo ""

