void View_AddToDatabase(object sender, EventArgs e) { try { // Initialize database context TramwajeDataContext databaseContext = new TramwajeDataContext(); // Parse XML file.. XDocument TramXMLFile = XDocument.Load(View.FilePath); foreach (var tramXML in TramXMLFile.Root.Descendants("linia")) { Linie linia = new Linie(); linia.Nazwa = tramXML.Attribute("nazwa").Value.Trim(); if (tramXML.Attribute("typ").Value != null) { linia.Typ = tramXML.Attribute("typ").Value.Trim(); } foreach (var wariantXML in tramXML.Descendants("wariant")) { WariantTrasy wariant = new WariantTrasy(); wariant.Linie = linia; wariant.Nazwa = wariantXML.Attribute("nazwa").Value.Trim(); // BISKUPIN - POŚWIĘTNE int pPos = wariant.Nazwa.IndexOf("-"); wariant.Start = wariant.Nazwa.Substring(0, pPos - 1); wariant.Koniec = wariant.Nazwa.Substring(pPos + 1); foreach (var przystanekXML in wariantXML.Descendants("przystanek")) { Przystanek przystanek = new Przystanek(); przystanek.WariantTrasy = wariant; przystanek.Nazwa = przystanekXML.Attribute("nazwa").Value.Trim(); przystanek.Ulica = przystanekXML.Attribute("ulica").Value.Trim(); foreach (var dzienXML in przystanekXML.Descendants("dzien")) { foreach (var godzXML in dzienXML.Descendants("godz")) { foreach (var minXML in godzXML.Descendants("min")) { Przyjazd przyjazd = new Przyjazd(); przyjazd.Dzień = dzienXML.Attribute("nazwa").Value.Trim(); przyjazd.Godzina = int.Parse(godzXML.Attribute("h").Value.Trim()); przyjazd.Minuta = int.Parse(minXML.Attribute("m").Value.Trim()); przyjazd.Przystanek = przystanek; przystanek.Przyjazds.Add(przyjazd); } } } wariant.Przystaneks.Add(przystanek); } linia.WariantTrasies.Add(wariant); } if (databaseContext.Linies.Count(l => l.Nazwa == linia.Nazwa) > 0) { databaseContext.Linies.DeleteAllOnSubmit(databaseContext.Linies.Where(l => l.Nazwa == linia.Nazwa)); } databaseContext.Linies.InsertOnSubmit(linia); } databaseContext.SubmitChanges(); View.Message = "Dane zostały pomyślnie zapisane."; }catch (Exception ex) { View.Message = "Wystąpił błąd podczas przetwarzania pliku: " + ex.Message; } }
private string queryDatabase(string chatResponse) { string res = chatResponse; var args = res.Split('|'); if (args.Length > 1) { try { TramwajeDataContext dc = new TramwajeDataContext(); string start = null; string end = null; for (int argNum = 2; argNum < args.Length; argNum++) { // NazwaParametru_Wartość var par_val = args[argNum].Split('_'); if (par_val.Length == 2) { switch (par_val[0]) { case "START": start = MorfParse(TrimWord(par_val[1])); break; case "END": end = MorfParse(TrimWord(par_val[1])); break; default: break; } } } switch (args[1]) { case "HOW": var queryResHow = dc.WariantTrasies .Join(dc.Przystaneks, w => w.Id, p => p.WariantId, (w, p) => new { WariantTrasy = w, Przystanek = p }) .Where(w => (start == null || w.WariantTrasy.Przystaneks.Any(p => p.Nazwa == start)) && (end == null || w.WariantTrasy.Przystaneks.Any(p => p.Nazwa == end))) .FirstOrDefault(); if (queryResHow == null) { res = "NULL"; } else { res = queryResHow.WariantTrasy.Linie.Typ.Trim() + " HOW " + queryResHow.WariantTrasy.Linie.Nazwa.Trim(); } break; case "WHEN": var queryWhen = from p in dc.Przystaneks join wt in dc.WariantTrasies on p.WariantId equals wt.Id join prz in dc.Przyjazds on p.Id equals prz.PrzystanekId where prz.Godzina >= DateTime.Now.Hour && prz.Minuta >= DateTime.Now.Minute orderby prz.Godzina ascending, prz.Minuta ascending select new { Numer = wt.Linie.Nazwa, Godzina = prz.Godzina, Minuta = prz.Minuta, WariantTrasy = wt }; var queryResWhen = queryWhen.Where(w => (start == null || w.WariantTrasy.Przystaneks.Any(p => p.Nazwa == start)) && (end == null || w.WariantTrasy.Przystaneks.Any(p => p.Nazwa == end))) .FirstOrDefault(); if (queryResWhen == null) { res = "NULL"; } else { res = queryResWhen.Godzina + ":" + queryResWhen.Minuta + " WHEN " + queryResWhen.Numer.Trim(); } break; default: break; } } catch (Exception) { res = "ERROR"; } } return(res); }