#!/bin/bash
########################################
# Diagnose Venue API 500 Error
# Checks for common issues
########################################

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"

cd "$PROJECT_ROOT" || exit 1

echo "========================================="
echo "Venue API Diagnostic"
echo "========================================="
echo ""

# 1. Check if venues table exists
echo "1. Checking if 'venues' table exists..."
if php artisan tinker --execute="echo \Schema::hasTable('venues') ? 'YES' : 'NO';" 2>/dev/null | grep -q "YES"; then
    echo "   ✅ venues table exists"
else
    echo "   ❌ venues table DOES NOT exist"
    echo "   → Run migrations: php artisan migrate"
fi
echo ""

# 2. Check if VenueTemplate model can be autoloaded
echo "2. Checking if VenueTemplate model loads..."
if php artisan tinker --execute="new App\Model\VenueTemplate();" >/dev/null 2>&1; then
    echo "   ✅ VenueTemplate model loads correctly"
else
    echo "   ❌ VenueTemplate model CANNOT load"
    echo "   → Run: composer dump-autoload --optimize"
fi
echo ""

# 3. Check if Venue model can be autoloaded
echo "3. Checking if Venue model loads..."
if php artisan tinker --execute="new App\Model\Venue();" >/dev/null 2>&1; then
    echo "   ✅ Venue model loads correctly"
else
    echo "   ❌ Venue model CANNOT load"
    echo "   → Run: composer dump-autoload --optimize"
fi
echo ""

# 4. Try to query venues table
echo "4. Attempting to query venues table..."
VENUE_COUNT=$(php artisan tinker --execute="echo App\Model\Venue::count();" 2>&1 | tail -1)
if [[ "$VENUE_COUNT" =~ ^[0-9]+$ ]]; then
    echo "   ✅ Query successful: $VENUE_COUNT venues found"
else
    echo "   ❌ Query failed:"
    echo "   $VENUE_COUNT"
fi
echo ""

# 5. Check recent Laravel errors
echo "5. Checking recent Laravel errors..."
LOG_FILE="storage/logs/laravel-$(date +%Y-%m-%d).log"
if [ -f "$LOG_FILE" ]; then
    echo "   Recent errors (last 10):"
    grep -E "\.(ERROR|CRITICAL)" "$LOG_FILE" | tail -10 || echo "   No errors found"
else
    echo "   ℹ️  No log file for today"
fi
echo ""

# 6. Test the actual API endpoint
echo "6. Testing /api/venues endpoint..."
if command -v curl >/dev/null 2>&1; then
    RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" "http://localhost:8000/api/venues?page=1&per_page=1")
    if [ "$RESPONSE" = "200" ]; then
        echo "   ✅ API endpoint returns 200 OK"
    else
        echo "   ❌ API endpoint returns: $RESPONSE"
    fi
else
    echo "   ⚠️  curl not available, skipping"
fi
echo ""

echo "========================================="
echo "Diagnostic Complete"
echo "========================================="
