upskill-event-manager/wordpress-dev/bin/api-only-debug.sh
bengizmo a82616b6f7 Fix dashboard data inconsistency and enhance test suite with WP API
- Fixed dashboard data class to use consistent post_author queries instead of mixed _EventOrganizerID meta queries
- This resolves the issue where dashboard showed 18 events but 0 tickets/revenue
- Added WordPress API credentials to environment (.env)
- Created comprehensive API debugging utilities (wp-api-debug.sh, wp-api-fix.sh, api-only-debug.sh)
- Enhanced test and deployment suite with WordPress REST API capabilities
- Root cause: get_total_tickets_sold() and get_total_revenue() were using _EventOrganizerID while other methods used post_author

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-22 19:24:18 -03:00

167 lines
No EOL
5.7 KiB
Bash
Executable file

#!/bin/bash
# API-Only Debug Utility (No SSH required)
# Uses only WordPress REST API for debugging
set -e
# Load environment variables
if [ -f "../.env" ]; then
source ../.env
elif [ -f ".env" ]; then
source .env
else
echo "Error: .env file not found"
exit 1
fi
# API Configuration
API_BASE="${WP_API_BASE_URL}"
USERNAME="${WP_API_USERNAME}"
PASSWORD="${WP_API_PASSWORD}"
# Function to make authenticated API calls
api_call() {
local endpoint="$1"
local method="${2:-GET}"
local data="$3"
local auth_header="Authorization: Basic $(echo -n "${USERNAME}:${PASSWORD}" | base64)"
if [ "$method" = "POST" ] && [ -n "$data" ]; then
curl -s -X "$method" \
-H "Content-Type: application/json" \
-H "$auth_header" \
-d "$data" \
"${API_BASE}${endpoint}" 2>/dev/null
else
curl -s -X "$method" \
-H "$auth_header" \
"${API_BASE}${endpoint}" 2>/dev/null
fi
}
echo "=== API-Only Dashboard Debug ==="
echo "Base URL: $API_BASE"
echo ""
# Test API connectivity
echo "1. Testing API connectivity..."
api_result=$(api_call "/wp-json/wp/v2/posts?per_page=1")
if echo "$api_result" | jq -e '.[0].id' > /dev/null 2>&1; then
echo "✓ API connection successful"
else
echo "✗ API connection failed"
echo "Response: $api_result"
exit 1
fi
# Get test_trainer user
echo ""
echo "2. Getting test_trainer user..."
user_data=$(api_call "/wp-json/wp/v2/users?search=test_trainer")
user_id=$(echo "$user_data" | jq -r '.[0].id // empty' 2>/dev/null)
if [ -n "$user_id" ] && [ "$user_id" != "null" ] && [ "$user_id" != "" ]; then
echo "✓ Found test_trainer user: ID $user_id"
user_name=$(echo "$user_data" | jq -r '.[0].name' 2>/dev/null)
user_email=$(echo "$user_data" | jq -r '.[0].email' 2>/dev/null)
echo " Name: $user_name"
echo " Email: $user_email"
else
echo "✗ test_trainer user not found"
echo "User data response: $user_data"
exit 1
fi
# Get ALL events first
echo ""
echo "3. Getting all events for comparison..."
all_events=$(api_call "/wp-json/tribe/events/v1/events?per_page=100")
all_events_count=$(echo "$all_events" | jq -r 'length // 0' 2>/dev/null)
echo "✓ Total events in system: $all_events_count"
# Get events by test_trainer
echo ""
echo "4. Getting events for test_trainer (author=$user_id)..."
events_data=$(api_call "/wp-json/tribe/events/v1/events?author=${user_id}&per_page=100")
events_count=$(echo "$events_data" | jq -r 'length // 0' 2>/dev/null)
echo "✓ Found $events_count events authored by test_trainer"
if [ "$events_count" -gt 0 ]; then
echo ""
echo "Event details:"
echo "$events_data" | jq -r '.[] | " ID: \(.id) - \(.title.rendered) - Status: \(.status)"' 2>/dev/null
# Get first event for detailed analysis
first_event_id=$(echo "$events_data" | jq -r '.[0].id' 2>/dev/null)
echo ""
echo "5. Analyzing first event (ID: $first_event_id)..."
# Try to get tickets (this may fail if endpoint doesn't exist)
tickets_data=$(api_call "/wp-json/tribe/tickets/v1/tickets?event=${first_event_id}" 2>/dev/null)
tickets_count=$(echo "$tickets_data" | jq -r 'length // 0' 2>/dev/null)
if [ "$tickets_count" -gt 0 ]; then
echo " ✓ Tickets available: $tickets_count"
echo "$tickets_data" | jq -r '.[] | " Ticket ID: \(.id) - \(.name) - Price: \(.price)"' 2>/dev/null
else
echo " ✗ No tickets found or tickets API unavailable"
fi
# Try to get attendees
attendees_data=$(api_call "/wp-json/tribe/tickets/v1/attendees?event=${first_event_id}" 2>/dev/null)
attendees_count=$(echo "$attendees_data" | jq -r 'length // 0' 2>/dev/null)
if [ "$attendees_count" -gt 0 ]; then
echo " ✓ Attendees: $attendees_count"
echo "$attendees_data" | jq -r '.[] | " Attendee ID: \(.id) - \(.holder_name) - Status: \(.checked_in)"' 2>/dev/null
else
echo " ✗ No attendees found or attendees API unavailable"
fi
else
echo ""
echo "⚠️ ISSUE IDENTIFIED: Dashboard shows 18 events total but 0 events for test_trainer"
echo " This explains why tickets sold and revenue show 0"
fi
# Analyze all events by author
echo ""
echo "6. Analyzing all events by author..."
if [ "$all_events_count" -gt 0 ]; then
authors=$(echo "$all_events" | jq -r '.[] | .author' 2>/dev/null | sort | uniq -c | sort -nr)
echo "Events by author ID:"
echo "$authors"
# Check if any events have test_trainer as organizer in meta
echo ""
echo "7. Checking for meta data inconsistencies..."
events_with_meta=$(echo "$all_events" | jq -r ".[] | select(.meta._EventOrganizerID == \"$user_id\") | .id" 2>/dev/null)
if [ -n "$events_with_meta" ]; then
echo "✓ Found events with test_trainer as organizer in meta:"
echo "$events_with_meta"
else
echo "✗ No events found with test_trainer as organizer in meta"
fi
fi
echo ""
echo "=== Debug Summary ==="
echo "- Total events in system: $all_events_count"
echo "- Events authored by test_trainer: $events_count"
echo "- test_trainer user ID: $user_id"
if [ "$events_count" -eq 0 ] && [ "$all_events_count" -gt 0 ]; then
echo ""
echo "🔍 ROOT CAUSE IDENTIFIED:"
echo " Dashboard counts events using different queries than author-based queries"
echo " This suggests the dashboard may be using _EventOrganizerID meta instead of post_author"
echo " Or there's a data inconsistency where events exist but aren't properly attributed"
fi
echo ""
echo "=== Next Steps ==="
echo "1. Check dashboard query logic in class-hvac-dashboard-data.php"
echo "2. Verify if events have _EventOrganizerID meta matching post_author"
echo "3. Fix data inconsistency or query logic"