fetchAndDisplayExamSchedule function
Implementation
Future<void> fetchAndDisplayExamSchedule(VtopClient client) async {
try {
final semesters = await fetchSemesters(client: client);
if (semesters.semesters.isEmpty) {
print('No semesters found.');
return;
}
print('Available semesters:');
for (int i = 0; i < semesters.semesters.length; i++) {
print('${i + 1}. ${semesters.semesters[i].name}');
}
stdout.write('Select semester (1-${semesters.semesters.length}): ');
final choice = int.tryParse(stdin.readLineSync() ?? '') ?? 0;
if (choice < 1 || choice > semesters.semesters.length) {
print('Invalid choice.\n');
return;
}
final selectedSemester = semesters.semesters[choice - 1];
print('Fetching exam schedule for ${selectedSemester.name}...');
final examSchedule = await fetchExamShedule(
client: client,
semesterId: selectedSemester.id,
);
print('✓ Found ${examSchedule.length} exam schedules:');
print('\n=== EXAM SCHEDULE JSON ===');
final examScheduleJson =
examSchedule.map((schedule) => schedule.toJson()).toList();
print(const JsonEncoder.withIndent(' ').convert(examScheduleJson));
print('');
} catch (e) {
print('Error fetching exam schedule: $e\n');
}
}