<?php
require_once '../../config/config.php';
header('Content-Type: application/json');

try {
    $examId = $_POST['exam_id'] ?? '';
    $courseId = $_POST['course_id'] ?? '';
    
    if (!$examId) {
        echo json_encode(['success' => false, 'message' => 'Exam ID is required']);
        exit;
    }
    
    if (!$courseId) {
        echo json_encode(['success' => false, 'message' => 'Course ID is required']);
        exit;
    }
    
    // Get exam details
    $examSql = "SELECT e.exam_id, e.exam_name, e.academic_year, e.semester
                FROM exams e
                WHERE e.exam_id = ?";
    
    $examStmt = $pdo->prepare($examSql);
    $examStmt->execute([$examId]);
    $exam = $examStmt->fetch(PDO::FETCH_ASSOC);
    
    if (!$exam) {
        echo json_encode(['success' => false, 'message' => 'Exam not found']);
        exit;
    }
    
    // Get course details
    $courseSql = "SELECT course_id, course_name FROM courses WHERE course_id = ? AND status = 'Active'";
    $courseStmt = $pdo->prepare($courseSql);
    $courseStmt->execute([$courseId]);
    $course = $courseStmt->fetch(PDO::FETCH_ASSOC);
    
    if (!$course) {
        echo json_encode(['success' => false, 'message' => 'Course not found']);
        exit;
    }
    
    // Get subjects for this specific course and exam's semester
    $subjectsSql = "SELECT s.subject_id, s.subject_name, s.subject_code
                    FROM subjects s
                    WHERE s.course_id = ? AND s.semester = ?
                    ORDER BY s.subject_name";
    
    $subjectsStmt = $pdo->prepare($subjectsSql);
    $subjectsStmt->execute([$courseId, $exam['semester']]);
    $subjects = $subjectsStmt->fetchAll(PDO::FETCH_ASSOC);
    
    if (empty($subjects)) {
        echo json_encode(['success' => false, 'message' => "No subjects found for course '{$course['course_name']}' in semester {$exam['semester']}"]);
        exit;
    }
    
    // Check which subjects already exist for this exam
    $existingSql = "SELECT subject_id FROM exam_subjects WHERE exam_id = ?";
    $existingStmt = $pdo->prepare($existingSql);
    $existingStmt->execute([$examId]);
    $existingSubjects = $existingStmt->fetchAll(PDO::FETCH_COLUMN);
    
    $syncedCount = 0;
    $skippedCount = 0;
    $errors = [];
    
    // Insert subjects that don't already exist
    foreach ($subjects as $subject) {
        if (in_array($subject['subject_id'], $existingSubjects)) {
            $skippedCount++;
            continue;
        }
        
        try {
            $insertSql = "INSERT INTO exam_subjects (exam_id, subject_id, max_marks, pass_marks) 
                         VALUES (?, ?, 100, 40)";
            
            $insertStmt = $pdo->prepare($insertSql);
            $insertStmt->execute([$examId, $subject['subject_id']]);
            $syncedCount++;
            
        } catch (Exception $e) {
            $errors[] = "Failed to insert subject {$subject['subject_name']}: " . $e->getMessage();
        }
    }
    
    // Prepare response
    $response = [
        'success' => true,
        'synced_count' => $syncedCount,
        'skipped_count' => $skippedCount,
        'total_subjects' => count($subjects),
        'exam_name' => $exam['exam_name'],
        'course_name' => $course['course_name'],
        'semester' => $exam['semester']
    ];
    
    if (!empty($errors)) {
        $response['warnings'] = $errors;
    }
    
    echo json_encode($response);
    
} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['success' => false, 'message' => 'Database error: ' . $e->getMessage()]);
}
?>
