static public void CountNumbersEstatisticaMegasenas() { var megasenaDezenas = new MegasenaNumbers(); var timeBegin = DateTime.Now; Console.WriteLine(string.Format("Inicio do Processo de Count às {0}...", timeBegin.ToString("HH:mm:ss"))); using var context = new SorteContext(); foreach (var ms in context.Megasenas.Include(m => m.NumerosSorteados).OrderBy(e => e.DataConcurso)) { foreach (var numero in ms.NumerosSorteados) { if (numero.Numero == 1) { megasenaDezenas.Dez01++; } if (numero.Numero == 2) { megasenaDezenas.Dez02++; } if (numero.Numero == 3) { megasenaDezenas.Dez03++; } if (numero.Numero == 4) { megasenaDezenas.Dez04++; } if (numero.Numero == 5) { megasenaDezenas.Dez05++; } if (numero.Numero == 6) { megasenaDezenas.Dez06++; } if (numero.Numero == 7) { megasenaDezenas.Dez07++; } if (numero.Numero == 8) { megasenaDezenas.Dez08++; } if (numero.Numero == 9) { megasenaDezenas.Dez09++; } if (numero.Numero == 10) { megasenaDezenas.Dez10++; } if (numero.Numero == 11) { megasenaDezenas.Dez11++; } if (numero.Numero == 12) { megasenaDezenas.Dez12++; } if (numero.Numero == 13) { megasenaDezenas.Dez13++; } if (numero.Numero == 14) { megasenaDezenas.Dez14++; } if (numero.Numero == 15) { megasenaDezenas.Dez15++; } if (numero.Numero == 16) { megasenaDezenas.Dez16++; } if (numero.Numero == 17) { megasenaDezenas.Dez17++; } if (numero.Numero == 18) { megasenaDezenas.Dez18++; } if (numero.Numero == 19) { megasenaDezenas.Dez19++; } if (numero.Numero == 20) { megasenaDezenas.Dez20++; } if (numero.Numero == 21) { megasenaDezenas.Dez21++; } if (numero.Numero == 22) { megasenaDezenas.Dez22++; } if (numero.Numero == 23) { megasenaDezenas.Dez23++; } if (numero.Numero == 24) { megasenaDezenas.Dez24++; } if (numero.Numero == 25) { megasenaDezenas.Dez25++; } if (numero.Numero == 26) { megasenaDezenas.Dez26++; } if (numero.Numero == 27) { megasenaDezenas.Dez27++; } if (numero.Numero == 28) { megasenaDezenas.Dez28++; } if (numero.Numero == 29) { megasenaDezenas.Dez29++; } if (numero.Numero == 30) { megasenaDezenas.Dez30++; } if (numero.Numero == 31) { megasenaDezenas.Dez31++; } if (numero.Numero == 32) { megasenaDezenas.Dez32++; } if (numero.Numero == 33) { megasenaDezenas.Dez33++; } if (numero.Numero == 34) { megasenaDezenas.Dez34++; } if (numero.Numero == 35) { megasenaDezenas.Dez35++; } if (numero.Numero == 36) { megasenaDezenas.Dez36++; } if (numero.Numero == 37) { megasenaDezenas.Dez37++; } if (numero.Numero == 38) { megasenaDezenas.Dez38++; } if (numero.Numero == 39) { megasenaDezenas.Dez39++; } if (numero.Numero == 40) { megasenaDezenas.Dez40++; } if (numero.Numero == 41) { megasenaDezenas.Dez41++; } if (numero.Numero == 42) { megasenaDezenas.Dez42++; } if (numero.Numero == 43) { megasenaDezenas.Dez43++; } if (numero.Numero == 44) { megasenaDezenas.Dez44++; } if (numero.Numero == 45) { megasenaDezenas.Dez45++; } if (numero.Numero == 46) { megasenaDezenas.Dez46++; } if (numero.Numero == 47) { megasenaDezenas.Dez47++; } if (numero.Numero == 48) { megasenaDezenas.Dez48++; } if (numero.Numero == 49) { megasenaDezenas.Dez49++; } if (numero.Numero == 50) { megasenaDezenas.Dez50++; } if (numero.Numero == 51) { megasenaDezenas.Dez51++; } if (numero.Numero == 52) { megasenaDezenas.Dez52++; } if (numero.Numero == 53) { megasenaDezenas.Dez53++; } if (numero.Numero == 54) { megasenaDezenas.Dez54++; } if (numero.Numero == 55) { megasenaDezenas.Dez55++; } if (numero.Numero == 56) { megasenaDezenas.Dez56++; } if (numero.Numero == 57) { megasenaDezenas.Dez57++; } if (numero.Numero == 58) { megasenaDezenas.Dez58++; } if (numero.Numero == 59) { megasenaDezenas.Dez59++; } if (numero.Numero == 60) { megasenaDezenas.Dez60++; } } using var dbcontext = new SorteContext(); var estatistica = dbcontext.EstatisticaMegasenas.Where(e => e.DataConcurso == ms.DataConcurso).FirstOrDefault(); var flagAdd = estatistica == null; if (flagAdd) { estatistica = new EstatisticaMegasena(); } estatistica.DataConcurso = ms.DataConcurso; estatistica.QuantDez01 = megasenaDezenas.Dez01; estatistica.QuantDez02 = megasenaDezenas.Dez02; estatistica.QuantDez03 = megasenaDezenas.Dez03; estatistica.QuantDez04 = megasenaDezenas.Dez04; estatistica.QuantDez05 = megasenaDezenas.Dez05; estatistica.QuantDez06 = megasenaDezenas.Dez06; estatistica.QuantDez07 = megasenaDezenas.Dez07; estatistica.QuantDez08 = megasenaDezenas.Dez08; estatistica.QuantDez09 = megasenaDezenas.Dez09; estatistica.QuantDez10 = megasenaDezenas.Dez10; estatistica.QuantDez11 = megasenaDezenas.Dez11; estatistica.QuantDez12 = megasenaDezenas.Dez12; estatistica.QuantDez13 = megasenaDezenas.Dez13; estatistica.QuantDez14 = megasenaDezenas.Dez14; estatistica.QuantDez15 = megasenaDezenas.Dez15; estatistica.QuantDez16 = megasenaDezenas.Dez16; estatistica.QuantDez17 = megasenaDezenas.Dez17; estatistica.QuantDez18 = megasenaDezenas.Dez18; estatistica.QuantDez19 = megasenaDezenas.Dez19; estatistica.QuantDez20 = megasenaDezenas.Dez20; estatistica.QuantDez21 = megasenaDezenas.Dez21; estatistica.QuantDez22 = megasenaDezenas.Dez22; estatistica.QuantDez23 = megasenaDezenas.Dez23; estatistica.QuantDez24 = megasenaDezenas.Dez24; estatistica.QuantDez25 = megasenaDezenas.Dez25; estatistica.QuantDez26 = megasenaDezenas.Dez26; estatistica.QuantDez27 = megasenaDezenas.Dez27; estatistica.QuantDez28 = megasenaDezenas.Dez28; estatistica.QuantDez29 = megasenaDezenas.Dez29; estatistica.QuantDez30 = megasenaDezenas.Dez30; estatistica.QuantDez31 = megasenaDezenas.Dez31; estatistica.QuantDez32 = megasenaDezenas.Dez32; estatistica.QuantDez33 = megasenaDezenas.Dez33; estatistica.QuantDez34 = megasenaDezenas.Dez34; estatistica.QuantDez35 = megasenaDezenas.Dez35; estatistica.QuantDez36 = megasenaDezenas.Dez36; estatistica.QuantDez37 = megasenaDezenas.Dez37; estatistica.QuantDez38 = megasenaDezenas.Dez38; estatistica.QuantDez39 = megasenaDezenas.Dez39; estatistica.QuantDez40 = megasenaDezenas.Dez40; estatistica.QuantDez41 = megasenaDezenas.Dez41; estatistica.QuantDez42 = megasenaDezenas.Dez42; estatistica.QuantDez43 = megasenaDezenas.Dez43; estatistica.QuantDez44 = megasenaDezenas.Dez44; estatistica.QuantDez45 = megasenaDezenas.Dez45; estatistica.QuantDez46 = megasenaDezenas.Dez46; estatistica.QuantDez47 = megasenaDezenas.Dez47; estatistica.QuantDez48 = megasenaDezenas.Dez48; estatistica.QuantDez49 = megasenaDezenas.Dez49; estatistica.QuantDez50 = megasenaDezenas.Dez50; estatistica.QuantDez51 = megasenaDezenas.Dez51; estatistica.QuantDez52 = megasenaDezenas.Dez52; estatistica.QuantDez53 = megasenaDezenas.Dez53; estatistica.QuantDez54 = megasenaDezenas.Dez54; estatistica.QuantDez55 = megasenaDezenas.Dez55; estatistica.QuantDez56 = megasenaDezenas.Dez56; estatistica.QuantDez57 = megasenaDezenas.Dez57; estatistica.QuantDez58 = megasenaDezenas.Dez58; estatistica.QuantDez59 = megasenaDezenas.Dez59; estatistica.QuantDez60 = megasenaDezenas.Dez60; if (flagAdd) { dbcontext.EstatisticaMegasenas.Add(estatistica); } else { dbcontext.EstatisticaMegasenas.Update(estatistica); } dbcontext.SaveChanges(true); } Console.WriteLine(string.Format("Finalizando o Processo de Count, às {0}, levou {1} tempo de execução.", DateTime.Now.ToString("HH:mm:ss"), DateTime.Now.Subtract(timeBegin).ToString())); }
static public void CountNumbers() { var megasenaDezenas = new MegasenaNumbers(); var timeBegin = DateTime.Now; Console.WriteLine(string.Format("Inicio do Processo de Count às {0}...", timeBegin.ToString("HH:mm:ss"))); using var context = new SorteContext(); foreach (var ms in context.Megasenas.Include(m => m.NumerosSorteados).OrderBy(e => e.DataConcurso)) { foreach (var numero in ms.NumerosSorteados) { AddDezena(ref megasenaDezenas, numero); } using var dbcontext = new SorteContext(); bool flagAdd = false; for (int i = 1; i <= 60; i++) { var estatistica = dbcontext .MegasenaCounters .Where(e => e.DataConcurso == ms.DataConcurso && e.Numero == i) .FirstOrDefault(); if (estatistica == null) { Console.WriteLine(string.Format("Processando Concurso {0} - Número {1}", ms.Concurso, i)); flagAdd = true; dbcontext.MegasenaCounters.Add( new MegasenaCounter { DataConcurso = ms.DataConcurso, Numero = i, Quantidade = i switch { 1 => megasenaDezenas.Dez01, 2 => megasenaDezenas.Dez02, 3 => megasenaDezenas.Dez03, 4 => megasenaDezenas.Dez04, 5 => megasenaDezenas.Dez05, 6 => megasenaDezenas.Dez06, 7 => megasenaDezenas.Dez07, 8 => megasenaDezenas.Dez08, 9 => megasenaDezenas.Dez09, 10 => megasenaDezenas.Dez10, 11 => megasenaDezenas.Dez11, 12 => megasenaDezenas.Dez12, 13 => megasenaDezenas.Dez13, 14 => megasenaDezenas.Dez14, 15 => megasenaDezenas.Dez15, 16 => megasenaDezenas.Dez16, 17 => megasenaDezenas.Dez17, 18 => megasenaDezenas.Dez18, 19 => megasenaDezenas.Dez19, 20 => megasenaDezenas.Dez20, 21 => megasenaDezenas.Dez21, 22 => megasenaDezenas.Dez22, 23 => megasenaDezenas.Dez23, 24 => megasenaDezenas.Dez24, 25 => megasenaDezenas.Dez25, 26 => megasenaDezenas.Dez26, 27 => megasenaDezenas.Dez27, 28 => megasenaDezenas.Dez28, 29 => megasenaDezenas.Dez29, 30 => megasenaDezenas.Dez30, 31 => megasenaDezenas.Dez31, 32 => megasenaDezenas.Dez32, 33 => megasenaDezenas.Dez33, 34 => megasenaDezenas.Dez34, 35 => megasenaDezenas.Dez35, 36 => megasenaDezenas.Dez36, 37 => megasenaDezenas.Dez37, 38 => megasenaDezenas.Dez38, 39 => megasenaDezenas.Dez39, 40 => megasenaDezenas.Dez40, 41 => megasenaDezenas.Dez41, 42 => megasenaDezenas.Dez42, 43 => megasenaDezenas.Dez43, 44 => megasenaDezenas.Dez44, 45 => megasenaDezenas.Dez45, 46 => megasenaDezenas.Dez46, 47 => megasenaDezenas.Dez47, 48 => megasenaDezenas.Dez48, 49 => megasenaDezenas.Dez49, 50 => megasenaDezenas.Dez50, 51 => megasenaDezenas.Dez51, 52 => megasenaDezenas.Dez52, 53 => megasenaDezenas.Dez53, 54 => megasenaDezenas.Dez54, 55 => megasenaDezenas.Dez55, 56 => megasenaDezenas.Dez56, 57 => megasenaDezenas.Dez57, 58 => megasenaDezenas.Dez58, 59 => megasenaDezenas.Dez59, 60 => megasenaDezenas.Dez60, _ => 0 } });
public static void ExtractNumbersFromFile(string filename) { var htmlDoc = new HtmlDocument(); var enc = Encoding.GetEncoding(28591); htmlDoc.Load(filename, enc); var webtrs = htmlDoc.DocumentNode.SelectNodes("//tr"); int count = 0; var Megasenas = new List <MegasenaRecord>(); var beginTime = DateTime.Now; Console.WriteLine(string.Format("Iniciando processo de extração dos números às {0}", beginTime.ToString("HH:mm:ss"))); foreach (var trs in webtrs) { var webtds = trs.SelectNodes("//td"); count++; int cols = 0; var record = new MegasenaRecord(); int concursoCorrente = 0; int i = 0; double db; MegasenaCidadeRecord cidade = new MegasenaCidadeRecord(); var maxCols = 21; foreach (var tds in webtds) { string text = tds.InnerText.Replace(" ", " ").Trim(); if (cols == 0 && !int.TryParse(text, out _)) { cols = 10; maxCols = 12; } // Cidade (Coluna) if (cols == 1 && !DateTime.TryParse(text, out _)) { cols = 11; maxCols = 12; } // UF (Coluna) switch (cols) { case 0: // Concurso if (int.TryParse(text, out i)) { if (concursoCorrente != i) { record = new MegasenaRecord(); concursoCorrente = i; } else { i = 0; } } else { i = 0; } record.Concurso = concursoCorrente; break; //Data Sorteio case 1: if (DateTime.TryParse(text, out DateTime dt)) { record.DataConcurso = dt; } break; //1ª Dezena case 2: if (int.TryParse(text, out i)) { record.NumerosSorteados.Add(new NumeroRecord() { Numero = i, Ordem = 1 }); } break; //2ª Dezena case 3: if (int.TryParse(text, out i)) { record.NumerosSorteados.Add(new NumeroRecord() { Numero = i, Ordem = 2 }); } break; //3ª Dezena case 4: if (int.TryParse(text, out i)) { record.NumerosSorteados.Add(new NumeroRecord() { Numero = i, Ordem = 3 }); } break; //4ª Dezena case 5: if (int.TryParse(text, out i)) { record.NumerosSorteados.Add(new NumeroRecord() { Numero = i, Ordem = 4 }); } break; //5ª Dezena case 6: if (int.TryParse(text, out i)) { record.NumerosSorteados.Add(new NumeroRecord() { Numero = i, Ordem = 5 }); } break; //6ª Dezena case 7: if (int.TryParse(text, out i)) { record.NumerosSorteados.Add(new NumeroRecord() { Numero = i, Ordem = 6 }); } break; //Arrecadacao_Total case 8: if (double.TryParse(text, out db)) { record.ArredacaoTotal = db; } break; //Ganhadores_Sena case 9: if (int.TryParse(text, out i)) { record.Ganhadores = i; } break; //Cidade case 10: cidade = new MegasenaCidadeRecord { Cidade = text }; break; //UF case 11: cidade.UF = text; record.Cidades.Add(cidade); break; //Rateio_Sena case 12: if (double.TryParse(text, out db)) { record.Rateio = db; } break; //Ganhadores_Quina case 13: if (int.TryParse(text, out i)) { record.GanhadoresQuina = i; } break; //Rateio_Quina case 14: if (double.TryParse(text, out db)) { record.RateioQuina = db; } break; //Ganhadores_Quadra case 15: if (int.TryParse(text, out i)) { record.GanhadoresQuadra = i; } break; //Rateio_Quadra case 16: if (double.TryParse(text, out db)) { record.RateioQuadra = db; } break; //Acumulado case 17: record.Acumulado = text; break; //Valor_Acumulado case 18: if (double.TryParse(text, out db)) { record.ValorAcumulado = db; } break; //Estimativa_Prêmio case 19: if (double.TryParse(text, out db)) { record.EstimativaPremio = db; } break; //Acumulado_Mega_da_Virada case 20: if (double.TryParse(text, out db)) { record.AcumuladoVirada = db; } break; } cols++; if (cols == maxCols) { Megasenas.Add(record); using var context = new SorteContext(); var recordMS = context .Megasenas .Include(e => e.Cidades) .Include(e => e.NumerosSorteados) .Where(e => e.Concurso == concursoCorrente).FirstOrDefault(); var AddFlag = recordMS == null; var UpdFlag = false; var messageProcess = ""; if (AddFlag) { messageProcess = string.Format("Processando Data {0} - Concurso {1}", record.DataConcurso, concursoCorrente); recordMS = new Megasena() { DataConcurso = record.DataConcurso, Concurso = record.Concurso, ArredacaoTotal = record.ArredacaoTotal, Ganhadores = record.Ganhadores, Rateio = record.Rateio, GanhadoresQuina = record.GanhadoresQuina, RateioQuina = record.RateioQuina, GanhadoresQuadra = record.GanhadoresQuadra, RateioQuadra = record.RateioQuadra, Acumulado = record.Acumulado, ValorAcumulado = record.ValorAcumulado, EstimativaPremio = record.EstimativaPremio, AcumuladoVirada = record.AcumuladoVirada }; foreach (var nrs in record.NumerosSorteados) { recordMS.NumerosSorteados.Add(new Sorteados() { Numero = nrs.Numero, Ordem = nrs.Ordem }); } } else { if (recordMS.ArredacaoTotal.HasValue && (!record.ArredacaoTotal.Equals(recordMS.ArredacaoTotal.Value))) { recordMS.ArredacaoTotal = record.ArredacaoTotal; UpdFlag = true; messageProcess += (messageProcess.Length > 0 ? ", " : "") + "Atualizando Arrecadação Total"; } if (recordMS.Ganhadores.HasValue && (!record.Ganhadores.Equals(recordMS.Ganhadores.Value))) { recordMS.Ganhadores = record.Ganhadores; UpdFlag = true; messageProcess += (messageProcess.Length > 0 ? ", " : "") + "Atualizando Ganhadores"; } if (recordMS.Rateio.HasValue && (!record.Rateio.Equals(recordMS.Rateio.Value))) { recordMS.Rateio = record.Rateio; UpdFlag = true; messageProcess += (messageProcess.Length > 0 ? ", " : "") + "Atualizando Rateio"; } if (recordMS.GanhadoresQuina.HasValue && (recordMS.GanhadoresQuina.Value != record.GanhadoresQuina)) { recordMS.GanhadoresQuina = record.GanhadoresQuina; UpdFlag = true; messageProcess += (messageProcess.Length > 0 ? ", " : "") + "Atualizando Ganhadores Quina"; } if (recordMS.RateioQuina.HasValue && (recordMS.RateioQuina.Value != record.RateioQuina)) { recordMS.RateioQuina = record.RateioQuina; UpdFlag = true; messageProcess += (messageProcess.Length > 0 ? ", " : "") + "Atualizando Rateio Quina"; } if (recordMS.GanhadoresQuadra.HasValue && (recordMS.GanhadoresQuadra.Value != record.GanhadoresQuadra)) { recordMS.GanhadoresQuadra = record.GanhadoresQuadra; UpdFlag = true; messageProcess += (messageProcess.Length > 0 ? ", " : "") + "Atualizando Ganhadores Quadra"; } if (recordMS.RateioQuadra.HasValue && (recordMS.RateioQuadra.Value != record.RateioQuadra)) { recordMS.RateioQuadra = record.RateioQuadra; UpdFlag = true; messageProcess += (messageProcess.Length > 0 ? ", " : "") + "Atualizando Rateio Quadra"; } if (!string.IsNullOrEmpty(recordMS.Acumulado) && (recordMS.Acumulado != record.Acumulado)) { recordMS.Acumulado = record.Acumulado; UpdFlag = true; messageProcess += (messageProcess.Length > 0 ? ", " : "") + "Atualizando Acumulado"; } if (recordMS.ValorAcumulado.HasValue && (recordMS.ValorAcumulado.Value != record.ValorAcumulado)) { recordMS.ValorAcumulado = record.ValorAcumulado; UpdFlag = true; messageProcess += (messageProcess.Length > 0 ? ", " : "") + "Atualizando Valor Acumulado"; } if (recordMS.EstimativaPremio.HasValue && (recordMS.EstimativaPremio.Value != record.EstimativaPremio)) { recordMS.EstimativaPremio = record.EstimativaPremio; UpdFlag = true; messageProcess += (messageProcess.Length > 0 ? ", " : "") + "Atualizando Estimativa do Prêmio"; } if (recordMS.AcumuladoVirada.HasValue && (recordMS.AcumuladoVirada.Value != record.AcumuladoVirada)) { recordMS.AcumuladoVirada = record.AcumuladoVirada; UpdFlag = true; messageProcess += (messageProcess.Length > 0 ? ", " : "") + "Atualizando Acumulado Virada"; } } foreach (var cds in record.Cidades) { if (cds.Cidade.Trim().Length + cds.UF.Trim().Length > 0) { if (recordMS.Cidades.Where(e => e.Cidade == cds.Cidade && e.UF == cds.UF).FirstOrDefault() == null) { recordMS.Cidades.Add(new MegasenaCidade() { Cidade = cds.Cidade, UF = cds.UF }); UpdFlag = true; } } } if (!string.IsNullOrEmpty(messageProcess)) { Console.WriteLine(string.Format("Processando Data {0} - Concurso {1} - {2}.", record.DataConcurso, concursoCorrente, messageProcess)); messageProcess = ""; } if (AddFlag) { context.Megasenas.Add(recordMS); } else if (UpdFlag) { context.Megasenas.Update(recordMS); } if (AddFlag || UpdFlag) { context.SaveChanges(); } count++; cols = 0; maxCols = 21; } } break; } Console.WriteLine(string.Format("Finalizando processo de extração dos números às {0}, levou {1} tempo de execução.", DateTime.Now.ToString("HH:mm:ss"), DateTime.Now.Subtract(beginTime).ToString())); htmlDoc.OptionAutoCloseOnEnd = true; }