#!/bin/bash

# Test Script: Failed Scan Audit Trail
# Tests that ALL scan attempts (valid and invalid) are recorded to database

set -e

API_URL="${API_URL:-http://localhost:8000/api}"
EVENT_ID="${EVENT_ID:-2}"
SCANNER_ID="${SCANNER_ID:-test-scanner-1}"
SCANNER_LOCATION="${SCANNER_LOCATION:-Gate A}"

echo "=================================================="
echo "Testing Failed Scan Audit Trail"
echo "=================================================="
echo ""
echo "API URL: $API_URL"
echo "Event ID: $EVENT_ID"
echo "Scanner ID: $SCANNER_ID"
echo ""

# Test 1: Completely fake/invalid verification code
echo "TEST 1: Fake/Fraudulent Ticket"
echo "--------------------------------------"
FAKE_CODE="FAKE_TICKET_CODE_123456789"
RESPONSE=$(curl -s -X POST "$API_URL/tickets/scan" \
  -H "Content-Type: application/json" \
  -d "{
    \"verification_code\": \"$FAKE_CODE\",
    \"event_id\": $EVENT_ID,
    \"scanner_id\": \"$SCANNER_ID\",
    \"scan_type\": \"entry\",
    \"scanner_location\": \"$SCANNER_LOCATION\"
  }")

echo "Response: $RESPONSE"
SCAN_ID=$(echo "$RESPONSE" | grep -o '"scan_id":[0-9]*' | cut -d':' -f2 || echo "")
if [ -n "$SCAN_ID" ]; then
    echo "✅ Failed scan recorded with ID: $SCAN_ID"
else
    echo "⚠️  No scan_id in response (check implementation)"
fi
echo ""

# Test 2: Empty/malformed code
echo "TEST 2: Empty Verification Code"
echo "--------------------------------------"
RESPONSE=$(curl -s -X POST "$API_URL/tickets/scan" \
  -H "Content-Type: application/json" \
  -d "{
    \"verification_code\": \"\",
    \"event_id\": $EVENT_ID,
    \"scanner_id\": \"$SCANNER_ID\",
    \"scan_type\": \"entry\",
    \"scanner_location\": \"$SCANNER_LOCATION\"
  }")

echo "Response: $RESPONSE"
echo ""

# Test 3: Invalid format code
echo "TEST 3: Invalid Format Code"
echo "--------------------------------------"
RESPONSE=$(curl -s -X POST "$API_URL/tickets/scan" \
  -H "Content-Type: application/json" \
  -d "{
    \"verification_code\": \"ABC\",
    \"event_id\": $EVENT_ID,
    \"scanner_id\": \"$SCANNER_ID\",
    \"scan_type\": \"entry\",
    \"scanner_location\": \"$SCANNER_LOCATION\"
  }")

echo "Response: $RESPONSE"
echo ""

# Database Check
echo "=================================================="
echo "Database Verification"
echo "=================================================="
echo ""
echo "Checking ticket_validations table for failed scans..."
echo ""

# Note: Adjust database connection as needed
php artisan db:table ticket_validations --where="status!=valid" --limit=10

echo ""
echo "=================================================="
echo "Test Complete!"
echo "=================================================="
echo ""
echo "Expected Results:"
echo "  ✅ All scan attempts (valid + invalid) recorded"
echo "  ✅ Failed scans have status: not_found, invalid, etc."
echo "  ✅ validation_errors field contains failure details"
echo "  ✅ scanner_id, scanner_location captured"
echo "  ✅ Admin dashboard shows failed scans"
echo ""
