private List <LotteryDrawResult> GetScrapeResults(LotteryDetails lotteryDetails, IHtmlDocument document)
        {
            List <LotteryDrawResult> lotteryDrawResultArr = new List <LotteryDrawResult>();
            IEnumerable <IElement>   tableElement         = null;

            tableElement = document.All.Where(x => x.ClassName == "Grid search-lotto-result-table" &&
                                              x.Id == "cphContainer_cpContent_GridView1");
            if (tableElement.Any())
            {
                IElement tbody = tableElement.First();
                foreach (INode node in tbody.ChildNodes)
                {
                    foreach (INode tr in node.ChildNodes.Skip(1))
                    {
                        INodeList tds = tr.ChildNodes;
                        LotteryDrawResultSetup setup = new LotteryDrawResultSetup();
                        if (tr.ChildNodes.Length >= 5)
                        {
                            setup.PutNumberSequence(tr.ChildNodes[2].TextContent);
                            setup.DrawDate   = DateTime.ParseExact(tr.ChildNodes[3].TextContent, "M/d/yyyy", CultureInfo.InvariantCulture);
                            setup.JackpotAmt = double.Parse(tr.ChildNodes[4].TextContent);
                            setup.Winners    = int.Parse(tr.ChildNodes[5].TextContent);
                            setup.GameCode   = lotteryDetails.GameCode;
                            lotteryDrawResultArr.Add(setup);
                        }
                    }
                }
            }
            return(lotteryDrawResultArr);
        }
        public LotteryDrawResult GetLotteryDrawResultByDrawDate(GameMode gameMode, DateTime drawDate)
        {
            LotteryDrawResultSetup lotteryDrawResult = null;

            using (OleDbConnection conn = DatabaseConnectionFactory.GetDataSource())
                using (OleDbCommand command = new OleDbCommand())
                {
                    command.CommandType = CommandType.Text;
                    command.CommandText = GetStandardSelectQuery() + " AND draw_date = CDATE(@drawDate)";
                    command.Parameters.AddWithValue("@game_cd", OleDbType.Integer).Value = (int)gameMode;
                    command.Parameters.AddWithValue("@drawDate", OleDbType.DBDate).Value = drawDate.ToString();
                    command.Connection = conn;
                    conn.Open();

                    using (OleDbDataReader reader = command.ExecuteReader())
                    {
                        if (!reader.HasRows)
                        {
                            return(lotteryDrawResult);
                        }
                        while (reader.Read())
                        {
                            return(GetLotteryDrawResultSetup(reader, gameMode));
                        }
                    }
                }
            return(lotteryDrawResult);
        }
        public List <int[]> GenerateSequence()
        {
            StartPickGeneration();
            int          maximumPickCount = GetFieldParamValueForCount(0);
            int          matchPerc        = GetFieldParamValueForCount(1);
            int          maxLoopBreaker   = int.MaxValue - 100;
            int          maxLoopCtr       = 0;
            List <int[]> results          = new List <int[]>();
            DrawResultWinCountInputModel sampleData;
            LotteryDrawResultSetup       lotteryDrawResult = new LotteryDrawResultSetup();

            lotteryDrawResult.GameCode = lotteryDataServices.LotteryDetails.GameCode;
            Random ran = new Random();

            while (results.Count < maximumPickCount)
            {
                int[] randomSeq = LuckyPickGenerator(ran);
                lotteryDrawResult.ResetSequenceToZero();
                lotteryDrawResult.FillNumberBySeq(randomSeq);
                sampleData = lotteryDrawResult.GetDrawResultWinCountInputModel(true);
                DrawResultWinCountOutputModel output = DrawResultWinCountPredictor.Predict(sampleData);
                int score = (int)(output.Score * 100);

                PickGenerationProgressEvent.IncrementGenerationAttemptCount();

                if (score >= matchPerc)
                {
                    Array.Sort(randomSeq);
                    results.Add(randomSeq);
                    PickGenerationProgressEvent.IncrementGeneratedPickCount();
                }
                if (!IsContinuePickGenerationProgress())
                {
                    break;
                }
                if (maxLoopCtr++ > maxLoopBreaker)
                {
                    break;
                }
            }
            RaisePickGenerationProgress();
            StopPickGeneration();
            return(results);
        }
        private LotteryDrawResultSetup GetLotteryDrawResultSetup(OleDbDataReader reader, GameMode gameMode)
        {
            LotteryDrawResultSetup dr = new LotteryDrawResultSetup();

            dr.DrawDate = DateTime.Parse(reader["draw_date"].ToString());
            dr.GameCode = (int)gameMode;
            dr.Id       = long.Parse(reader["ID"].ToString());
            dr.Num1     = int.Parse(reader["num1"].ToString());
            dr.Num2     = int.Parse(reader["num2"].ToString());
            dr.Num3     = int.Parse(reader["num3"].ToString());
            dr.Num4     = int.Parse(reader["num4"].ToString());
            dr.Num5     = int.Parse(reader["num5"].ToString());
            dr.Num6     = int.Parse(reader["num6"].ToString());
            dr.SortNumbers();
            dr.JackpotAmt = double.Parse(reader["jackpot_amt"].ToString());
            dr.Winners    = int.Parse(reader["winners"].ToString());
            dr.Id         = long.Parse(reader["ID"].ToString());
            return(dr);
        }