Path : /home/vishqocm/pcib.in/student/ajax/
File Upload :
Current File : /home/vishqocm/pcib.in/student/ajax/get_exam_status.php

<?php
// Start session
session_start();

// Include database configuration
require_once '../../config/database.php';

// Check if user is logged in and has student role
if (!isset($_SESSION['user_id']) || $_SESSION['role'] !== 'student') {
    header('Content-Type: application/json');
    echo json_encode(['success' => false, 'message' => 'Unauthorized access']);
    exit;
}

$user_id = $_SESSION['user_id'];

// Check if exam ID is provided
if (!isset($_GET['exam_id']) || empty($_GET['exam_id'])) {
    header('Content-Type: application/json');
    echo json_encode(['success' => false, 'message' => 'Exam ID is required']);
    exit;
}

$exam_id = intval($_GET['exam_id']);

// Get exam details and student exam status
$exam_query = "SELECT es.*, c.title as course_title,
              (SELECT COUNT(*) FROM exam_question_maps WHERE exam_id = es.id) as question_count,
              se.id as student_exam_id, se.status as exam_status, 
              se.start_time, se.end_time, se.total_score, se.percentage
              FROM exam_schedules es
              JOIN courses c ON es.course_id = c.id
              LEFT JOIN student_exams se ON es.id = se.exam_id AND se.user_id = ?
              WHERE es.id = ?";
$stmt = $conn->prepare($exam_query);
$stmt->bind_param("ii", $user_id, $exam_id);
$stmt->execute();
$exam_result = $stmt->get_result();

if ($exam_result->num_rows === 0) {
    header('Content-Type: application/json');
    echo json_encode(['success' => false, 'message' => 'Exam not found']);
    exit;
}

$exam = $exam_result->fetch_assoc();

// Check if there's a student exam record
$has_started = !empty($exam['student_exam_id']);
$is_completed = $has_started && in_array($exam['exam_status'], ['completed', 'graded', 'passed', 'failed']);
$is_in_progress = $has_started && $exam['exam_status'] === 'in_progress';

// Check if exam is currently active
$current_date = date('Y-m-d');
$current_time = date('H:i:s');
$is_active = false;

if ($exam['exam_date'] == $current_date) {
    if ($current_time >= $exam['start_time'] && $current_time <= $exam['end_time']) {
        $is_active = true;
    }
}

// Calculate time remaining if in progress
$time_remaining = 0;
if ($is_in_progress && $exam['start_time']) {
    $start_time = new DateTime($exam['start_time']);
    $current_time = new DateTime();
    $time_elapsed = $current_time->getTimestamp() - $start_time->getTimestamp();
    $time_remaining = max(0, $exam['duration_minutes'] * 60 - $time_elapsed);
}

// Prepare response data
$response = [
    'success' => true,
    'exam_id' => $exam_id,
    'exam_title' => $exam['title'],
    'course_title' => $exam['course_title'],
    'has_started' => $has_started,
    'is_completed' => $is_completed,
    'is_in_progress' => $is_in_progress,
    'is_active' => $is_active,
    'time_remaining' => $time_remaining,
    'exam_date' => $exam['exam_date'],
    'start_time' => $exam['start_time'],
    'end_time' => $exam['end_time'],
    'duration_minutes' => $exam['duration_minutes'],
    'question_count' => $exam['question_count'],
    'status' => $exam['exam_status'] ?? 'not_started',
];

// Add result data if completed
if ($is_completed) {
    $response['total_score'] = $exam['total_score'];
    $response['percentage'] = $exam['percentage'];
    $response['passing_percentage'] = $exam['passing_percentage'];
    $response['passed'] = $exam['percentage'] >= $exam['passing_percentage'];
    
    // Check if certificate exists
    $cert_query = "SELECT id FROM exam_certificates 
                  WHERE student_exam_id = ?";
    $stmt = $conn->prepare($cert_query);
    $stmt->bind_param("i", $exam['student_exam_id']);
    $stmt->execute();
    $cert_result = $stmt->get_result();
    
    $response['has_certificate'] = $cert_result->num_rows > 0;
    if ($response['has_certificate']) {
        $cert = $cert_result->fetch_assoc();
        $response['certificate_id'] = $cert['id'];
    }
}

// Return JSON response
header('Content-Type: application/json');
echo json_encode($response);
exit;