fetchAndDisplayExamSchedule function

Future<void> fetchAndDisplayExamSchedule(
  1. VtopClient client
)

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');
  }
}