File "semesters-by-course.php"
Full path: /home2/santhos2/public_html/bharath-coe.firstmatrix.in.net/api/helper/semesters-by-course.php
File size: 3.02 KiB (3094 bytes)
MIME-type: text/x-php
Charset: utf-8
<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit(); }
try {
require_once '../../config/db.php';
$course_id = isset($_GET['course_id']) ? (int)$_GET['course_id'] : null;
if (!$course_id) { throw new Exception('Course ID is required'); }
// Optional filters for enrollment-based semesters
$academic_year_id = isset($_GET['academic_year_id']) && $_GET['academic_year_id'] !== '' ? (int)$_GET['academic_year_id'] : null;
$college_id = isset($_GET['college_id']) && $_GET['college_id'] !== '' ? (int)$_GET['college_id'] : null;
$batch_id = isset($_GET['batch_id']) && $_GET['batch_id'] !== '' ? (int)$_GET['batch_id'] : null;
$semesters = [];
// If AY, College, Course, Batch are provided → return semesters from enrollments only
if ($academic_year_id && $college_id && $batch_id) {
$q = "SELECT DISTINCT se.semester
FROM student_enrollments se
JOIN students s ON s.student_id = se.student_id
WHERE se.course_id = :course_id
AND se.academic_year_id = :ay
AND se.batch_id = :batch
AND s.college_id = :college
ORDER BY se.semester";
$st = $pdo->prepare($q);
$st->execute([
':course_id' => $course_id,
':ay' => $academic_year_id,
':batch' => $batch_id,
':college' => $college_id
]);
$rows = $st->fetchAll(PDO::FETCH_COLUMN, 0);
foreach ($rows as $sem) {
$n = (int)$sem;
if ($n > 0) { $semesters[] = ['semester' => $n, 'semester_label' => "Semester $n"]; }
}
// Always respond with enrollments-based result (even if empty)
echo json_encode(['status' => 'success', 'data' => $semesters, 'source' => 'enrollments']);
exit;
}
// Fallback: generate 1..total_semesters from course
$stmt = $pdo->prepare("SELECT course_id, course_name, total_semesters FROM courses WHERE course_id = ? AND status = 'Active'");
$stmt->execute([$course_id]);
$course = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$course) { throw new Exception('Course not found'); }
$total_semesters = (int)$course['total_semesters'];
for ($i = 1; $i <= $total_semesters; $i++) { $semesters[] = ['semester' => $i, 'semester_label' => "Semester $i"]; }
echo json_encode([
'status' => 'success',
'data' => $semesters,
'course_info' => [
'course_id' => $course['course_id'],
'course_name' => $course['course_name'],
'total_semesters' => $course['total_semesters']
],
'message' => 'Semesters retrieved successfully',
'source' => 'course'
]);
} catch (Throwable $e) {
http_response_code(400);
echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
}
?>