Exemplo n.º 1
0
        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++;
                    }
                }
            }
        }
Exemplo n.º 2
0
        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++;
                        }
                    }
                }
            }
        }