extractGradeNotes function

Future<List<GradeNote>> extractGradeNotes(
  1. BeautifulSoup soup,
  2. Student student
)

Implementation

Future<List<GradeNote>> extractGradeNotes(
    BeautifulSoup soup, Student student) async {
  List<GradeNote> notes = [];
  Bs4Element noteTable =
      soup.find("*", id: 's_m_Content_Content_karakterView_KarakterNoterGrid')!;
  List<Bs4Element> noteRows = noteTable.children[0].children;
  noteRows.removeAt(0);

  for (var noteRow in noteRows) {
    var teamCell = noteRow.children[0].children[0];
    var teamId = teamCell.getAttrValue("data-lectiocontextcard")!;
    var team =
        Team(name: teamCell.text, id: teamId, displayName: teamCell.text);
    var note = noteRow.children[4].text;
    var registeredList = noteRow.children[3].text.split(" - ");
    var registered = registeredNoteFormat.parse(registeredList[0]);
    var subjectCellList = noteRow.children[1].text.split(" - ");
    var gradeType = subjectCellList[0];
    var subjectType =
        subjectCellList[1].substring(0, subjectCellList[1].indexOf("\n"));
    var subjectName = subjectCellList[1].replaceFirst("$subjectType\n", '');
    var subject = Subject(
        name: subjectName,
        type: SubjectTypes.values.firstWhere(
            (element) => element.name.toLowerCase() == subjectType));
    var teacherInitials = registeredList[1];
    var grade = int.tryParse(noteRow.children[2].text);
    notes.add(GradeNote(
        registered: registered,
        team: team,
        subject: subject,
        note: note,
        grade: grade,
        gradeType: gradeType,
        teacherInitials: teacherInitials));
  }
  return notes;
}