#!/usr/bin/env bash
# Stops the NMDPRA tankfarm user systemd unit and clears tankfarm ports.

ROOT="$(cd "$(dirname "$0")" && pwd)"
UNIT=tankfarm-platform.service
CONTROL_UNIT=tankfarm-control.service
PID_FILE="$ROOT/.pids"

echo "══════════════════════════════════════════════════════════"
echo "  NMDPRA Central Platform — Stopping All Services"
echo "══════════════════════════════════════════════════════════"

systemctl --user stop "$UNIT" 2>/dev/null && echo "  ✓ Stopped $UNIT" || true
systemctl --user stop "$CONTROL_UNIT" 2>/dev/null && echo "  ✓ Stopped $CONTROL_UNIT" || true
systemctl --user reset-failed "$UNIT" 2>/dev/null || true
systemctl --user reset-failed "$CONTROL_UNIT" 2>/dev/null || true

if [ -f "$PID_FILE" ]; then
  while IFS= read -r pid; do
    if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then
      kill "$pid" 2>/dev/null && echo "  ✓ Stopped PID $pid" || true
      pkill -P "$pid" 2>/dev/null || true
    fi
  done < "$PID_FILE"
  rm -f "$PID_FILE"
fi

for PORT in 6123 6010 6000 6001 6002 6003 6004 5500 3300 8800 5573 4400; do
  PIDS=$(lsof -t -i:"$PORT" 2>/dev/null || true)
  if [ -n "$PIDS" ]; then
    kill $PIDS 2>/dev/null && echo "  ✓ Cleared port $PORT" || true
  fi
done

pkill -f "uvicorn app.main:app --host 0.0.0.0 --port 6004" 2>/dev/null || true
pkill -f "uvicorn app.main:app --host :: --port 6004" 2>/dev/null || true
pkill -f "python run_api.py" 2>/dev/null || true
pkill -f "nmdpr_supply/backend/run_api.py" 2>/dev/null || true
pkill -f "uvicorn app.main:app --host 0.0.0.0 --port 8800" 2>/dev/null || true

echo ""
echo "  All services stopped."
echo "══════════════════════════════════════════════════════════"
