#!/bin/bash
# Phase 1 Bulk Email System - Live Testing Script
# Run on dev server after deployment

TOKEN="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2Rldi5nbG9iYWxnYWxhc2hvdy5jb20vYXBpL2FkbWluL2xvZ2luIiwiaWF0IjoxNzYxMjM0OTAwLCJleHAiOjE3NjE0MDc3MDAsIm5iZiI6MTc2MTIzNDkwMCwianRpIjoiWUtZb1A0a3V5UnRWaThtNCIsInN1YiI6IjEiLCJwcnYiOiI0NmNkMzE5MjJhOWMyM2U5NTZhM2VmM2EwYjdkZTgwNjZhNjU2NWIyIiwidHlwZSI6ImFkbWluIiwicm9sZSI6InN1cGVyX2FkbWluIiwicGVybWlzc2lvbnMiOlsiZXZlbnRzLnZpZXciLCJldmVudHMuY3JlYXRlIiwiZXZlbnRzLmVkaXQiLCJldmVudHMuZGVsZXRlIiwiZXZlbnRzLm1hbmFnZV92ZW51ZXMiLCJvcmRlcnMudmlldyIsIm9yZGVycy5lZGl0Iiwib3JkZXJzLnJlZnVuZCIsIm9yZGVycy5leHBvcnQiLCJvcmRlcnMuc3RhdGlzdGljcyIsInNlYXRzLnZpZXdfYXZhaWxhYmlsaXR5Iiwic2VhdHMuc2hhZG93X3NvbGQiLCJzZWF0cy5ibG9jayIsInNlYXRzLnJlbGVhc2UiLCJzZWF0cy5idWxrX29wZXJhdGlvbnMiLCJhZG1pbnMudmlldyIsImFkbWlucy5jcmVhdGUiLCJhZG1pbnMuZWRpdCIsImFkbWlucy5kZWxldGUiLCJhZG1pbnMubWFuYWdlX3JvbGVzIiwic2V0dGluZ3MuYmFubmVycyIsInNldHRpbmdzLmNvbnRlbnQiLCJzZXR0aW5ncy5lbWFpbF90ZW1wbGF0ZXMiLCJzZXR0aW5ncy5zeXN0ZW1fY29uZmlnIiwiZmluYW5jZS52aWV3X3JldmVudWUiLCJmaW5hbmNlLnZpZXdfZGV0YWlsZWRfcmVwb3J0cyIsImZpbmFuY2UuZXhwb3J0X3JlcG9ydHMiLCJjdXN0b21lcnMudmlldyIsImN1c3RvbWVycy5lZGl0IiwiY3VzdG9tZXJzLmV4cG9ydCIsInN5c3RlbS52aWV3X2xvZ3MiLCJzeXN0ZW0udmlld19tZXRyaWNzIiwic3lzdGVtLmVtZXJnZW5jeV9jb250cm9scyJdfQ.B0nXG925Hwz2nhPJ3YrdNXS4rtkwTkrAepGkJOOo0gc"
API_URL="https://dev.globalgalashow.com/api/account-setup"

echo "═══════════════════════════════════════════════════════════════════"
echo "  Phase 1 Bulk Email System - Live Testing"
echo "═══════════════════════════════════════════════════════════════════"
echo ""

# Test 1: Single Invitation
echo "🧪 Test 1: Single Invitation"
echo "────────────────────────────────────────────────────────────────────"
cat > /tmp/test-campaign-1.csv << 'EOF'
email,name
test1@example.com,Test User 1
EOF

