#!/usr/bin/env bash
set -euo pipefail

# ICAVI Gestion - préparation locale / OVH
# IMPORTANT : ce script NE fait jamais migrate:fresh et ne modifie pas une base existante.

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$ROOT_DIR"

GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; NC='\033[0m'
fail(){ echo -e "${RED}ERREUR: $*${NC}" >&2; exit 1; }
ok(){ echo -e "${GREEN}✓ $*${NC}"; }

command -v php >/dev/null 2>&1 || fail "PHP non trouvé. Requis : PHP 8.2+ avec PDO MySQL, mbstring, DOM, XML, cURL."
php -r "exit(version_compare(PHP_VERSION,'8.2','>=') ? 0 : 1);" || fail "PHP 8.2+ requis. Version détectée: $(php -r 'echo PHP_VERSION;')"

required=(ctype curl dom fileinfo filter hash mbstring openssl pcre pdo pdo_mysql session tokenizer xml)
for ext in "${required[@]}"; do
  php -m | grep -qi "^${ext}$" || fail "Extension PHP manquante: ${ext}"
done
ok "PHP $(php -r 'echo PHP_VERSION;') + extensions requises"

command -v composer >/dev/null 2>&1 || fail "Composer non trouvé. Installez Composer puis relancez."
ok "Composer $(composer --version | sed 's/^Composer version //')"

[ -f .env ] || { cp .env.example .env; ok ".env créé depuis .env.example"; }
composer install --no-interaction --prefer-dist --optimize-autoloader
ok "Dépendances Composer installées"

if grep -q '^APP_KEY=$' .env; then
  php artisan key:generate --force
  ok "APP_KEY générée"
else
  ok "APP_KEY existante conservée"
fi

mkdir -p storage/app/ged storage/framework/cache storage/framework/data storage/framework/sessions storage/framework/views storage/logs bootstrap/cache
chmod -R u+rwX storage bootstrap/cache 2>/dev/null || true
php artisan storage:link >/dev/null 2>&1 || true
ok "Stockage GED et lien public préparés"

cat <<'EOF'

Base de données : aucune migration automatique n'est lancée par ce script.
1) Importez database/import/icaviss3.sql dans la base existante si nécessaire.
2) Configurez DB_* dans .env.
3) Vérifiez la connexion avec: php artisan migrate:status
4) Sur une base existante, lancez: php artisan migrate --force
   NE PAS utiliser migrate:fresh sur une base contenant des données métier.
EOF

ok "Préparation terminée. Voir docs/INSTALL_LOCAL.md et docs/DEPLOIEMENT_OVH.md"
