示例#1
0
        // Initialisiert die Klasse und lädt die gespeicherten Daten
        public async Task <bool> init()
        {
            //Aktiven Datensatz aus Offlinedatei lesen
            _collection = await readCollection();

            return(true);
        }
示例#2
0
 //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);
 }
示例#3
0
        //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);
            }
        }
示例#4
0
        // 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);
            }
        }