internal static void _LottoDs_addRow(LottoRow row) { if (_DsLotto.Lotto.FindByid(row.id) == null) { _DsLotto.Lotto.AddLottoRow(row); } }
public void downloadAllLotto() { if (DateTime.Now.Year == Variabili.annoDiInizio.Year && DateTime.Now.Month == Variabili.annoDiInizio.Month && DateTime.Now.Day == Variabili.annoDiInizio.Day) { return; } for (int i = 0; i <= (DateTime.Now.Year - Variabili.annoDiInizio.Year); i++) { Task <string> task = Task.Run(async() => await downloadDataEstrazioniLotto()); string result = task.Result; doc.LoadHtml(result); int countPalla = 0; List <LottoPalleRow> palle = new List <LottoPalleRow>(); LottoRow row = Variabili._LottoDs_newRow(); HtmlNodeCollection nodesAll = doc.DocumentNode.SelectNodes(@"(//a[contains(@href,'/risultati/estrazione')]|//td[@class='ball-24px']|//td[@class='superstar-24px']|//td[@class='jolly-24px'])"); //dal 28 marzo 2006 if (nodesAll == null) { continue; } for (int nc = nodesAll.Count - 1; nc != 0; nc--)// parto all'incontrario per un fattore d'indice { HtmlNode node = nodesAll[nc]; if (node.Attributes.Count == 1 && node.Attributes[0].Value == "ball-24px")// dovrebbe esserci solamnente una classe ball-24px { int.TryParse(node.InnerText, out int value); palle.Add(Variabili._LottoPalleDs_newRow(-1, value, "palla" + (++countPalla)));// non ho ancora l' id metto -1 come id temporaneo } else if (node.Attributes.Count == 1 && node.Attributes[0].Value == "superstar-24px") { int.TryParse(node.InnerText, out int value); palle.Add(Variabili._LottoPalleDs_newRow(-1, value, "superstar")); } else if (node.Attributes.Count == 1 && node.Attributes[0].Value == "jolly-24px") { int.TryParse(node.InnerText, out int value); palle.Add(Variabili._LottoPalleDs_newRow(-1, value, "jolly")); } else if (node.Attributes.Count == 2 && node.Attributes[0].Name == "href") {//primo campo che si legge countPalla = 0; var data = node.Attributes[0].Value.Substring(Variabili.extractData.Length); DateTime.TryParseExact(data, "dd-MM-yyyy", enUS, DateTimeStyles.None, out DateTime Data); row.hrfQuotazioni = node.Attributes[0].Value; row.data = Data; row.anno = Data.Year; if (Data <= Variabili.annoDiInizio) { continue; } Task <string> taskDetailes = Task.Run(async() => await downloadDataEstrazioniLottoDetailes(row.hrfQuotazioni)); if (taskDetailes == null) { continue; } int countEstrazione = dettagliEstrazione(taskDetailes.Result); row.id = creaIndice(countEstrazione); row.nEstrazione = countEstrazione; Variabili._LottoDs_addRow(row); inserisciDettagli(row.id); foreach (LottoPalleRow rowPalla in palle) { rowPalla.id = row.id; Variabili._LottoPalleDs_addRow(rowPalla); } palle = new List <LottoPalleRow>(); row = Variabili._LottoDs_newRow(); } } anno = anno.AddYears(1); Variabili._DsLottoSave(); } }