static void ProwadzacyToModel(string wydzial, string jednostka, string wyklist, string posturl) { RZUEPDBContext db = new RZUEPDBContext(); string responseString; using (var client = new WebClient()) { var values = new NameValueCollection(); values["WykList"] = wyklist; values["GoButton"] = "Go"; var response = client.UploadValues(posturl, values); StringWriter myWriter = new StringWriter(); HttpUtility.HtmlDecode(Encoding.Default.GetString(response), myWriter); responseString = myWriter.ToString(); } var website = new HtmlDocument(); website.LoadHtml(responseString.Replace("\r", "").Replace("\n", "")); var inner = website.DocumentNode.InnerHtml; StringWriter myWriter2 = new StringWriter(); HttpUtility.HtmlDecode(inner, myWriter2); var clearinner = myWriter2.ToString(); var clear = new HtmlDocument(); clear.LoadHtml(clearinner); var doc = website.DocumentNode; var semestr = doc.SelectSingleNode("//cite").FirstChild.InnerText; if (FirstPro) { var dbproprowadzacys = db.Proprowadzacys; foreach (var p in dbproprowadzacys.Where(x => x.semestr == semestr).ToList()) { var pprozajecia = p.Prozajecia; foreach (var z in pprozajecia.ToList()) { var zgrupy = z.Grupy; foreach (var g in zgrupy.ToList()) { db.Grupys.Remove(g); } db.SaveChanges(); db.Prozajecias.Remove(z); } db.SaveChanges(); //db.Proprowadzacys.Remove(p); } //db.SaveChanges(); FirstPro = false; } var nazwaprowadzacy = doc.SelectSingleNode("/html/body/font/table/caption/strong").InnerText; while (nazwaprowadzacy.Contains(" ")) { nazwaprowadzacy = nazwaprowadzacy.Replace(" ", " "); } nazwaprowadzacy = nazwaprowadzacy.Split(new string[] { " (" }, StringSplitOptions.None)[0]; while (nazwaprowadzacy[0] == ' ') { nazwaprowadzacy = nazwaprowadzacy.Substring(1); } semestr = Clear(semestr); wydzial = Clear(wydzial); jednostka = Clear(jednostka); nazwaprowadzacy = Clear(nazwaprowadzacy); int proprowadzacyid = 0; if (db.Proprowadzacys.Where(x => x.semestr == semestr && x.wydzial == wydzial && x.jednostka == jednostka && x.nazwa == nazwaprowadzacy).ToList().Count() > 0) { proprowadzacyid = db.Proprowadzacys.Where(x => x.semestr == semestr && x.wydzial == wydzial && x.jednostka == jednostka && x.nazwa == nazwaprowadzacy).ToList().First().id; } else { var dodajproprowadzacy = db.Proprowadzacys.Add(new Proprowadzacy { semestr = semestr, tryb = "Stacjonarne", wydzial = wydzial, jednostka = jednostka, nazwa = nazwaprowadzacy }); db.SaveChanges(); proprowadzacyid = dodajproprowadzacy.id; } if (proprowadzacyid == 0) { Console.WriteLine("proprowadzacyid=0!"); } if (doc.InnerText.Contains("nie ma zajęć!")) { return; } List <string> dodinforows = new List <string>(); foreach (var row in doc.SelectNodes("//tbody").Last().ChildNodes.Where(x => x.Name == "tr")) { dodinforows.Add(row.InnerText[0] == '(' ? row.InnerText : "(" + row.InnerText); } foreach (var row in doc.SelectSingleNode("//tbody").ChildNodes) { var days = row.SelectNodes("td"); if (days.Count != 5) { Console.WriteLine("Liczba dni!"); } for (int i = 0; i < 5; i++) { var innerinfo = days[i].InnerHtml.Substring(1); while (innerinfo.Contains(" ")) { innerinfo = innerinfo.Replace(" ", " "); } if (innerinfo.Equals(" ")) { continue; } var infos = innerinfo.Split(new string[] { "<br> " }, StringSplitOptions.None); var godzinaod = infos[0].Split('-')[0]; var godzinado = infos[0].Split('-')[1]; var dodinfo = ""; if (godzinado.Contains(" # ")) { godzinado = godzinado.Split(new string[] { " # " }, StringSplitOptions.None)[0]; string[] dodpoints = infos[0].Split('-')[1].Split(new string[] { " # " }, StringSplitOptions.None)[1].Contains(',') ? infos[0].Split('-')[1].Split(new string[] { " # " }, StringSplitOptions.None)[1].Split(',') : new string[] { infos[0].Split('-')[1].Split(new string[] { " # " }, StringSplitOptions.None)[1] }; for (int d = 0; d < dodpoints.Length; d++) { if (d > 0) { dodinfo += "<br>"; } dodinfo += dodinforows.Where(x => x.Contains(dodpoints[d])).First().Split(new string[] { ") " }, StringSplitOptions.None)[1].Replace("(", "").Replace(")", ""); } } var zajecia = infos[1].Split(new string[] { " (" }, StringSplitOptions.None)[0]; var rodzaj = infos[1].Split(new string[] { " (" }, StringSplitOptions.None)[1].Remove(infos[1].Split(new string[] { " (" }, StringSplitOptions.None)[1].Length - 1); switch (rodzaj) { case "Wyk": rodzaj = "Wykład"; break; case "Ćwi": rodzaj = "Ćwiczenia"; break; case "Lek": rodzaj = "Lektorat"; break; case "Lab": rodzaj = "Laboratoria"; break; default: Console.WriteLine("Rodzaj zajęć!"); break; } var sala = infos[2]; var dodajprozajecia = db.Prozajecias.Add(new Prozajecia { proprowadzacyid = proprowadzacyid, dzien = i, godzinaod = Clear(godzinaod.Replace('.', ':')), godzinado = Clear(godzinado.Replace('.', ':')), rodzaj = Clear(rodzaj), nazwa = Clear(zajecia.Replace(".", ". ")), sala = Clear(sala), info = Clear(dodinfo) }); db.SaveChanges(); int inf = 3; while (inf < infos.Length && (infos[inf].Contains(" R"))) { var dodajgrupy = db.Grupys.Add(new Grupy { prozajeciaid = dodajprozajecia.id, nazwa = Clear(infos[inf]) }); db.SaveChanges(); inf++; } } } }
static void PlanToModel(string stopien, string wydzial, string rok, string kierunek, string grupa, string specjalnosc, string wyklist, string posturl) { RZUEPDBContext db = new RZUEPDBContext(); string responseString; using (var client = new WebClient()) { var values = new NameValueCollection(); values["WykList"] = wyklist; values["GoButton"] = "Go"; var response = client.UploadValues(posturl, values); StringWriter myWriter = new StringWriter(); HttpUtility.HtmlDecode(Encoding.Default.GetString(response), myWriter); responseString = myWriter.ToString(); } var website = new HtmlDocument(); website.LoadHtml(responseString.Replace("\r", "").Replace("\n", "")); var inner = website.DocumentNode.InnerHtml; StringWriter myWriter2 = new StringWriter(); HttpUtility.HtmlDecode(inner, myWriter2); var clearinner = myWriter2.ToString(); var clear = new HtmlDocument(); clear.LoadHtml(clearinner); var doc = website.DocumentNode; var semestr = doc.SelectSingleNode("//cite").FirstChild.InnerText; if (FirstPlan) { var dbplans = db.Plans; foreach (var pl in dbplans.Where(x => x.semestr == semestr).ToList()) { var plzajecia = pl.Zajecia; foreach (var z in plzajecia.ToList()) { var zprowadzacy = z.Prowadzący; foreach (var pr in zprowadzacy.ToList()) { db.Prowadzacys.Remove(pr); } db.SaveChanges(); db.Zajecias.Remove(z); } db.SaveChanges(); //db.Plans.Remove(pl); } //db.SaveChanges(); FirstPlan = false; } semestr = Clear(semestr); stopien = Clear(stopien); wydzial = Clear(wydzial); rok = Clear(rok); kierunek = Clear(kierunek); grupa = Clear(grupa); specjalnosc = Clear(specjalnosc); int planid = 0; if (db.Plans.Where(x => x.semestr == semestr && x.stopien == stopien && x.wydzial == wydzial && x.rok == rok && x.kierunek == kierunek && x.grupa == grupa && x.specjalnosc == specjalnosc).ToList().Count() > 0) { planid = db.Plans.Where(x => x.semestr == semestr && x.stopien == stopien && x.wydzial == wydzial && x.rok == rok && x.kierunek == kierunek && x.grupa == grupa && x.specjalnosc == specjalnosc).ToList().First().id; } else { var dodajplan = db.Plans.Add(new Plan { semestr = semestr, tryb = "Stacjonarne", stopien = stopien, wydzial = wydzial, rok = rok, kierunek = kierunek, grupa = grupa, specjalnosc = specjalnosc }); db.SaveChanges(); planid = dodajplan.id; } if (planid == 0) { Console.WriteLine("planid=0!"); } List <string> dodinforows = new List <string>(); foreach (var row in doc.SelectNodes("//tbody").Last().ChildNodes.Where(x => x.Name == "tr")) { dodinforows.Add(row.InnerText[0] == '(' ? row.InnerText : "(" + row.InnerText); } foreach (var row in doc.SelectSingleNode("//tbody").ChildNodes) { var days = row.SelectNodes("td"); if (days.Count != 5) { Console.WriteLine("Liczba dni!"); } for (int i = 0; i < 5; i++) { var innerinfo = days[i].InnerHtml.Substring(1); while (innerinfo.Contains(" ")) { innerinfo = innerinfo.Replace(" ", " "); } if (innerinfo.Equals(" ")) { continue; } var infos = innerinfo.Split(new string[] { "<br> " }, StringSplitOptions.None); var godzinaod = infos[0].Split('-')[0]; var godzinado = infos[0].Split('-')[1]; var dodinfo = ""; if (godzinado.Contains(" # ")) { godzinado = godzinado.Split(new string[] { " # " }, StringSplitOptions.None)[0]; string[] dodpoints = infos[0].Split('-')[1].Split(new string[] { " # " }, StringSplitOptions.None)[1].Contains(',') ? infos[0].Split('-')[1].Split(new string[] { " # " }, StringSplitOptions.None)[1].Split(',') : new string[] { infos[0].Split('-')[1].Split(new string[] { " # " }, StringSplitOptions.None)[1] }; for (int d = 0; d < dodpoints.Length; d++) { if (d > 0) { dodinfo += "<br>"; } dodinfo += dodinforows.Where(x => x.Contains(dodpoints[d])).First().Split(new string[] { ") " }, StringSplitOptions.None)[1].Replace("(", "").Replace(")", ""); } } var zajecia = infos[1].Split(new string[] { " (" }, StringSplitOptions.None)[0]; var rodzaj = infos[1].Split(new string[] { " (" }, StringSplitOptions.None)[1].Remove(infos[1].Split(new string[] { " (" }, StringSplitOptions.None)[1].Length - 1); switch (rodzaj) { case "Wyk": rodzaj = "Wykład"; break; case "Ćwi": rodzaj = "Ćwiczenia"; break; case "Lek": rodzaj = "Lektorat"; break; case "Lab": rodzaj = "Laboratoria"; break; default: Console.WriteLine("Rodzaj zajęć!"); break; } var sala = ""; if (infos[2].Equals("harmonogram")) { sala = "Harmonogram w Hornecie"; } else { sala = infos[2]; } var dodajzajecia = db.Zajecias.Add(new Zajecia { planid = planid, dzien = i, godzinaod = Clear(godzinaod.Replace('.', ':')), godzinado = Clear(godzinado.Replace('.', ':')), rodzaj = Clear(rodzaj), nazwa = Clear(zajecia.Replace(".", ". ")), sala = Clear(sala), info = Clear(dodinfo) }); db.SaveChanges(); if (!infos[2].Equals("harmonogram")) { int inf = 3; while (inf < infos.Length && (infos[inf].Contains("Mgr") || infos[inf].Contains("Dr") || infos[inf].Contains("Prof"))) { var dodajprowadzacy = db.Prowadzacys.Add(new Prowadzacy { zajeciaid = dodajzajecia.id, nazwa = Clear(infos[inf].Replace(".", ". ")) }); db.SaveChanges(); inf++; } } } } }