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