File "create.php"
Full path: /home2/santhos2/public_html/bharath-coe.firstmatrix.in.net/api/pattern_questions/create.php
File size: 3.53 KiB (3610 bytes)
MIME-type: text/x-php
Charset: utf-8
<?php
require_once '../../config/config.php';
require_once '../helper/audit_log.php';
header('Content-Type: application/json');
try {
$section_id = (int)($_POST['section_id'] ?? 0);
$question_no = trim((string)($_POST['question_no'] ?? ''));
$question_type = trim((string)($_POST['question_type'] ?? 'numeric'));
$cognitive_level = trim((string)($_POST['cognitive_level'] ?? 'Remembering'));
$question_text = trim((string)($_POST['question_text'] ?? ''));
$co_codes_in = $_POST['co_codes'] ?? ($_POST['co_code'] ?? '');
$po_codes_in = $_POST['po_codes'] ?? '';
if ($section_id <= 0 || $question_no === '') {
echo json_encode(['status'=>'error','message'=>'section_id and question_no required']);
exit;
}
// Optional defaults per requirement
if ($question_text === '') { $question_text = '-'; }
// Normalize co_codes -> JSON (DB CHECK requires valid JSON). Default to [] when empty
$co_codes = $co_codes_in;
if (is_array($co_codes)) {
$co_codes = array_values(array_filter(array_map('trim', $co_codes)));
$co_codes = json_encode($co_codes, JSON_UNESCAPED_UNICODE);
} else {
$co_codes = trim((string)$co_codes);
if ($co_codes === '') {
$co_codes = json_encode([], JSON_UNESCAPED_UNICODE);
} else if ($co_codes[0] === '[') {
// assume already JSON
$co_codes = $co_codes;
} else {
$co_codes = json_encode(array_map('trim', explode(',', $co_codes)), JSON_UNESCAPED_UNICODE);
}
}
// Normalize po_codes -> JSON. Default to ["NA"] when empty
$po_codes = $po_codes_in;
if (is_array($po_codes)) {
$po_codes = array_values(array_filter(array_map('trim', $po_codes)));
if (empty($po_codes)) { $po_codes = ['NA']; }
$po_codes = json_encode($po_codes, JSON_UNESCAPED_UNICODE);
} else {
$po_codes = trim((string)$po_codes);
if ($po_codes === '') {
$po_codes = json_encode(['NA'], JSON_UNESCAPED_UNICODE);
} else if ($po_codes[0] === '[') {
$po_codes = $po_codes;
} else {
$po_codes = json_encode(array_map('trim', explode(',', $po_codes)), JSON_UNESCAPED_UNICODE);
}
}
// Ensure section exists
$chk = $pdo->prepare('SELECT section_id FROM pattern_sections WHERE section_id = ?');
$chk->execute([$section_id]);
if (!$chk->fetch()) { echo json_encode(['status'=>'error','message'=>'Invalid section']); exit; }
// Resolve subject via question_patterns (kept for potential validation use)
$cochk = $pdo->prepare('SELECT qp.subject_id FROM pattern_sections ps JOIN question_patterns qp ON ps.pattern_id = qp.pattern_id WHERE ps.section_id = ?');
$cochk->execute([$section_id]);
$row = $cochk->fetch(PDO::FETCH_ASSOC);
if (!$row) { echo json_encode(['status'=>'error','message'=>'Unable to resolve subject for section']); exit; }
// Insert question
$stmt = $pdo->prepare('INSERT INTO pattern_questions (section_id, question_no, question_type, cognitive_level, question_text, co_codes, po_codes) VALUES (?,?,?,?,?,?,?)');
$stmt->execute([$section_id, $question_no, $question_type, $cognitive_level, $question_text, $co_codes, $po_codes]);
$id = (int)$pdo->lastInsertId();
write_audit_log($pdo, [
'module' => 'Question Papers',
'action' => 'create',
'entity_table' => 'pattern_questions',
'entity_id' => $id,
'after_data' => compact('id','section_id','question_no','question_type','cognitive_level','question_text','co_codes','po_codes'),
'message' => 'Pattern question created'
]);
echo json_encode(['status'=>'success','message'=>'Question added','data'=>['id'=>$id]]);
} catch (Throwable $e) {
http_response_code(500);
echo json_encode(['status'=>'error','message'=>$e->getMessage()]);
}
?>