#!/usr/bin/env bash
# Seed a confirmed payment_session for the test customer and fire a general blast.
# Used by Maestro flows that drive the mitra side and need a customer's request to
# arrive without running a second app.
#
# Reads from .maestro/config.yaml env (BACKEND_URL, TEST_CUSTOMER_ID, TEST_CUSTOMER_JWT).

set -euo pipefail

: "${BACKEND_URL:?BACKEND_URL must be set in .maestro/config.yaml}"
: "${TEST_CUSTOMER_JWT:?TEST_CUSTOMER_JWT must be set in .maestro/config.yaml}"

# Step 1: create a payment session (paid tier, 30 minutes)
echo "Creating payment session..."
ps_response=$(curl -fsSL -X POST "$BACKEND_URL/api/client/payment-sessions" \
  -H "Authorization: Bearer $TEST_CUSTOMER_JWT" \
  -H "Content-Type: application/json" \
  -d '{"duration_minutes": 30}')
payment_session_id=$(echo "$ps_response" | jq -r '.data.id')
echo "  payment_session_id=$payment_session_id"

# Step 2: confirm the payment session
echo "Confirming payment session..."
curl -fsSL -X POST "$BACKEND_URL/api/client/payment-sessions/$payment_session_id/confirm" \
  -H "Authorization: Bearer $TEST_CUSTOMER_JWT" \
  -H "Content-Type: application/json" \
  -d '{}' > /dev/null

# Step 3: fire the chat request (general blast)
echo "Firing general blast..."
curl -fsSL -X POST "$BACKEND_URL/api/client/chat-requests" \
  -H "Authorization: Bearer $TEST_CUSTOMER_JWT" \
  -H "Content-Type: application/json" \
  -d "{\"payment_session_id\":\"$payment_session_id\",\"topic_sensitivity\":\"regular\"}" > /dev/null

# Persist payment_session_id so follow-up scripts (e.g. customer_cancel_latest_blast.sh)
# can read it without a peek-payment endpoint. /tmp lifetime is sufficient
# for one test run.
echo "$payment_session_id" > /tmp/halobestie_last_blast_payment_session_id
echo "OK — blast fired. Mitra should receive the WS event within ~1s."
