#!/bin/bash

# E2E Test: Waitlist System
# Tests complete flow: public submission → admin view

API_BASE="http://localhost:8000/api"
EVENT_ID=1
TEST_EMAIL="test-waitlist-$(date +%s)@example.com"

echo "=========================================="
echo "E2E TEST: Waitlist System"
echo "=========================================="
echo ""

# Test 1: Public Waitlist Submission
echo "Test 1: Submit waitlist request..."
RESPONSE=$(curl -s -X POST "${API_BASE}/waitlist" \
  -H "Content-Type: application/json" \
  -d "{
    \"event_id\": ${EVENT_ID},
    \"full_name\": \"Test User E2E\",
    \"email\": \"${TEST_EMAIL}\",
    \"phone\": \"+1234567890\",
    \"seat_preferences\": \"Front row, VIP section\",
    \"reason_notes\": \"Birthday celebration - automated E2E test\"
  }")

echo "Response: $RESPONSE"
echo ""

# Extract submission ID
SUBMISSION_ID=$(echo "$RESPONSE" | grep -o '"id":[0-9]*' | grep -o '[0-9]*')
SUCCESS=$(echo "$RESPONSE" | grep -o '"success":true' | wc -l)

if [ "$SUCCESS" -eq 1 ] && [ -n "$SUBMISSION_ID" ]; then
    echo "✅ Test 1 PASSED: Submission created with ID: $SUBMISSION_ID"
else
    echo "❌ Test 1 FAILED: Submission failed"
    exit 1
fi
echo ""

# Test 2: Duplicate Prevention
echo "Test 2: Attempt duplicate submission..."
DUP_RESPONSE=$(curl -s -X POST "${API_BASE}/waitlist" \
  -H "Content-Type: application/json" \
  -d "{
    \"event_id\": ${EVENT_ID},
    \"full_name\": \"Test User E2E\",
    \"email\": \"${TEST_EMAIL}\",
    \"phone\": \"+1234567890\"
  }")

echo "Response: $DUP_RESPONSE"
DUPLICATE_ERROR=$(echo "$DUP_RESPONSE" | grep -o 'already joined' | wc -l)

if [ "$DUPLICATE_ERROR" -eq 1 ]; then
    echo "✅ Test 2 PASSED: Duplicate prevention working"
else
    echo "❌ Test 2 FAILED: Duplicate was not prevented"
    exit 1
fi
echo ""

# Test 3: Admin View (requires JWT token)
echo "Test 3: Verify submission appears in admin list..."
echo "⚠️  Skipping admin test - requires JWT authentication"
echo "   Manual verification: Login to admin dashboard at http://localhost:3001/waitlist"
echo ""

# Test 4: Database Verification
echo "Test 4: Verify database record..."
source scripts/_db-helper.sh
DB_CHECK=$(db_query "SELECT COUNT(*) FROM waitlist_submissions WHERE email = '${TEST_EMAIL}' AND event_id = ${EVENT_ID}")

if [ "$DB_CHECK" -eq 1 ]; then
    echo "✅ Test 4 PASSED: Database record exists"

    # Show record details
    echo ""
    echo "Database Record:"
    db_table "SELECT id, event_id, full_name, email, phone, seat_preferences, created_at
              FROM waitlist_submissions
              WHERE email = '${TEST_EMAIL}'
              LIMIT 1"
else
    echo "❌ Test 4 FAILED: Database record not found (found: $DB_CHECK records)"
    exit 1
fi
echo ""

echo "=========================================="
echo "E2E TEST SUMMARY"
echo "=========================================="
echo "✅ Public submission: PASSED"
echo "✅ Duplicate prevention: PASSED"
echo "⚠️  Admin view: MANUAL VERIFICATION REQUIRED"
echo "✅ Database integrity: PASSED"
echo ""
echo "Next Steps:"
echo "1. Open admin dashboard: http://localhost:3001/waitlist"
echo "2. Login with admin credentials"
echo "3. Verify submission appears in table:"
echo "   - Email: ${TEST_EMAIL}"
echo "   - Name: Test User E2E"
echo "   - Seat Preferences: Front row, VIP section"
echo "   - Reason: Birthday celebration - automated E2E test"
echo ""
echo "Test email for cleanup: ${TEST_EMAIL}"
echo "Submission ID: ${SUBMISSION_ID}"