echo "Uploading CSV with 1 invitation..."
response=$(curl -s -X POST "$API_URL/import" \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@/tmp/test-campaign-1.csv" \
  -F "campaign_name=Test Campaign 1" \
  -F "send_emails=true")
echo "$response"
if command -v jq &> /dev/null; then
    echo "$response" | jq .
fi

echo ""
echo "⏱  Waiting 5 seconds for queue to process..."
sleep 5

echo ""
echo "📊 Checking queue status..."
./scripts/queue-monitor.sh once

echo ""
echo "✅ Test 1 Complete - Press Enter to continue to Test 2..."
read

# Test 2: Multiple Invitations
echo ""
echo "🧪 Test 2: Multiple Invitations (5 emails)"
echo "────────────────────────────────────────────────────────────────────"
cat > /tmp/test-campaign-2.csv << 'EOF'
email,name
bulk1@example.com,Bulk User 1
bulk2@example.com,Bulk User 2
bulk3@example.com,Bulk User 3
bulk4@example.com,Bulk User 4
bulk5@example.com,Bulk User 5
EOF

echo "Uploading CSV with 5 invitations..."
curl -s -X POST "$API_URL/import" \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@/tmp/test-campaign-2.csv" \
  -F "campaign_name=Test Campaign 2" \
  -F "send_emails=true" | jq .

echo ""
echo "⏱  Waiting 10 seconds for queue to process..."
sleep 10

echo ""
echo "📊 Checking queue status..."
./scripts/queue-monitor.sh once

echo ""
echo "✅ Test 2 Complete - Press Enter to continue to Test 3..."
read

# Test 3: Duplicate Detection
echo ""
echo "🧪 Test 3: Duplicate Detection"
echo "────────────────────────────────────────────────────────────────────"
cat > /tmp/test-campaign-3.csv << 'EOF'
email,name
duplicate@example.com,Duplicate User
duplicate@example.com,Duplicate User Again
EOF

echo "Uploading CSV with duplicate emails..."
curl -s -X POST "$API_URL/import" \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@/tmp/test-campaign-3.csv" \
  -F "campaign_name=Duplicate Test" | jq .

echo ""
echo "Expected: Should only create 1 invitation (duplicate detection)"
echo ""
echo "✅ Test 3 Complete - Press Enter to continue to Test 4..."
read

# Test 4: Invalid Email Detection
echo ""
echo "🧪 Test 4: Invalid Email Detection"
echo "────────────────────────────────────────────────────────────────────"
cat > /tmp/test-campaign-4.csv << 'EOF'
email,name
valid@example.com,Valid User
invalid-email,Invalid User
another-invalid,Another Invalid
EOF

echo "Uploading CSV with invalid emails..."
curl -s -X POST "$API_URL/import" \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@/tmp/test-campaign-4.csv" \
  -F "campaign_name=Invalid Email Test" | jq .

echo ""
echo "Expected: Should only create 1 invitation (2 invalid emails)"
echo ""
echo "✅ Test 4 Complete - Press Enter to continue to Test 5..."
read

# Test 5: Campaign Retrieval
echo ""
echo "🧪 Test 5: Campaign Retrieval"
echo "────────────────────────────────────────────────────────────────────"
echo "Fetching all campaigns..."
curl -s -X GET "$API_URL/campaigns" \
  -H "Authorization: Bearer $TOKEN" | jq .

echo ""
echo ""
echo "✅ Test 5 Complete - Press Enter to continue to Test 6..."
read

# Test 6: Large Campaign (50 emails)
echo ""
echo "🧪 Test 6: Large Campaign (50 emails)"
echo "────────────────────────────────────────────────────────────────────"
cat > /tmp/test-campaign-large.csv << 'EOF'
email,name
EOF

# Generate 50 test emails
for i in {1..50}; do
    echo "bulktest${i}@example.com,Bulk Test User ${i}" >> /tmp/test-campaign-large.csv
done

echo "Uploading CSV with 50 invitations..."
curl -s -X POST "$API_URL/import" \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@/tmp/test-campaign-large.csv" \
  -F "campaign_name=Large Campaign Test" \
  -F "send_emails=true" | jq .

echo ""
echo "⏱  Waiting 15 seconds for queue to start processing..."
sleep 15

echo ""
echo "📊 Checking queue status (should see bulk queue activity)..."
./scripts/queue-monitor.sh once

echo ""
echo "✅ Test 6 Complete - Press Enter to continue to Test 7..."
read

# Test 7: Campaign Stats
echo ""
echo "🧪 Test 7: Campaign Statistics"
echo "────────────────────────────────────────────────────────────────────"
echo "Fetching final campaign statistics..."
curl -s -X GET "$API_URL/campaigns" \
  -H "Authorization: Bearer $TOKEN" | jq .

echo ""
echo ""
echo "═══════════════════════════════════════════════════════════════════"
echo "  All Tests Complete!"
echo "═══════════════════════════════════════════════════════════════════"
echo ""
echo "Summary:"
echo "  ✅ Test 1: Single invitation"
echo "  ✅ Test 2: Multiple invitations (5)"
echo "  ✅ Test 3: Duplicate detection"
echo "  ✅ Test 4: Invalid email detection"
echo "  ✅ Test 5: Campaign retrieval"
echo "  ✅ Test 6: Large campaign (50)"
echo "  ✅ Test 7: Campaign statistics"
echo ""
echo "Check Mailpit to verify emails were queued:"
echo "  - Open: https://dev.globalgalashow.com:8025 (if Mailpit configured)"
echo "  - Or check logs: tail -f storage/logs/laravel-*.log"
echo ""
