#!/bin/bash
# CRON Diagnostics and Test Script
# Place this in: scripts/test-auto-close-cron.sh
# Run: bash scripts/test-auto-close-cron.sh

set -e

BASE_DIR="/home/niceflat/api"
LOG_FILE="${BASE_DIR}/logs/auto-close-test.log"

echo "================================================" | tee -a "$LOG_FILE"
echo "Flight Auto-Close CRON Diagnostic Test" | tee -a "$LOG_FILE"
echo "Started: $(date)" | tee -a "$LOG_FILE"
echo "================================================" | tee -a "$LOG_FILE"

# Test 1: Check PHP installation
echo -e "\n[TEST 1] Checking PHP installation..." | tee -a "$LOG_FILE"
if command -v php &> /dev/null; then
    PHP_VERSION=$(php -v | head -n1)
    echo "✓ PHP found: $PHP_VERSION" | tee -a "$LOG_FILE"
else
    echo "✗ PHP not found" | tee -a "$LOG_FILE"
    exit 1
fi

# Test 2: Check database connectivity
echo -e "\n[TEST 2] Testing database connection..." | tee -a "$LOG_FILE"
php << 'EOF' 2>&1 | tee -a "$LOG_FILE"
<?php
error_reporting(E_ALL);
require_once '/home/niceflat/api/config.php';
try {
    if ($pdo->getAttribute(PDO::ATTR_CONNECTION_STATUS)) {
        echo "✓ Database connection successful\n";
        echo "  Timeout setting: " . $pdo->getAttribute(PDO::ATTR_TIMEOUT) . "s\n";
    }
} catch (Exception $e) {
    echo "✗ Database connection failed: " . $e->getMessage() . "\n";
    exit(1);
}
?>
EOF

# Test 3: Check for open flights
echo -e "\n[TEST 3] Checking for open flights in database..." | tee -a "$LOG_FILE"
php << 'EOF' 2>&1 | tee -a "$LOG_FILE"
<?php
error_reporting(E_ALL);
require_once '/home/niceflat/api/config.php';
try {
    $stmt = $pdo->query("SELECT COUNT(*) as count FROM flights WHERE flight_status = 'open'");
    $result = $stmt->fetch();
    echo "✓ Open flights: " . $result['count'] . "\n";
} catch (Exception $e) {
    echo "✗ Query failed: " . $e->getMessage() . "\n";
    exit(1);
}
?>
EOF

# Test 4: Verify auto-close script exists
echo -e "\n[TEST 4] Checking auto-close script..." | tee -a "$LOG_FILE"
if [ -f "${BASE_DIR}/flight/auto-close.php" ]; then
    echo "✓ Script exists: ${BASE_DIR}/flight/auto-close.php" | tee -a "$LOG_FILE"
    echo "  Size: $(stat -f%z "${BASE_DIR}/flight/auto-close.php" 2>/dev/null || stat -c%s "${BASE_DIR}/flight/auto-close.php") bytes" | tee -a "$LOG_FILE"
else
    echo "✗ Script not found" | tee -a "$LOG_FILE"
    exit 1
fi

# Test 5: Check log directory permissions
echo -e "\n[TEST 5] Checking log directory permissions..." | tee -a "$LOG_FILE"
LOG_DIR="${BASE_DIR}/logs"
if [ -w "$LOG_DIR" ]; then
    echo "✓ Log directory writable: $LOG_DIR" | tee -a "$LOG_FILE"
else
    echo "⚠ Log directory may not be writable" | tee -a "$LOG_FILE"
    mkdir -p "$LOG_DIR" 2>/dev/null || true
fi

# Test 6: Execute auto-close with today's token
echo -e "\n[TEST 6] Executing auto-close script (local)..." | tee -a "$LOG_FILE"
TOKEN=$(date +slipstream-auto-close-%Y-%m-%d)
php "${BASE_DIR}/flight/auto-close.php?token=${TOKEN}" 2>&1 | tee -a "$LOG_FILE"

# Test 7: Check auto-close logs
echo -e "\n[TEST 7] Latest auto-close log entries:" | tee -a "$LOG_FILE"
if [ -f "${LOG_DIR}/flight-auto-close.log" ]; then
    tail -10 "${LOG_DIR}/flight-auto-close.log" | tee -a "$LOG_FILE"
else
    echo "ℹ No auto-close log yet" | tee -a "$LOG_FILE"
fi

echo -e "\n================================================" | tee -a "$LOG_FILE"
echo "Diagnostic Test Completed: $(date)" | tee -a "$LOG_FILE"
echo "================================================" | tee -a "$LOG_FILE"
