Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public PartialViewResult CurrentCourses(string location)
        {
            var now        = DateTime.Now;
            var maxEntries = 14;

            var model = new InfoscreenModel();

            var fk = location;


            var nowPlaying = Db.ActivityDates.Where(d =>
                                                    d.Activity.Organiser.ShortName.Equals(fk) &&
                                                    d.Begin <= now && now < d.End).OrderBy(d => d.Begin).ThenBy(d => d.End).ToList();

            model.NowPlayingDates = nowPlaying.Where(date => date.Activity is Course).Take(maxEntries).ToList();

            return(PartialView("_CurrentCourses", model));
        }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public PartialViewResult FreeRooms(string location)
        {
            var model = new InfoscreenModel();

            var fk = location;
            var b  = "R";

            if (location.Equals("FK 10"))
            {
                b = "L";
            }
            else if (location.Equals("FK 11"))
            {
                b = "K";
            }

            var roomService = new MyStik.TimeTable.Web.Services.RoomService();
            var fk09        = Db.Organisers.SingleOrDefault(o => o.ShortName.Equals(fk));

            if (fk09 != null)
            {
                var allRooms = roomService.GetAvaliableRoomsNow(fk09.Id, 45);
                // nur R-Bau
                model.CurrentFreeRooms = allRooms.Where(r => r.Room.Number.StartsWith(b)).OrderBy(r => r.Room.Number).Take(14).ToList();

                var nextRooms = roomService.GetAvaliableRoomsNext(fk09.Id, 15, 45);

                // aus nextRooms alle rauswerfen, die in allrooms schon drin sind
                var additionalFreeRooms = nextRooms.Where(room => allRooms.All(r => r.Room.Id != room.Room.Id)).ToList();
                model.NextFreeRooms = additionalFreeRooms.Where(r => r.Room.Number.StartsWith(b)).OrderBy(r => r.Room.Number).Take(14).ToList();
            }
            else
            {
                model.CurrentFreeRooms = new List <RoomInfoModel>();
                model.NextFreeRooms    = new List <RoomInfoModel>();
            }



            return(PartialView("_FreeRooms", model));
        }
Exemple #3
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public PartialViewResult NextCourses(string location)
        {
            var now        = DateTime.Now;
            var maxEntries = 14;

            var model = new InfoscreenModel();

            var fk = location;

            // die nächste sind die, die am selben Tag noch beginnen
            var endOfDay = DateTime.Today.AddDays(1);

            var upComing = Db.ActivityDates.Where(d =>
                                                  d.Activity.Organiser.ShortName.Equals(fk) &&
                                                  d.Begin > now && d.Begin < endOfDay).OrderBy(d => d.Begin).ThenBy(d => d.End).ToList();

            model.UpcomingDates = upComing.Where(date => date.Activity is Course).Take(maxEntries).ToList();


            return(PartialView("_NextCourses", model));
        }
