static async Task <Meny> ParsaHTML() { var html = await HamtaHTML(); var doc = new HtmlDocument(); doc.LoadHtml(html); int vecka; try { var n = doc.DocumentNode.SelectSingleNode("/html/body/div[1]/section/div/div/div[1]/div/div[1]/div[1]/div/div/div[1]/h4"); vecka = int.Parse(string.Join("", n.InnerText.Where(x => char.IsDigit(x)))); } catch (Exception ex) { File.AppendAllText("./error.log", "Kunde inte parsa vecka: " + ex.StackTrace); File.WriteAllText("./addfood.html", html); return(null); } var wrappers = ClassQuery(doc.DocumentNode, "wpb_column vc_column_container vc_col-sm-4"); var meny = new Meny() { Vecka = vecka }; try { meny.Mat[Veckodag.Mandag] = ParsaMat(wrappers[1], "MÅNDAG").ToList(); meny.Mat[Veckodag.Tisdag] = ParsaMat(wrappers[2], "TISDAG").ToList(); meny.Mat[Veckodag.Onsdag] = ParsaMat(wrappers[3], "ONSDAG").ToList(); meny.Mat[Veckodag.Torsdag] = ParsaMat(wrappers[4], "TORSDAG").ToList(); meny.Mat[Veckodag.Fredag] = ParsaMat(wrappers[5], "FREDAG").ToList(); } catch (Exception ex) { File.AppendAllText("./error.log", "Kunde inte parsa mat: " + ex.StackTrace); File.WriteAllText("./addfood.html", html); return(null); } return(meny); }
static void Spara(Meny meny) { var conn = new MySqlConnection(sql); conn.Open(); var cmd = new MySqlCommand($"SELECT COUNT(*) FROM menyer WHERE Ar = {DateTime.Now.Year} AND Vecka = {meny.Vecka}", conn); var r = cmd.ExecuteReader(); r.Read(); if (r.GetInt32(0) != 0) { return; } r.Close(); using (var trans = conn.BeginTransaction()) { cmd = new MySqlCommand($"INSERT INTO menyer (MenyId, Ar, Vecka) VALUES (null, @y, @v)", conn); cmd.Parameters.Add(new MySqlParameter("y", DateTime.Now.Year)); cmd.Parameters.Add(new MySqlParameter("v", meny.Vecka)); cmd.Transaction = trans; cmd.ExecuteNonQuery(); var id = cmd.LastInsertedId; foreach (var mat in meny.Mat) { foreach (var matval in mat.Value) { cmd = new MySqlCommand($"INSERT INTO mat (MatId, MenyFK, Veckodag, Mat) VALUES (null, @id, @veckodag, @mat)", conn); cmd.Parameters.Add(new MySqlParameter("id", id)); cmd.Parameters.Add(new MySqlParameter("mat", matval)); cmd.Parameters.Add(new MySqlParameter("veckodag", (int)mat.Key)); cmd.Transaction = trans; cmd.ExecuteNonQuery(); } } trans.Commit(); } conn.Close(); }