Esempio n. 1
0
        public List <Struct_Mensa_Display> getCurrentList()
        {
            List <Struct_Mensa_Display> ldi = new List <Struct_Mensa_Display>();    //Lsite zum anzeigen

            if (core._collection.item == null)
            {
                Struct_Mensa_Display di = new Struct_Mensa_Display();
                di.Food           = TextContainer.Mensa_Empty_Content;
                di.Description    = "";
                di.Category       = TextContainer.Mensa_Empty_Title;
                di.Price_Standard = "";
                di.Price_Student  = "";
                ldi.Add(di);
                return(ldi);
            }

            Struct_Mensa_Day mi = core._collection.item[index];

            if (mi.isOk && mi.food != null)
            {
                foreach (Struct_Mensa_Food fd in mi.food)
                {
                    Struct_Mensa_Display di = new Struct_Mensa_Display();
                    di.Food           = fd.name;
                    di.Description    = "";
                    di.Category       = fd.category;
                    di.Price_Standard = buildPriceString(fd.prices.employees);
                    di.Price_Student  = buildPriceString(fd.prices.students);
                    ldi.Add(di);
                }
            }
            else
            {
                Struct_Mensa_Display di = new Struct_Mensa_Display();
                di.Food           = "Nicht verfügbar";
                di.Description    = "Eventuell hat die Mensa geschlossen.";
                di.Category       = "Nicht verfügbar";
                di.Price_Standard = "";
                di.Price_Student  = "";
                ldi.Add(di);
            }

            return(ldi);
        }
Esempio n. 2
0
        //Lädt den Mensaplan für den angegebenen Tag herunter
        public async Task <Struct_Mensa_Day> download(DateTime day)
        {
            //Temporären Eintrag anlegen
            Struct_Mensa_Day temp_item = new Struct_Mensa_Day();

            //Eintrag als ungültig markieren
            temp_item.isOk = false;
            //Prüfen ob eine Internetverbindung besteht
            bool isInternetConnected = NetworkInterface.GetIsNetworkAvailable();

            if (!isInternetConnected)
            {
                //Es besteht keine Verbindung, Abruf abbrechen und bisherigen ungültigen Eintrag
                //zurückgeben
                return(temp_item);
            }

            try
            {
                //Daten über HTTP Client und URL abrufen
                HttpClient          client   = new HttpClient();
                HttpResponseMessage response = await client.GetAsync(new Uri("http://openmensa.org/api/v2/canteens/129/days/" + day.Year + "-" + day.Month + "-" + day.Day + "/meals"));

                //JSON Antwort konvertieren
                var jsonString = await response.Content.ReadAsStringAsync();

                Struct_Mensa_Food[] temp_meals = JsonConvert.DeserializeObject <Struct_Mensa_Food[]>(jsonString);
                //Heruntergeladene Gerichte dem Eintrag hinzufügen
                temp_item.food = temp_meals;
                //Eintrag als gültig markieren
                temp_item.isOk = true;
            }
            catch (Exception ex)
            {
                //Eine Ausnahme ist aufgetreten, Eintrag als ungültig annehmen
                temp_item.isOk = false;
            }

            //Erstellten Eintrag zurückgeben
            return(temp_item);
        }
Esempio n. 3
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);
            }
        }