getScheduleWeekFuture function
Implementation
Future<List<ScheduleWeek>> getScheduleWeekFuture(String groupLink) async {
List<ScheduleWeek> scheduleWeekList = [];
List<Schedule> scheduleList = [];
int multiply = 0;
final response =
await http.Client().get(Uri.parse(GlobalVariable.URL_MAIN + groupLink));
if (response.statusCode == 200) {
var body = decodeCp1251(response.body);
var documentFullHtmlCode = parseHtmlDocument(body);
var documentTableHtmlCode =
documentFullHtmlCode.querySelectorAll("table.inf").first;
var documentTableElements = documentTableHtmlCode.querySelectorAll("tr");
if (documentTableElements[3].querySelector("tr > td.hd")!.getAttribute("rowspan") == "6") {
multiply = 0;
} else {
multiply = 0;
GlobalVariable.DOUBLE_MEAL = true;
}
int count = documentTableElements.length;
for (int i = 3; i <= count - 1; i += (7+multiply)) {
if (i + (6 + multiply) <= (100)) {
for (int j = 0; j <= 5 + multiply; j++) {
var documentTableSelected = documentTableElements[i + j];
String firstLesson = "",
firstCabinet = "",
firstTeacher = "",
dayParams = "";
String secondLesson = "", secondTeacher = "", secondCabinet = "";
int countDouble =
documentTableSelected.querySelectorAll("tr > td").length;
if (documentTableSelected.querySelector("tr > td.hd") != null)
dayParams =
documentTableSelected.querySelector("tr > td.hd")!.text!;
if (documentTableSelected.querySelector("tr > td.ur > a.z1") != null)
firstLesson =
documentTableSelected.querySelector("tr > td.ur > a.z1")!.text!;
if (documentTableSelected.querySelector("tr > td.ur > a.z2") != null)
firstCabinet =
documentTableSelected.querySelector("tr > td.ur > a.z2")!.text!;
if (documentTableSelected.querySelector("tr > td.ur > a.z3") != null)
firstTeacher =
documentTableSelected.querySelector("tr > td.ur > a.z3")!.text!;
if (isFirstElement(dayParams)) {
if (countDouble == 4) {
if (documentTableSelected
.querySelector("tr > td.ur:last-child > a.z1") !=
null)
secondLesson = documentTableSelected
.querySelector("tr > td.ur:last-child > a.z1")!
.text!;
if (documentTableSelected
.querySelector("tr > td.ur:last-child > a.z2") !=
null)
secondCabinet = documentTableSelected
.querySelector("tr > td.ur:last-child > a.z2")!
.text!;
if (documentTableSelected
.querySelector("tr > td.ur:last-child > a.z3") !=
null)
secondTeacher = documentTableSelected
.querySelector("tr > td.ur:last-child > a.z3")!
.text!;
}
scheduleList.add(new Schedule(
dayParams,
firstLesson,
firstCabinet,
firstTeacher,
"",
true,
countDouble == 4,
false,
"1",
secondLesson,
secondTeacher,
secondCabinet));
} else {
if (countDouble == 3) {
if (documentTableSelected
.querySelector("tr > td.ur:last-child > a.z1") !=
null)
secondLesson = documentTableSelected
.querySelector("tr > td.ur:last-child > a.z1")!
.text!;
if (documentTableSelected
.querySelector("tr > td.ur:last-child > a.z2") !=
null)
secondCabinet = documentTableSelected
.querySelector("tr > td.ur:last-child > a.z2")!
.text!;
if (documentTableSelected
.querySelector("tr > td.ur:last-child > a.z3") !=
null)
secondTeacher = documentTableSelected
.querySelector("tr > td.ur:last-child > a.z3")!
.text!;
}
if (j == 1) {
scheduleList.add(new Schedule(
dayParams,
firstLesson,
firstCabinet,
firstTeacher,
"",
false,
countDouble == 3,
false,
dayParams,
secondLesson,
secondTeacher,
secondCabinet));
scheduleList.add(new Schedule(
dayParams,
"Обеденный перерыв",
"гулйяте",
"желудок",
"",
false,
false,
true,
dayParams,
secondLesson,
secondTeacher,
secondCabinet));
} else {
scheduleList.add(new Schedule(
dayParams,
firstLesson,
firstCabinet,
firstTeacher,
"",
false,
countDouble == 3,
false,
dayParams,
secondLesson,
secondTeacher,
secondCabinet));
}
if (j == 4 && multiply == 1) {
scheduleList.add(new Schedule(
dayParams,
firstLesson,
firstCabinet,
firstTeacher,
"",
false,
countDouble == 3,
false,
dayParams,
secondLesson,
secondTeacher,
secondCabinet));
scheduleList.add(new Schedule(
dayParams,
"Обеденный перерыв",
"гулйяте",
"желудок",
"",
false,
false,
true,
dayParams,
secondLesson,
secondTeacher,
secondCabinet));
}
}
}
scheduleWeekList.add(ScheduleWeek(scheduleList));
scheduleList = [];
}
}
}
return scheduleWeekList;
}