Пример #1
0
        public static Stundenplan getDaten()
        {
            var doc = XDocument.Load(System.Web.HttpContext.Current.Server.MapPath("content/Stundenplan.xml"));
            string[] zeiten = { "08:15", "10:15", "12:15", "14:15", "15:45", "17:15" };
            string[] tage = { "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag" };

            var result = new Stundenplan
            {
                Aktualisiert = DateTime.Parse(doc.Element("stundenplan").Attribute("Aktualisiert").Value),
                FachSemester = int.Parse(doc.Element("stundenplan").Attribute("FachSemester").Value),
                Studiengang = doc.Element("stundenplan").Attribute("Studiengang").Value,
            };

            var nummern = GetFachnummern(doc.Root);
            var verzeichnis = new Dictionary<int, Tuple<string, string>>();
            var context = new dbContext();
            foreach (int nr in nummern)
            {
                string nickname = context.Module.Where(m => m.FachNummer == nr).First().Verantwortlicher;
                string name = context.Module.Where(m => m.FachNummer == nr)
                              .Join(context.Benutzer, m => m.Verantwortlicher, b => b.Nickname, (m, b) => new { _Modul = m, _Benutzer = b })
                              .First()._Benutzer.Nachname;
                string titel = context.Module.Where(m => m.FachNummer == nr)
                              .Join(context.Professoren, m => m.Verantwortlicher, p => p.Nickname, (m, p) => new { _Modul = m, _Professor = p })
                              .First()._Professor.AkademischerTitel;
                name = titel + " " + name;
                var tup = new Tuple<string, string>(nickname, name);
                verzeichnis.Add(nr, tup);
            }

            var plan = doc.Element("stundenplan").Descendants("Tag");

            foreach (var tag in tage)
            {
                var newTag = new Tag { Name = tag, Bloecke = new List<Block>() };

                foreach (var zeit in zeiten)
                {
                    var block = plan.Where(t => t.Attribute("Name").Value.Equals(tag))
                            .Descendants("Block").Where(b => b.Attribute("Zeit").Value.Equals(zeit))
                            .First();
                    if (block.Attribute("Typ") != null)
                    {
                        int nr = int.Parse(block.Attribute("FachNr").Value);
                        newTag.Bloecke.Add(new Block
                        {
                            Zeit = zeit,
                            FachNr = nr,
                            Typ = "(" + block.Attribute("Typ").Value + ")",
                            Veranstaltung = block.Value,
                            profUsername = verzeichnis[nr].Item1,
                            profName = verzeichnis[nr].Item2
                        });
                    }
                    else
                    {
                        newTag.Bloecke.Add(new Block
                        {
                            Zeit = zeit,
                            FachNr = 0,
                            Typ = "",
                            Veranstaltung = "",
                            profUsername = "",
                            profName = ""
                        });
                    }
                }

                result.Tage.Add(newTag);
            }

            return result;
        }