public ActionResult GameChangeDetails(long gameID) { List <GameLog> list = new List <GameLog>(); CasinoGameAccessor cga = CasinoGameAccessor.CreateInstance <CasinoGameAccessor>(); DataTable dtBase = cga.QueryCasinoGameBase(gameID); if (dtBase == null || dtBase.Rows.Count == 0) { throw new AggregateException(); } string gameName = (string)dtBase.Rows[0]["GameName"];; GameLog log = new GameLog(); log.GameID = (long)dtBase.Rows[0]["ID"]; log.DomainID = (long)dtBase.Rows[0]["DomainID"]; log.Time = (DateTime)dtBase.Rows[0]["Ins"]; log.UserID = (long)dtBase.Rows[0]["SessionUserID"]; log.Changes = null; log.OperationType = GameLogOperationType.Create; list.Add(log); DataColumnCollection clsBase = dtBase.Columns; DataTable dtBaseHis = CasinoGameAccessor.QueryBaseGameHistory(gameID); if (dtBaseHis != null && dtBaseHis.Rows.Count > 0) { DataColumnCollection cls = dtBaseHis.Columns; list.AddRange(Compare(cls, dtBaseHis.Rows)); } if (DomainManager.CurrentDomainID != Constant.SystemDomainID) { DataTable dtGame = cga.QueryCasinoGame(DomainManager.CurrentDomainID, gameID); if (dtGame != null && dtGame.Rows.Count > 0) { DataTable dtGameHis = CasinoGameAccessor.QueryDomainGameHistory(DomainManager.CurrentDomainID, gameID); if (dtGameHis != null && dtGameHis.Rows.Count > 0) { DataColumnCollection cls = dtGameHis.Columns; DataTable dtNearest = CasinoGameAccessor.QueryNearestBaseGameHistory(gameID, (DateTime)dtGameHis.Rows[0]["Ins"]); DataRow drFirstBase = dtNearest != null ? dtNearest.Rows.Count > 0 ? dtNearest.Rows[0] : null : null; list.AddRange(Compare(cls, dtGameHis.Rows, false, drFirstBase)); } } } if (list.Count > 0) { UserAccessor ua = UserAccessor.CreateInstance <UserAccessor>(); foreach (GameLog gl in list) { gl.Username = ua.GetUsername(gl.UserID); } } this.ViewData["GameName"] = gameName; return(this.View("GameChangeDetails", list.OrderByDescending(l => l.Time).ToList())); }