<?php
require_once '../../config/config.php';
require_once '../helper/audit_log.php';
header('Content-Type: application/json');

try {
    // Only JSON body
    $input = json_decode(file_get_contents('php://input'), true);
    $ids = isset($input['ids']) && is_array($input['ids']) ? array_values(array_filter($input['ids'])) : [];
    if (empty($ids)) {
        echo json_encode(['success' => false, 'message' => 'No ids provided']);
        exit;
    }

    // Sanitize to integers
    $ids = array_map('intval', $ids);
    $placeholders = implode(',', array_fill(0, count($ids), '?'));

    $pdo->beginTransaction();

    // Delete related timetable rows first
    $delTt = $pdo->prepare("DELETE FROM exam_timetable WHERE exam_subject_id IN ($placeholders)");
    $delTt->execute($ids);
    $deletedTimetable = $delTt->rowCount();

    // Then delete exam_subjects
    $delEs = $pdo->prepare("DELETE FROM exam_subjects WHERE exam_subject_id IN ($placeholders)");
    $delEs->execute($ids);
    $deletedEs = $delEs->rowCount();

    $pdo->commit();

    write_audit_log($pdo, [
        'module' => 'Exam Management',
        'action' => 'delete',
        'entity_table' => 'exam_subjects',
        'entity_id' => 'bulk_delete_' . time(),
        'after_data' => [
            'ids' => $ids,
            'deleted_exam_subjects' => $deletedEs,
            'deleted_timetable' => $deletedTimetable,
        ],
        'message' => "Bulk delete completed"
    ]);

    echo json_encode([
        'success' => true,
        'deleted_exam_subjects' => $deletedEs,
        'deleted_timetable' => $deletedTimetable
    ]);
} catch (Throwable $e) {
    if ($pdo && $pdo->inTransaction()) { $pdo->rollBack(); }
    write_audit_log($pdo, [
        'module' => 'Exam Management',
        'action' => 'delete',
        'entity_table' => 'exam_subjects',
        'entity_id' => 'bulk_delete_error_' . time(),
        'after_data' => [ 'error' => $e->getMessage() ],
        'message' => 'Bulk delete failed'
    ]);
    http_response_code(500);
    echo json_encode(['success' => false, 'message' => 'Error: ' . $e->getMessage()]);
}
?>


