public DB_AGIN_Baccarat_Check(DB_AGIN_Baccarat baccarat, int subLMax, int freqMin, KeyValuePair <int, int>[] totalLMin) { Baccarat = baccarat; SubLMax = subLMax; FreqMin = freqMin; TotalLMin = totalLMin; }
public static DB_AGIN_Baccarat ExtractObj(int coordinateX, int coordinateY, string fileName, AGIN_3840x2160_Baccarat_TblLevel1 dataAnalysis, DateTime createdOn, long createdBy, DateTime lastModifiedOn, long lastModifiedBy) { DB_AGIN_Baccarat baccarat = new DB_AGIN_Baccarat(); baccarat.Id = 0; baccarat.CoordinateX = coordinateX; baccarat.CoordinateY = coordinateY; baccarat.FileNames = string.Format(";{0};", fileName); baccarat.DataAnalysis = new DB_AGIN_Baccarat_Tbl(); for (int x = 0; x < dataAnalysis.Cells.Length; x++) { baccarat.DataAnalysis.Cells.Add(new List <DB_AGIN_Baccarat_Cell>()); for (int y = 0; y < dataAnalysis.Cells[x].Length; y++) { baccarat.DataAnalysis.Cells[x].Add(new DB_AGIN_Baccarat_Cell()); baccarat.DataAnalysis.Cells[x][y].CoordinateX = x; baccarat.DataAnalysis.Cells[x][y].CoordinateY = y; baccarat.DataAnalysis.Cells[x][y].PercentB = dataAnalysis.Cells[x][y].PercentB; baccarat.DataAnalysis.Cells[x][y].PercentG = dataAnalysis.Cells[x][y].PercentG; baccarat.DataAnalysis.Cells[x][y].PercentR = dataAnalysis.Cells[x][y].PercentR; baccarat.DataAnalysis.Cells[x][y].Matches = dataAnalysis.Cells[x][y].Matches; baccarat.DataAnalysis.Cells[x][y].CircleFsLen = dataAnalysis.Cells[x][y].CircleFsLen; } } baccarat.DataAnalysis.UpdTotal(); baccarat.CreatedOn = createdOn; baccarat.CreatedBy = createdBy; baccarat.LastModifiedOn = lastModifiedOn; baccarat.LastModifiedBy = lastModifiedBy; return(baccarat); }
public DB_AGIN_Baccarat_Check(DB_AGIN_Baccarat baccarat, dynamic config) { Baccarat = baccarat; SubLMax = (int)JsonHelper.GetElBySelector(config, "freq-l-sub-max").Value; FreqMin = (int)JsonHelper.GetElBySelector(config, "freq-n-min").Value; var freq_l_min = JsonHelper.GetElBySelector(config, "freq-l-min"); TotalLMin = new KeyValuePair <int, int> [freq_l_min.Count]; for (int i = 0; i < TotalLMin.Length; i++) { var freq_l = JsonHelper.GetElBySelector(freq_l_min, string.Format("[{0}]", i)); TotalLMin[i] = new KeyValuePair <int, int>((int)JsonHelper.GetElBySelector(freq_l, "freq-l").Value, (int)JsonHelper.GetElBySelector(freq_l, "total-notify").Value); } }
public DB_AGIN_Baccarat Clone() { DB_AGIN_Baccarat baccarat = new DB_AGIN_Baccarat(); baccarat.Id = Id; baccarat.CoordinateX = CoordinateX; baccarat.CoordinateY = CoordinateY; baccarat.FileNames = FileNames; baccarat.DataAnalysis = DataAnalysis.Clone(); baccarat.CreatedOn = CreatedOn; baccarat.CreatedBy = CreatedBy; baccarat.LastModifiedOn = LastModifiedOn; baccarat.LastModifiedBy = LastModifiedBy; return(baccarat); }
private void InitAGINs() { LatestAGINs = new List <DB_AGIN_Baccarat>(); SQLiteCommand cmd = ConnHelper.ConnDb.CreateCommand(); try { #region SQLiteCommand: Initialize #region cmd.CommandText = string.Format(@"") cmd.CommandText = string.Format(@" SELECT A.* FROM AGIN A WHERE Id IN (SELECT MAX(Id) FROM AGIN GROUP BY CoordinateX, CoordinateY)"); #endregion cmd.CommandType = CommandType.Text; cmd.CommandTimeout = CONFIG_CONN_TIMEOUT; #endregion #region SQLiteCommand: Parameters #endregion #region SQLiteCommand: Connection DataSet ds = ConnHelper.ExecCmd(cmd); #endregion #region For: Retrieve DataTable dt = ds.Tables[0]; List <string> cols = ToCols(dt); foreach (DataRow dr in dt.Rows) { LatestAGINs.Add(DB_AGIN_Baccarat.ExtractDB(dr, cols)); } #endregion #region For: Clean dt.Clear(); ds.Clear(); dt.Dispose(); ds.Dispose(); #endregion } catch (Exception ex) { throw new Exception(string.Format("{0}{1}", ex.Message, ex.StackTrace), ex); } finally { cmd.Dispose(); } }
public DB_AGIN_Baccarat_Check(DB_AGIN_Baccarat baccarat) { Baccarat = baccarat; SubLMax = 9; FreqMin = 3; TotalLMin = new KeyValuePair <int, int>[9] { new KeyValuePair <int, int>(1, 12), // max: 16 new KeyValuePair <int, int>(2, 11), // max: 15 new KeyValuePair <int, int>(3, 15), // max: 19 new KeyValuePair <int, int>(4, 16), // max: 19 (20) new KeyValuePair <int, int>(5, 17), // max: 21 new KeyValuePair <int, int>(6, 18), // max: 21 new KeyValuePair <int, int>(7, 21), // max: 23 new KeyValuePair <int, int>(8, 24), // max: 25 new KeyValuePair <int, int>(9, 27) }; }
public static DB_AGIN_Baccarat ExtractDB(DataRow dr, List <string> cols) { DB_AGIN_Baccarat baccarat = new DB_AGIN_Baccarat(); if (cols.Contains("Id") && DBNull.Value != dr["Id"]) { baccarat.Id = (long)dr["Id"]; } if (cols.Contains("CoordinateX") && DBNull.Value != dr["CoordinateX"]) { baccarat.CoordinateX = (int)dr["CoordinateX"]; } if (cols.Contains("CoordinateY") && DBNull.Value != dr["CoordinateY"]) { baccarat.CoordinateY = (int)dr["CoordinateY"]; } if (cols.Contains("FileNames") && DBNull.Value != dr["FileNames"]) { baccarat.FileNames = (string)dr["FileNames"]; } if (cols.Contains("DataAnalysis") && DBNull.Value != dr["DataAnalysis"]) { baccarat.DataAnalysis = JsonConvert.DeserializeObject <DB_AGIN_Baccarat_Tbl>((string)dr["DataAnalysis"]); } if (cols.Contains("CreatedOn") && DBNull.Value != dr["CreatedOn"]) { baccarat.CreatedOn = (DateTime)dr["CreatedOn"]; } if (cols.Contains("CreatedBy") && DBNull.Value != dr["CreatedBy"]) { baccarat.CreatedBy = (long)dr["CreatedBy"]; } if (cols.Contains("LastModifiedOn") && DBNull.Value != dr["LastModifiedOn"]) { baccarat.LastModifiedOn = (DateTime)dr["LastModifiedOn"]; } if (cols.Contains("LastModifiedBy") && DBNull.Value != dr["LastModifiedBy"]) { baccarat.LastModifiedBy = (long)dr["LastModifiedBy"]; } return(baccarat); }
public void Analysis2_AGIN() { List <DB_AGIN_Baccarat> agins = new List <DB_AGIN_Baccarat>(); SQLiteCommand cmd = ConnHelper.ConnDb.CreateCommand(); try { #region SQLiteCommand: Initialize #region cmd.CommandText = string.Format(@"") cmd.CommandText = string.Format(@" SELECT ASUM.* FROM AGIN_SUMMARY ASUM WHERE ASUM.Id > 8281 ORDER BY ASUM.Id ASC"); #endregion cmd.CommandType = CommandType.Text; cmd.CommandTimeout = CONFIG_CONN_TIMEOUT; #endregion #region SQLiteCommand: Parameters #endregion #region SQLiteCommand: Connection DataSet ds = ConnHelper.ExecCmd(cmd); #endregion #region For: Retrieve DataTable dt = ds.Tables[0]; List <string> cols = ToCols(dt); foreach (DataRow dr in dt.Rows) { agins.Add(DB_AGIN_Baccarat.ExtractDB(dr, cols)); } #endregion #region For: Clean dt.Clear(); ds.Clear(); dt.Dispose(); ds.Dispose(); #endregion } catch (Exception ex) { throw new Exception(string.Format("{0}{1}", ex.Message, ex.StackTrace), ex); } finally { cmd.Dispose(); } int order_min = 1, idx = 1; List <List <object> > lst_vals = new List <List <object> >(); string cmd_text = string.Format(@"INSERT INTO AGIN_RESULT2 (SubId, LatestOrder, NumCircleRed, NumCircleBlue, Matches) VALUES (?, ?, ?, ?, ?)"); foreach (DB_AGIN_Baccarat agin in agins) { agin.DataAnalysis.UpdCoordinate(); int order = order_min - 1; while (agin.DataAnalysis.LatestOrder > order++) { List <DB_AGIN_Baccarat_Cell> cells = new List <DB_AGIN_Baccarat_Cell>(); agin.DataAnalysis.Cells.ForEach(x => { cells.AddRange(x.Where(y => order + 1 > y.Order)); }); cells = cells.OrderBy(x => x.Order).ToList(); lst_vals.Add(new List <object>() { agin.Id, order, cells.Count(x => x.Matches.Contains("circle-red")), cells.Count(x => x.Matches.Contains("circle-blue")), string.Format(";{0};", string.Join(";", cells[cells.Count - 1].Matches)) }); } System.Threading.Thread.Sleep(0); System.Windows.Forms.Application.DoEvents(); Console.Clear(); Console.WriteLine(string.Format("Information\t:: {0:P}", (double)idx++ / agins.Count)); } ConnHelper.ExecNonQueryCmdOptimizeMany(lst_vals, cmd_text); }
public void Analysis1_AGIN() { List <DB_AGIN_Baccarat> agins = new List <DB_AGIN_Baccarat>(); SQLiteCommand cmd = ConnHelper.ConnDb.CreateCommand(); try { #region SQLiteCommand: Initialize #region cmd.CommandText = string.Format(@"") cmd.CommandText = string.Format(@" SELECT ASUM.* FROM AGIN_SUMMARY ASUM WHERE ASUM.Id > 8281 ORDER BY ASUM.Id ASC"); #endregion cmd.CommandType = CommandType.Text; cmd.CommandTimeout = CONFIG_CONN_TIMEOUT; #endregion #region SQLiteCommand: Parameters #endregion #region SQLiteCommand: Connection DataSet ds = ConnHelper.ExecCmd(cmd); #endregion #region For: Retrieve DataTable dt = ds.Tables[0]; List <string> cols = ToCols(dt); foreach (DataRow dr in dt.Rows) { agins.Add(DB_AGIN_Baccarat.ExtractDB(dr, cols)); } #endregion #region For: Clean dt.Clear(); ds.Clear(); dt.Dispose(); ds.Dispose(); #endregion } catch (Exception ex) { throw new Exception(string.Format("{0}{1}", ex.Message, ex.StackTrace), ex); } finally { cmd.Dispose(); } int idx = 1; List <List <object> > lst_vals = new List <List <object> >(); string cmd_text = string.Format(@"INSERT INTO AGIN_RESULT1 (SubId, LatestOrder, FreqN, FreqL, FreqLSub, FreqColors) VALUES (?, ?, ?, ?, ?, ?)"); foreach (DB_AGIN_Baccarat agin in agins) { agin.DataAnalysis.UpdCoordinate(); int order = 0; while (agin.DataAnalysis.LatestOrder > order++) { DB_AGIN_Baccarat_Check baccarat_check = new DB_AGIN_Baccarat_Check(agin, 10, 1, new KeyValuePair <int, int>[10] { new KeyValuePair <int, int>(1, 1), new KeyValuePair <int, int>(2, 6), new KeyValuePair <int, int>(3, 9), new KeyValuePair <int, int>(4, 12), new KeyValuePair <int, int>(5, 15), new KeyValuePair <int, int>(6, 18), new KeyValuePair <int, int>(7, 21), new KeyValuePair <int, int>(8, 24), new KeyValuePair <int, int>(9, 27), new KeyValuePair <int, int>(10, 30) }); baccarat_check.Search(order).ForEach(x => { lst_vals.Add(new List <object>() { agin.Id, order, x.NFreq, x.CellsFreq.Count, x.CellsSub.Count, x.ColorsFreq }); }); } System.Threading.Thread.Sleep(0); System.Windows.Forms.Application.DoEvents(); Console.Clear(); Console.WriteLine(string.Format("Information\t:: {0:P}", (double)idx++ / agins.Count)); } ConnHelper.ExecNonQueryCmdOptimizeMany(lst_vals, cmd_text); }
public void HdlAGIN(string name) { try { string file_path = Path.Combine(CONFIG_DAFANBA_DIR_PRINT, name); if (File.Exists(file_path)) { AGIN_3840x2160_Baccarat agin_3840x2160_baccarat = null; ImageHelper.AnalysisImg_AGIN_3840x2160(file_path, out agin_3840x2160_baccarat); List <DB_AGIN_Baccarat> agins_img = DB_AGIN_Baccarat.ExtractImg(agin_3840x2160_baccarat, name, DateTime.Now, 0, DateTime.Now, 0); foreach (DB_AGIN_Baccarat agin_img in agins_img) { DB_AGIN_Baccarat agin_latest = LatestAGINs.Where(x => x.CoordinateX == agin_img.CoordinateX && x.CoordinateY == agin_img.CoordinateY).FirstOrDefault(); #region For: Save/Clean baccarat if (!new int[3] { 0, 203, 204 }.Contains(agin_img.DataAnalysis.TotalInvalid)) { agin_img.SaveDbTrack(ConnHelper); } if (0 != agin_img.DataAnalysis.TotalInvalid) { continue; } agin_img.Id = 0; agin_img.DataAnalysis.DelEmpty(); #endregion #region For: Merge baccarat bool merged = false; if (null != agin_latest) { int dist = DB_AGIN_Baccarat_Tbl.DistMerge( agin_latest.DataAnalysis, agin_img.DataAnalysis, DB_AGIN_Baccarat_Tbl.DistMax(agin_latest.DataAnalysis, agin_img.DataAnalysis)); if (-1 != dist) { DB_AGIN_Baccarat_Tbl.ExecMerge(agin_latest.DataAnalysis, agin_img.DataAnalysis, dist); agin_latest.FileNames = Regex.Replace(agin_latest.FileNames + agin_img.FileNames, @"(;;)", ";"); agin_latest.LastModifiedOn = agin_img.LastModifiedOn; agin_latest.LastModifiedBy = agin_img.LastModifiedBy; merged = true; } } #endregion #region For: Add baccarat if (!merged) { if (null != agin_latest) { LatestAGINs.Remove(agin_latest); } LatestAGINs.Add(agin_img); agin_latest = LatestAGINs.Single(x => x.CoordinateX == agin_img.CoordinateX && x.CoordinateY == agin_img.CoordinateY); } #endregion #region For: Order baccarat agin_latest.DataAnalysis.UpdOrder( agin_latest.DataAnalysis.LatestOrder, agin_latest.DataAnalysis.LatestOrderCircle, agin_latest.DataAnalysis.LatestOrderX, agin_latest.DataAnalysis.LatestOrderY, agin_latest.DataAnalysis.LatestOrderXR, agin_latest.DataAnalysis.LatestOrderYR); #endregion #region For: Save baccarat agin_latest.SaveDb(ConnHelper); #endregion #region For: Alert via pattern(s) #region For: Baccarat pattern IEnumerable <DB_AGIN_Baccarat_Check_RstItem> pattern = agin_latest.ChkPattern(CONFIG_DAFANBA_ALERT_BACCARAT_PATTERN); foreach (DB_AGIN_Baccarat_Check_RstItem item in pattern) { AlertBaccaratPattern(agin_latest.CoordinateX, agin_latest.CoordinateY, item.NFreq, item.CellsFreq.Count, item.CellsSub.Count, item.ColorsFreq, file_path); } #endregion #endregion } } } catch (Exception ex) { throw new Exception(string.Format("{0}{1}", ex.Message, ex.StackTrace), ex); } }