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

Download   Open   Back

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

PHP File Manager