예제 #1
0
 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();
            }
        }