validateRequest(['GET']); if (!$validation['valid']) { http_response_code($validation['http_code']); echo json_encode(['status' => 'error', 'message' => $validation['error']]); exit; } // 2. Validate Input Parameters $studentId = trim($_GET['student_id'] ?? ''); $session = trim($_GET['academic_session'] ?? ''); $term = trim($_GET['term'] ?? ''); // term_of_session $errors = []; if (empty($studentId)) $errors[] = "Student ID is required"; if (empty($session)) $errors[] = "Academic Session is required"; if (empty($term)) $errors[] = "Term is required"; if (!empty($errors)) { http_response_code(400); echo json_encode(['status' => 'error', 'message' => implode(', ', $errors)]); exit; } // 3. Validate Student Exists $studentCheck = $validator->validateStudentExists($studentId); if (!$studentCheck['valid']) { http_response_code($studentCheck['http_code']); echo json_encode(['status' => 'error', 'message' => $studentCheck['error']]); exit; } try { // 4. Fetch Data $invoice = $processor->getTermInvoice($studentId, $session, $term); // 5. Send Response echo json_encode([ 'status' => 'success', 'data' => [ 'student_id' => $studentId, 'academic_session' => $session, 'term' => $term, 'items' => $invoice ] ]); } catch (Exception $e) { http_response_code(500); echo json_encode(['status' => 'error', 'message' => 'Internal server error: ' . $e->getMessage()]); }