// Initialisiert die Klasse und lädt die gespeicherten Daten public async Task <bool> init() { //Aktiven Datensatz aus Offlinedatei lesen _collection = await readCollection(); return(true); }
//Datensatz speichern public async void writeCollection(Struct_Mensa_Collection collection) { //Struct in JSON konvertieren string json = JsonConvert.SerializeObject(collection, Formatting.Indented); //Datei schreiben await fileIO.writeText("mensa.json", json); }
//Datensatz lesen public async Task <Struct_Mensa_Collection> readCollection() { try { //Datei lesen String text = await fileIO.readText("mensa.json"); //JSON in Struct konvertieren Struct_Mensa_Collection list = JsonConvert.DeserializeObject <Struct_Mensa_Collection>(text); //Datensatz zurückgeben return(list); } catch (FileNotFoundException ex) { //Als ungültig markierten Datensatz erstellen und zurückgeben Struct_Mensa_Collection collection = new Struct_Mensa_Collection(); collection.count = 0; collection.isValid = false; return(collection); } }
// aktualsisiert und speichert die lokale Liste public async Task <bool> sync() { //Aktuellen Wochentag bestimmen int dayID = (int)DateTime.Now.DayOfWeek; //Anzahl der abzurufenden Tage int count = 0; //Es ist ein Samstag oder Sonntag, nur die Daten für die kommende //Woche herunterladen if (dayID == 0) { count = 6; } else if (dayID == 6) { count = 7; } //Es ist ein Werktag, verbleibende Tage der aktuellen Woche und komplette //nächste Woche herunterladen else { count = 12 - (dayID - 1); } //Neue temproräre Sammlung anlegen Struct_Mensa_Collection temp_collection = new Struct_Mensa_Collection(); //Datum der Atualisierung auf aktuelles Datum setzen temp_collection.date_update = DateTime.Now; //Array für Einträge in vorher bestimmter Größe anlegen Struct_Mensa_Day[] items = new Struct_Mensa_Day[count]; //Temporäres Datum anlegen, mit aktuellen Datum initialisieren DateTime temp_date = DateTime.Now; //Temp. Zähler für erfolgreiche Datenabrufe int temp_count_suc = 0; //Schleife für jeden abzurufenden Tag durchlaufen for (int i = 0; i < count; i++) { //Eintrag mit heruntergeladenen Daten füllen items[i] = await download(temp_date); //Größenangabe erhöhen temp_collection.count++; //Datum dem Eintrag hinzufügen items[i].day = temp_date; //Datum für Datenabruf erhöhen temp_date = temp_date.AddDays(1); //Einen Tag hinzurechnen //Prüfen ob Eintrag gültig if (items[i].isOk) { //Zähler für erfolgreiche Abrufe erhöhen temp_count_suc++; } } //Einträge dem Temp. Datensatz hinzufügen temp_collection.item = items; //Datensatz als gültig markieren temp_collection.isValid = true; //Wenn mehr als ein Datensatz erfolgreich abgerufen werden konnte if (temp_count_suc > 0) { //Temp. Datensatz als aktiven Datensatz übernehmen _collection = temp_collection; //Datensatz zur Offlinenutzung speichern writeCollection(_collection); //Erfolgreiche Aktualisierung zurückgeben return(true); } else { //Nicht erfolgreiche Aktualisierung zurückgeben return(false); } }