#!/bin/bash
set -e

echo "=================================================="
echo "DERIOX GUARD - OFFLINE QUEUE LOCAL FILE TEST M9.8"
echo "=================================================="
echo "This creates local JSONL queue test files and reports metadata to Guard."
echo "It does NOT replay queued events, does NOT start service/cron,"
echo "does NOT scan cameras and does NOT send camera passwords, streams or media."
echo ""

CONF="/etc/deriox-guard/agent.env"
GUARD_URL="https://guard.deriox.ro"
AGENT_NAME="mini-pc-pilot-01"
GATEWAY_UUID=""
QUEUE_DIR="/var/lib/deriox-guard/queue/outbox"

if [ -f "$CONF" ]; then
  # shellcheck disable=SC1090
  source "$CONF" || true
  if [ -n "${DERIOX_GUARD_URL:-}" ]; then GUARD_URL="$DERIOX_GUARD_URL"; fi
  if [ -n "${DERIOX_AGENT_NAME:-}" ]; then AGENT_NAME="$DERIOX_AGENT_NAME"; fi
  if [ -n "${DERIOX_GATEWAY_UUID:-}" ]; then GATEWAY_UUID="$DERIOX_GATEWAY_UUID"; fi
  if [ -n "${DERIOX_QUEUE_DIR:-}" ]; then QUEUE_DIR="$DERIOX_QUEUE_DIR/outbox"; fi
fi

HOST_NAME="$(hostname 2>/dev/null || echo unknown)"
MACHINE_ID="$(cat /etc/machine-id 2>/dev/null || hostname)"
MACHINE_HASH="$(printf "%s" "$MACHINE_ID" | sha256sum | awk '{print $1}')"

if [ -z "$GATEWAY_UUID" ]; then
  GATEWAY_UUID="manual-${HOST_NAME}-$(printf "%s" "$MACHINE_HASH" | awk '{print substr($1,1,16)}')"
fi

mkdir -p "$QUEUE_DIR"
chmod 700 "$(dirname "$QUEUE_DIR")" "$QUEUE_DIR" 2>/dev/null || true

STAMP="$(date +%Y%m%d_%H%M%S)"
QUEUE_FILE="$QUEUE_DIR/deriox-guard-queue-test-$STAMP.jsonl"

cat > "$QUEUE_FILE" <<EOF
{"event":"offline_queue_test","version":"m9.8","gateway_uuid":"$GATEWAY_UUID","agent_name":"$AGENT_NAME","host_name":"$HOST_NAME","sequence":1,"camera_access":0,"stream":0,"media":0,"production":0}
{"event":"offline_queue_test","version":"m9.8","gateway_uuid":"$GATEWAY_UUID","agent_name":"$AGENT_NAME","host_name":"$HOST_NAME","sequence":2,"camera_access":0,"stream":0,"media":0,"production":0}
{"event":"offline_queue_test","version":"m9.8","gateway_uuid":"$GATEWAY_UUID","agent_name":"$AGENT_NAME","host_name":"$HOST_NAME","sequence":3,"camera_access":0,"stream":0,"media":0,"production":0}
EOF

chmod 600 "$QUEUE_FILE" 2>/dev/null || true

TOTAL_FILES="$(find "$QUEUE_DIR" -maxdepth 1 -type f -name "*.jsonl" 2>/dev/null | wc -l | tr -d ' ')"
TOTAL_BYTES="$(find "$QUEUE_DIR" -maxdepth 1 -type f -name "*.jsonl" -printf '%s\n' 2>/dev/null | awk '{s+=$1} END{print s+0}')"
CREATED_EVENTS="$(wc -l < "$QUEUE_FILE" | tr -d ' ')"
CREATED_BYTES="$(wc -c < "$QUEUE_FILE" | tr -d ' ')"

PAYLOAD=$(cat <<JSON
{
  "gateway_uuid": "$GATEWAY_UUID",
  "agent_name": "$AGENT_NAME",
  "agent_version": "m9.8-offline-queue-local-file-test",
  "host_name": "$HOST_NAME",
  "queue_dir": "$QUEUE_DIR",
  "created_file_count": 1,
  "created_event_count": $CREATED_EVENTS,
  "created_file_bytes": $CREATED_BYTES,
  "total_queue_files": $TOTAL_FILES,
  "total_queue_bytes": $TOTAL_BYTES,
  "manual_run": 1,
  "local_file_test_only": 1,
  "queue_replay_enabled": 0,
  "service_autostart_enabled": 0,
  "cron_enabled": 0,
  "production_go_live_enabled": 0,
  "real_camera_access_enabled": 0,
  "camera_discovery_enabled": 0,
  "stream_link_enabled": 0,
  "media_enabled": 0,
  "billing_enabled": 0
}
JSON
)

echo "Gateway UUID: $GATEWAY_UUID"
echo "Queue file:   $QUEUE_FILE"
echo "Events:       $CREATED_EVENTS"
echo "Total files:  $TOTAL_FILES"
echo "Endpoint:     $GUARD_URL/api/gateway/mini-pc/offline-queue/report"
echo ""

curl -k -sS \
  -H "Content-Type: application/json" \
  -X POST "$GUARD_URL/api/gateway/mini-pc/offline-queue/report" \
  --data "$PAYLOAD"

echo ""
echo "M9.8 offline queue local file test complete."
echo "No replay was performed."