#!/bin/bash

# ============================================================
# EQUIPMENT SLIP NOTIFICATION ENDPOINTS TEST SUITE
# ============================================================

echo "🧪 TESTING EQUIPMENT SLIP NOTIFICATION ENDPOINTS"
echo "=================================================="
echo ""

# Configuration
API_BASE="http://localhost/slipstream"
PILOT_TOKEN="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NSwibmFtZSI6IkpvaG4gRG9lIiwicm9sZSI6InBpbG90IiwiZW1haWwiOiJqb2huQGFpcmxpbmUuY29tIiwiaWF0IjoxNzM5MDA5NTAwfQ.C8-jPRxaJVT7Nx6eFZ6xQjhv-nB1sVzrW2yV6u4Z_qY"

echo "📝 TEST SETUP"
echo "============"
echo "API Base: $API_BASE"
echo "Using recorded pilot token (ID: 5)"
echo ""

# ============================================================
# TEST A: Create Equipment Slip Notification
# ============================================================
echo "TEST A: Equipment Slip CREATED Notification"
echo "============================================="
echo ""

TEST_A_PAYLOAD='{
  "equipment_slip_data": {
    "equipment_slip_id": 1,
    "equipment": ["ASU", "GPU"]
  },
  "flight_data": {
    "flight_number": "CA001",
    "origin": "LFPG",
    "destination": "EGLL",
    "flight_date": "2026-02-07"
  }
}'

echo "📤 Request Payload:"
echo "$TEST_A_PAYLOAD" | jq '.'
echo ""

echo "🔄 Sending to: POST $API_BASE/notifications/equipment-slip-created.php"
RESPONSE_A=$(curl -s -w "\n%{http_code}" -X POST \
  "$API_BASE/notifications/equipment-slip-created.php" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PILOT_TOKEN" \
  -d "$TEST_A_PAYLOAD")

HTTP_CODE_A=$(echo "$RESPONSE_A" | tail -n 1)
BODY_A=$(echo "$RESPONSE_A" | head -n -1)

echo "📥 Response (HTTP $HTTP_CODE_A):"
echo "$BODY_A" | jq '.'
echo ""

# Validate response
if echo "$BODY_A" | jq -e '.success == true' > /dev/null 2>&1; then
    RECIPIENTS_A=$(echo "$BODY_A" | jq -r '.recipients_count')
    TYPE_A=$(echo "$BODY_A" | jq -r '.push_result.response[0].data.type // "NOT_FOUND"')
    echo "✅ TEST A PASSED"
    echo "   - success: true"
    echo "   - recipients_count: $RECIPIENTS_A"
    echo "   - notification type in data: $TYPE_A"
else
    echo "❌ TEST A FAILED"
fi
echo ""
echo ""

# ============================================================
# TEST B: Update Equipment Slip Notification
# ============================================================
echo "TEST B: Equipment Slip UPDATED Notification"
echo "============================================"
echo ""

TEST_B_PAYLOAD='{
  "equipment_slip_data": {
    "equipment_slip_id": 1,
    "equipment": ["ASU", "GPU", "ACU"]
  },
  "flight_data": {
    "flight_number": "CA001",
    "departure": "LFPG",
    "arrival": "EGLL",
    "flight_date": "2026-02-07"
  }
}'

echo "📤 Request Payload (using departure/arrival convention):"
echo "$TEST_B_PAYLOAD" | jq '.'
echo ""

echo "🔄 Sending to: POST $API_BASE/notifications/equipment-slip-updated.php"
RESPONSE_B=$(curl -s -w "\n%{http_code}" -X POST \
  "$API_BASE/notifications/equipment-slip-updated.php" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PILOT_TOKEN" \
  -d "$TEST_B_PAYLOAD")

HTTP_CODE_B=$(echo "$RESPONSE_B" | tail -n 1)
BODY_B=$(echo "$RESPONSE_B" | head -n -1)

echo "📥 Response (HTTP $HTTP_CODE_B):"
echo "$BODY_B" | jq '.'
echo ""

# Validate response
if echo "$BODY_B" | jq -e '.success == true' > /dev/null 2>&1; then
    RECIPIENTS_B=$(echo "$BODY_B" | jq -r '.recipients_count')
    TYPE_B=$(echo "$BODY_B" | jq -r '.push_result.response[0].data.type // "NOT_FOUND"')
    echo "✅ TEST B PASSED"
    echo "   - success: true"
    echo "   - recipients_count: $RECIPIENTS_B"
    echo "   - notification type in data: $TYPE_B"
    echo "   - convention support: departure/arrival ✅"
else
    echo "❌ TEST B FAILED"
fi
echo ""
echo ""

# ============================================================
# TEST C: No Recipients Available
# ============================================================
echo "TEST C: No Recipients for Airport"
echo "=================================="
echo ""

TEST_C_PAYLOAD='{
  "equipment_slip_data": {
    "equipment_slip_id": 99,
    "equipment": ["GPU"]
  },
  "flight_data": {
    "flight_number": "XX000",
    "origin": "ZZZZ",
    "destination": "YYYY",
    "flight_date": "2026-02-07"
  }
}'

echo "📤 Request Payload (airports with no ground staff):"
echo "$TEST_C_PAYLOAD" | jq '.'
echo ""

echo "🔄 Sending to: POST $API_BASE/notifications/equipment-slip-created.php"
RESPONSE_C=$(curl -s -w "\n%{http_code}" -X POST \
  "$API_BASE/notifications/equipment-slip-created.php" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PILOT_TOKEN" \
  -d "$TEST_C_PAYLOAD")

HTTP_CODE_C=$(echo "$RESPONSE_C" | tail -n 1)
BODY_C=$(echo "$RESPONSE_C" | head -n -1)

echo "📥 Response (HTTP $HTTP_CODE_C):"
echo "$BODY_C" | jq '.'
echo ""

# Validate response
if echo "$BODY_C" | jq -e '.success == true' > /dev/null 2>&1; then
    RECIPIENTS_C=$(echo "$BODY_C" | jq -r '.recipients_count')
    MESSAGE_C=$(echo "$BODY_C" | jq -r '.message')
    echo "✅ TEST C PASSED"
    echo "   - success: true (best-effort)"
    echo "   - recipients_count: $RECIPIENTS_C"
    echo "   - message: $MESSAGE_C"
else
    echo "❌ TEST C FAILED"
fi
echo ""
echo ""

# ============================================================
# SUMMARY
# ============================================================
echo "📊 TEST SUMMARY"
echo "==============="
echo ""
echo "1) Endpoint existence:"
echo "   ✅ /notifications/equipment-slip-created.php (HTTP $HTTP_CODE_A)"
echo "   ✅ /notifications/equipment-slip-updated.php (HTTP $HTTP_CODE_B)"
echo ""

echo "2) Payload conventions:"
echo "   ✅ origin/destination supported (Test A)"
echo "   ✅ departure/arrival supported (Test B)"
echo ""

echo "3) Targeting:"
echo "   ✅ Recipients targeted: $RECIPIENTS_A (Test A), $RECIPIENTS_B (Test B)"
echo "   ✅ No recipients case handled: $RECIPIENTS_C (Test C)"
echo ""

echo "4) Notification types in data:"
echo "   Type in Test A: $TYPE_A"
echo "   Type in Test B: $TYPE_B"
echo ""

echo "🎯 NEXT STEPS: Check server logs and database for:"
echo "   - Logger entries with notification_type, recipients_count, airport_targeted"
echo "   - Stored notifications in the notifications table"
echo "   - Push API response codes"
echo ""
