#!/bin/bash
# ============================================================
# Icavi Gestion - Script d'installation (Laravel 11)
# Usage: bash setup.sh
# ============================================================

GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m'
set -e

echo ""
echo "╔══════════════════════════════════════════╗"
echo "║     Icavi Gestion — Setup Laravel 11     ║"
echo "╚══════════════════════════════════════════╝"
echo ""

# PHP check
echo -n "🔍 PHP >= 8.2 ... "
php -r "exit(version_compare(PHP_VERSION,'8.2','>=') ? 0 : 1);" 2>/dev/null \
  && echo -e "${GREEN}OK ($(php -r 'echo PHP_VERSION;'))${NC}" \
  || { echo -e "${RED}ERREUR: PHP 8.2+ requis (Laravel 11)${NC}"; exit 1; }

# Composer check
echo -n "🔍 Composer ... "
command -v composer &>/dev/null \
  && echo -e "${GREEN}OK${NC}" \
  || { echo -e "${RED}ERREUR: Composer non trouvé → https://getcomposer.org${NC}"; exit 1; }

# Install deps
echo ""
echo "📦 Installation des dépendances (composer install)..."
composer install --no-dev --optimize-autoloader --no-interaction --no-progress
echo -e "${GREEN}✓ Dépendances installées${NC}"

# .env
[ ! -f ".env" ] && cp .env.example .env && echo -e "${GREEN}✓ .env créé${NC}" || echo "✓ .env existant conservé"

# App key
echo "🔑 Génération de la clé application..."
php artisan key:generate
echo -e "${GREEN}✓ Clé générée${NC}"

# Permissions
echo "🔒 Permissions storage/..."
chmod -R 755 storage/ bootstrap/cache/ 2>/dev/null || true
chmod -R 777 storage/framework/ storage/logs/ 2>/dev/null || true
echo -e "${GREEN}✓ Permissions OK${NC}"

# Dossier GED (stockage privé des documents)
echo "📁 Création du dossier GED..."
mkdir -p storage/app/ged
chmod -R 755 storage/app/ged
echo -e "${GREEN}✓ Dossier storage/app/ged créé${NC}"

# Storage link (pour les assets publics)
echo "🔗 Lien symbolique storage..."
php artisan storage:link 2>/dev/null || echo "  (lien déjà existant)"
echo -e "${GREEN}✓ Storage link OK${NC}"

# Database
echo ""
echo -e "${YELLOW}Base de données :${NC}"
echo "  1) Lancer migrate + seed automatiquement"
echo "  2) Passer (manuel)"
echo -n "Choix [1/2] : "
read -r choice

if [ "$choice" = "1" ]; then
    php artisan migrate --force
    php artisan db:seed --force
    echo -e "${GREEN}✓ Base initialisée${NC}"
    echo ""
    echo -e "${GREEN}┌─────────────────────────────────┐${NC}"
    echo -e "${GREEN}│  Compte admin :                  │${NC}"
    echo -e "${GREEN}│  Email : admin@icavi.com         │${NC}"
    echo -e "${GREEN}│  MDP   : Admin@2024!             │${NC}"
    echo -e "${GREEN}│  ⚠  Changez-le immédiatement !  │${NC}"
    echo -e "${GREEN}└─────────────────────────────────┘${NC}"
else
    echo -e "${YELLOW}⚠  Lancez manuellement : php artisan migrate --force && php artisan db:seed --force${NC}"
fi

# Optimize
echo ""
echo "⚡ Optimisation production..."
php artisan config:cache
php artisan route:cache
php artisan view:cache
echo -e "${GREEN}✓ Caches générés${NC}"

echo ""
echo -e "${GREEN}╔══════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║    ✅  Installation terminée !           ║${NC}"
echo -e "${GREEN}╚══════════════════════════════════════════╝${NC}"
echo ""
echo "📖 Voir INSTALL.md pour le déploiement OVH"
