Added timetable field ZusatzInfo (additional information)
This commit is contained in:
parent
228bd4e46e
commit
57150ce7f1
@ -5,7 +5,7 @@ use chrono::Local;
|
||||
use diesel::{Insertable, Queryable};
|
||||
use quickxml_to_serde::{xml_string_to_json, Config};
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use serde_json::json;
|
||||
use serde_json::{json, Map};
|
||||
|
||||
#[derive(Queryable, Serialize, Insertable, Deserialize)]
|
||||
#[table_name = "timetable"]
|
||||
@ -20,6 +20,7 @@ pub struct Timetable {
|
||||
pub struct TimetableData {
|
||||
pub count: usize,
|
||||
pub courses: Vec<rocket::serde::json::Value>,
|
||||
pub info: String,
|
||||
}
|
||||
|
||||
async fn get_today_timetable_xml() -> serde_json::value::Value {
|
||||
@ -115,9 +116,28 @@ pub async fn get_today_timetable(_conn: DbConn) -> Vec<Timetable> {
|
||||
dbg!("Failed: {:?}", &i);
|
||||
}
|
||||
}
|
||||
let empty_list = serde_json::Value::Array(Vec::new());
|
||||
let empty_obj = serde_json::Value::Object(Map::new());
|
||||
let info_list = xml
|
||||
.as_object()
|
||||
.unwrap()
|
||||
.get("VpMobil")
|
||||
.unwrap()
|
||||
.get("ZusatzInfo")
|
||||
.unwrap_or(&empty_obj)
|
||||
.get("ZiZeile")
|
||||
.unwrap_or(&empty_list)
|
||||
.as_array()
|
||||
.unwrap();
|
||||
let mut info = String::new();
|
||||
for item in info_list {
|
||||
info.push_str(item.as_str().unwrap_or("\r\n"));
|
||||
info.push_str("\r\n");
|
||||
}
|
||||
let response = TimetableData {
|
||||
count: plan.len(),
|
||||
courses,
|
||||
info,
|
||||
};
|
||||
let timetable_element = Timetable {
|
||||
date: String::from(
|
||||
@ -188,9 +208,28 @@ pub async fn get_timetable(_conn: DbConn) -> Vec<Timetable> {
|
||||
dbg!("Failed: {:?}", &i);
|
||||
}
|
||||
}
|
||||
let empty_list = serde_json::Value::Array(Vec::new());
|
||||
let empty_obj = serde_json::Value::Object(Map::new());
|
||||
let info_list = xml
|
||||
.as_object()
|
||||
.unwrap()
|
||||
.get("VpMobil")
|
||||
.unwrap()
|
||||
.get("ZusatzInfo")
|
||||
.unwrap_or(&empty_obj)
|
||||
.get("ZiZeile")
|
||||
.unwrap_or(&empty_list)
|
||||
.as_array()
|
||||
.unwrap();
|
||||
let mut info = String::new();
|
||||
for item in info_list {
|
||||
info.push_str(item.as_str().unwrap_or("\r\n"));
|
||||
info.push_str("\r\n");
|
||||
}
|
||||
let response = TimetableData {
|
||||
count: plan.len(),
|
||||
courses,
|
||||
info,
|
||||
};
|
||||
let timetable_element = Timetable {
|
||||
date: String::from(
|
||||
@ -233,9 +272,32 @@ pub async fn get_timetable(_conn: DbConn) -> Vec<Timetable> {
|
||||
}
|
||||
|
||||
pub async fn get_today_class_timetable(_conn: DbConn, class: String) -> TimetableData {
|
||||
let xml = get_today_timetable_xml().await;
|
||||
let classes = get_today_timetable_xml_data().await;
|
||||
let courses: Vec<rocket::serde::json::Value> = Vec::new();
|
||||
let mut response = TimetableData { count: 0, courses };
|
||||
let empty_list = serde_json::Value::Array(Vec::new());
|
||||
let empty_obj = serde_json::Value::Object(Map::new());
|
||||
let info_list = xml
|
||||
.as_object()
|
||||
.unwrap()
|
||||
.get("VpMobil")
|
||||
.unwrap()
|
||||
.get("ZusatzInfo")
|
||||
.unwrap_or(&empty_obj)
|
||||
.get("ZiZeile")
|
||||
.unwrap_or(&empty_list)
|
||||
.as_array()
|
||||
.unwrap();
|
||||
let mut info = String::new();
|
||||
for item in info_list {
|
||||
info.push_str(item.as_str().unwrap_or("\r\n"));
|
||||
info.push_str("\r\n");
|
||||
}
|
||||
let mut response = TimetableData {
|
||||
count: 0,
|
||||
courses,
|
||||
info,
|
||||
};
|
||||
for i in classes.iter() {
|
||||
if i.as_object()
|
||||
.unwrap()
|
||||
@ -277,9 +339,32 @@ pub async fn get_today_class_timetable(_conn: DbConn, class: String) -> Timetabl
|
||||
}
|
||||
|
||||
pub async fn get_class_timetable(_conn: DbConn, class: String) -> TimetableData {
|
||||
let xml = get_timetable_xml().await;
|
||||
let classes = get_timetable_xml_data().await;
|
||||
let courses: Vec<rocket::serde::json::Value> = Vec::new();
|
||||
let mut response = TimetableData { count: 0, courses };
|
||||
let empty_list = serde_json::Value::Array(Vec::new());
|
||||
let empty_obj = serde_json::Value::Object(Map::new());
|
||||
let info_list = xml
|
||||
.as_object()
|
||||
.unwrap()
|
||||
.get("VpMobil")
|
||||
.unwrap()
|
||||
.get("ZusatzInfo")
|
||||
.unwrap_or(&empty_obj)
|
||||
.get("ZiZeile")
|
||||
.unwrap_or(&empty_list)
|
||||
.as_array()
|
||||
.unwrap();
|
||||
let mut info = String::new();
|
||||
for item in info_list {
|
||||
info.push_str(item.as_str().unwrap_or("\r\n"));
|
||||
info.push_str("\r\n");
|
||||
}
|
||||
let mut response = TimetableData {
|
||||
count: 0,
|
||||
courses,
|
||||
info,
|
||||
};
|
||||
for i in classes.iter() {
|
||||
if i.as_object()
|
||||
.unwrap()
|
||||
|
Reference in New Issue
Block a user