#!/usr/bin/env bash
# تشغيل منصة ERP Microservices باستمرار عبر PM2
set -euo pipefail

PROJECT_DIR="/home/sayedkhattab/public_html/erp.sayedkhattab.com"
GATEWAY_PORT=3400

echo "==> ERP Microservices — بدء التشغيل"

cd "$PROJECT_DIR"
mkdir -p logs

if [ ! -d node_modules ]; then
  echo "==> تثبيت الحزم (monorepo)..."
  npm install --omit=dev
fi

echo "==> تنفيذ migrations..."
npm run migrate

echo "==> ترحيل البيانات من القاعدة القديمة (إن وُجدت)..."
npm run migrate:legacy

if pm2 describe erp-api &>/dev/null; then
  echo "==> إيقاف erp-api القديم..."
  pm2 delete erp-api || true
fi

if command -v ss &>/dev/null; then
  for OLD_PID in $(ss -tlnp 2>/dev/null | grep ":${GATEWAY_PORT}" | grep -oP 'pid=\K[0-9]+' || true); do
    PM2_PID=$(pm2 pid erp-gateway 2>/dev/null || echo "")
    if [ "$OLD_PID" != "$PM2_PID" ] && [ -n "$OLD_PID" ]; then
      kill "$OLD_PID" 2>/dev/null || true
    fi
  done
  sleep 1
fi

export PATH="/usr/bin:$HOME/.local/bin:$PATH"

echo "==> تشغيل/إعادة تشغيل جميع الخدمات..."
pm2 startOrRestart "$PROJECT_DIR/ecosystem.config.cjs"
pm2 save

echo ""
echo "✓ تم تشغيل منصة ERP Microservices ($(pm2 jlist 2>/dev/null | node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>console.log(JSON.parse(d).filter(p=>p.name.startsWith('erp-')).length))" 2>/dev/null || echo 21) خدمة)"
pm2 status | grep 'erp-'
echo ""
echo "الموقع:  https://erp.sayedkhattab.com"
echo "Gateway: https://erp.sayedkhattab.com/api/health"
echo "الموديولات: https://erp.sayedkhattab.com/api/core/modules?category=restaurant"
echo ""
echo "=== وحدات ERP العامة ==="
echo "  /api/accounting    /api/inventory    /api/sales"
echo "  /api/purchasing    /api/hr           /api/manufacturing"
echo ""
echo "=== وحدات المطاعم (فروع + تصنيع) ==="
echo "  /api/branches         — إدارة الفروع والامتياز"
echo "  /api/menu             — القائمة والأسعار"
echo "  /api/pos              — نقاط البيع"
echo "  /api/recipes          — الوصفات والمكونات"
echo "  /api/central-kitchen  — المطبخ المركزي"
echo "  /api/kitchen          — عمليات المطبخ (KDS)"
echo "  /api/delivery         — التوصيل والطلبات"
echo "  /api/reservations     — الحجوزات والطاولات"
echo "  /api/quality          — الجودة وسلامة الغذاء"
echo "  /api/waste            — الهدر والفاقد"
echo "  /api/loyalty          — برنامج الولاء"
echo "  /api/transfers        — نقل المخزون بين الفروع"
