use scraper::{Html, Selector};
use super::super::types::*;
pub fn parse_attendance(html: String) -> Vec<AttendanceRecord> {
let document = Html::parse_document(&html);
let rows_selector = Selector::parse("tr").unwrap();
let mut courses: Vec<AttendanceRecord> = Vec::new();
for row in document.select(&rows_selector).skip(1) {
let cells: Vec<_> = row.select(&Selector::parse("td").unwrap()).collect();
if cells.len() > 10 {
let cell9 = cells[10].html();
let infocell = cell9.split(",").collect::<Vec<_>>();
let course_id: String = infocell[2].to_string().replace("'", "");
let course_type: String = infocell[3].split(")").collect::<Vec<_>>()[0]
.to_string()
.replace("'", "");
let course = AttendanceRecord {
serial: cells[0]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
category: cells[1]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
course_name: cells[2]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
course_code: cells[3]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
faculty_detail: cells[4]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
classes_attended: cells[5]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
total_classes: cells[6]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
attendance_percentage: cells[7]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
attendence_fat_cat: cells[8]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
debar_status: cells[9]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
course_id,
course_type,
};
courses.push(course);
}
}
courses
}
pub fn parse_full_attendance(html: String) -> Vec<AttendanceDetailRecord> {
let document = Html::parse_document(&html);
let rows_selector = Selector::parse("tr").unwrap();
let mut attendance_lists: Vec<AttendanceDetailRecord> = Vec::new();
for row in document.select(&rows_selector).skip(3) {
let cells: Vec<_> = row.select(&Selector::parse("td").unwrap()).collect();
if cells.len() > 5 {
let attendance_list = AttendanceDetailRecord {
serial: cells[0]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
date: cells[1]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
slot: cells[2]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
day_time: cells[3]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
status: cells[4]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
remark: cells[5]
.text()
.collect::<Vec<_>>()
.join("")
.trim()
.replace("\t", "")
.replace("\n", ""),
};
attendance_lists.push(attendance_list);
}
}
attendance_lists
}