Exemple #4
0
        /// <summary>
        /// Aktueller Mensaspeiseplan
        /// </summary>
        /// <returns></returns>
        public PartialViewResult Mensa(string location)
        {
            var model = new InfoscreenModel();


            // TODO: Abfrage des Mensaplans
            var m = new MensaViewModel();

            var daten = "";

            // download mensa daten
            // Speiseplan das aktuellen Tages
            try
            {
                if (location.Equals("FK 10") || location.Equals("FK 11"))
                {
                    daten = GetResult("http://openmensa.org/api/v2/canteens/142/meals");
                }
                else
                {
                    daten = GetResult("http://openmensa.org/api/v2/canteens/141/meals");
                }
            }
            catch (Exception ex)
            {
                daten         = ""; // Fehlerfall
                ViewBag.Datum = ex.Message.ToString();
            }

            // Wenn Inhalt in daten vorhanden
            if (daten != "")
            {
                var alleElemente = JToken.Parse(daten); // Text als JSON parsen

                // Neue Liste erstellen
                m.Tage = new List <MensaView_Tag>();

                // alle Elemente auslesen
                foreach (var Element in alleElemente)
                {
                    // Tage auslesen
                    var tag = new MensaView_Tag
                    {
                        date   = (string)Element["date"],
                        closed = (string)Element["closed"],
                        meals  = new List <MensaView_Meal>()
                    };

                    // Meals auslesen
                    foreach (var Meal in Element["meals"])
                    {
                        var tmp_notes = new List <string>();
                        foreach (string value in Meal["notes"].Values())
                        {
                            tmp_notes.Add((string)value);
                        }

                        var pri = new MensaView_Prices
                        {
                            price_student   = parsePrice((string)Meal["prices"]["students"]),
                            price_employees = parsePrice((string)Meal["prices"]["employees"]),
                            price_others    = parsePrice((string)Meal["prices"]["others"]),
                            price_pupils    = parsePrice((string)Meal["prices"]["pupils"])
                        };

                        var meal = new MensaView_Meal
                        {
                            id       = (int)Meal["id"],
                            name     = (string)Meal["name"],
                            category = (string)Meal["category"],
                            prices   = pri,
                            notes    = tmp_notes
                        };
                        tag.meals.Add(meal);
                    }

                    m.Tage.Add(tag);
                }

                model.SpeiseplanHeute = m.Tage.FirstOrDefault();
            }

            // wenn es keine Daten gibt, dann doch lieber MVG aufrufen
            if (model.SpeiseplanHeute == null)
            {
                return(MVG(location));
            }

            // 3. Model an den View übergeben
            return(PartialView("_Mensa", model));
        }
Exemple #5
0
        /// <summary>
        /// Aktuelle Abfahrtszeiten MVG
        /// Haltestelle Lothstrasse (Hochschule München)
        /// </summary>
        /// <returns></returns>
        public PartialViewResult MVG(string location)
        {
            var model = new InfoscreenModel();


            // TODO: Abfrage MVV
            model.MVVallDepartures = new List <MvvViewModel>();

            var url = "";

            if (location.Equals("FK 10") || location.Equals("FK 11"))
            {
                url = "http://www.mvg-live.de/ims/dfiStaticAnzeige.svc?haltestelle=Avenariusplatz&ubahn=checked&bus=checked&tram=checked&sbahn=checked";
            }
            else
            {
                url = "http://www.mvg-live.de/ims/dfiStaticAnzeige.svc?haltestelle=Hochschule+M%fcnchen+(Lothstra%dfe)&ubahn=checked&bus=checked&tram=checked&sbahn=checked";
            }

            var req = (HttpWebRequest)WebRequest.Create(url);

            req.Method = "GET";
            var res = (HttpWebResponse)req.GetResponse();

            // Verwendung des HTML Agility Package zum Parsen des HTMLs
            var doc = new HtmlDocument();

            doc.Load(res.GetResponseStream());

            // geht!
            // erste und letzte Zeile der Tabelle müssen ignoriert werden

            // Alle <tr> Elemente im ganzen HTML-Dokument auswählen
            //var trNodes = doc.DocumentNode.SelectNodes("//tr").Take(10).ToList();
            var trNodes = doc.DocumentNode.SelectNodes("//tr").ToList();

            // Es ist bekannt: das erste Element und die beiden letzten Elemente enthalten keine Abfahrtszeiten
            for (var i = 1; i < trNodes.Count - 2; i++)
            {
                // pro <tr>-Element alle <td>-Elemente auswählen
                var tdNodes = trNodes[i].SelectNodes("td");

                // Zur Sicherheit: nur <tr>-Elemente, die exakt 3 <td>-Elemente besitzen nehmen
                if (tdNodes.Count == 3)
                {
                    // im Ziel steht ggf. noch Leerzeichen drin => löschen
                    var ziel = tdNodes[1].InnerText;
                    ziel = ziel.Replace("&nbsp;", "").Trim();

                    // Das Objekt aufbauem
                    var mvv = new MvvViewModel
                    {
                        Liniennummer      = tdNodes[0].InnerText,
                        Richtung          = ziel,
                        AbfahrtszeitInMin = int.Parse(tdNodes[2].InnerText)
                    };
                    // Das Objekt zur Liste hinzufügen
                    model.MVVallDepartures.Add(mvv);
                }
            }

            return(PartialView("_MVG", model));
        }