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

Download   Open   Back

<?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()]);
}
?>


PHP File Manager