<?php
// api/check_status.php
require_once __DIR__ . '/../config/db.php';
header('Content-Type: application/json');

$sessionId = (int)($_GET['session_id'] ?? 0);

$stmt = $pdo->prepare("
    SELECT ts.status, ts.started_at, ts.extra_minutes, t.duration_minutes, t.status as test_status
    FROM test_sessions ts
    JOIN tests t ON ts.test_id = t.id
    WHERE ts.id = ?
");
$stmt->execute([$sessionId]);
$row = $stmt->fetch();

if (!$row) {
    echo json_encode(['status' => 'not_found']);
    exit;
}

// If master test ended, enforce closure
if ($row['test_status'] === 'closed' && $row['status'] === 'in_progress') {
    $close = $pdo->prepare("UPDATE test_sessions SET status = 'force_closed', submitted_at = NOW() WHERE id = ?");
    $close->execute([$sessionId]);
    $row['status'] = 'force_closed';
}

$startTime = strtotime($row['started_at']);
$totalDurationSeconds = ($row['duration_minutes'] + $row['extra_minutes']) * 60;
$elapsedSeconds = time() - $startTime;
$secondsRemaining = max(0, $totalDurationSeconds - $elapsedSeconds);

// Auto-expire when duration runs out
if ($secondsRemaining <= 0 && $row['status'] === 'in_progress') {
    $close = $pdo->prepare("UPDATE test_sessions SET status = 'timed_out', submitted_at = NOW() WHERE id = ?");
    $close->execute([$sessionId]);
    $row['status'] = 'timed_out';
}

echo json_encode([
    'status' => $row['status'],
    'seconds_remaining' => $secondsRemaining
]);