Exemple #1
0
        private UserGameType CalculateRating(UserGameType item, double result, double eResult, int userID, SqlTransaction t)
        {
            //Calculate K-Factor of both player
            RatingKFactor kFactor;

            //UserGameType item;
            //Calculate Rating
            kFactor            = RatingKFactors.Instance.GetRatingKFactor(item.EloRating, item.NoOfGames);
            item.NoOfGames     = item.NoOfGames + 1;
            item.EloRating     = item.EloRating + UData.ToInt32(System.Math.Round(kFactor.KFactor * (result - eResult)));
            item.StoredMatches = item.StoredMatches + 1;

            //SqlTransaction t = null;
            try
            {
                //t = SqlHelper.BeginTransaction(Config.ConnectionString);

                //Save Rating
                item.Save(t);

                //Calculate Ranking -> Save Ranking

                CalculateRanking(item, t);

                //SqlHelper.CommitTransaction(t);
            }
            catch (Exception ex)
            {
                //SqlHelper.RollbackTransaction(t);
                throw ex;
            }
            return(item);
        }
Exemple #2
0
        public DataSet SetUserEngine()
        {
            int    userID     = base.Kv.GetInt32("UserID");
            string engineName = base.Kv.Get("EngineName");
            string userStatus = base.Kv.Get("UserStatus");

            DataSet ds = new DataSet();

            if (userID != 0)
            {
                Engine    eng;
                DataTable dt = Engine.GetEngineByName(base.Kv.Cxt, engineName);
                if (dt.Rows.Count > 0)
                {
                    eng = new Engine(base.Kv.Cxt, dt.Rows[0]);
                }
                else
                {
                    eng             = new Engine();
                    eng.Name        = engineName.Trim();
                    eng.Description = engineName;
                    eng.Save();
                }
                User user = new User(base.Kv.Cxt, userID);
                user.EngineID     = eng.EngineID;
                user.UserStatusID = UData.ToInt32(userStatus);
                user.Save();
            }

            return(ds);
        }
        public void GetUserGamesRating()
        {
            int totalGames = userGamesRating.Select().Count();
            int whiteGames = userGamesRating.Select("WhiteUserID=" + Ap.CurrentUserID).Count();
            int winGames   = userGamesRating.Select("WhiteUserID=" + Ap.CurrentUserID + " AND GameResultID=1").Count();

            winGames = winGames + userGamesRating.Select("BlackUserID=" + Ap.CurrentUserID + " AND GameResultID=2").Count();
            int   drawGames   = userGamesRating.Select("WhiteUserID=" + Ap.CurrentUserID + " AND BlackUserID=" + Ap.CurrentUserID + " AND GameResultID=4").Count();
            int   lossesGames = totalGames - (winGames + drawGames);
            float res         = ((float)(((float)drawGames / 2) + winGames) / totalGames) * 100;
            int   nOpponent   = (from DataRow dr in userGamesRating.Rows
                                 where (string)dr["WhiteUserID"] != Ap.CurrentUserID.ToString()
                                 select(string) dr["WhiteUserID"]).Distinct().Union((from DataRow dr in userGamesRating.Rows
                                                                                     where (string)dr["WhiteUserID"] != Ap.CurrentUserID.ToString()
                                                                                     select(string) dr["WhiteUserID"]).Distinct()).Count();
            int    rating = UData.ToInt32(userGamesRating.Select().FirstOrDefault()["EloRating"].ToString());
            string str    = (from DataRow dr in userGamesRating.Rows
                             orderby dr["StartDate"] descending
                             select(string) dr["StartDate"]).FirstOrDefault();
        }
        public void SendMessage()
        {
            UserMessage item = new UserMessage();

            try
            {
                string    selectQuery;
                DataTable table;
                selectQuery = "SELECT UserID FROM [User] WHERE UserName = '******'";
                table       = BaseCollection.ExecuteSql(selectQuery);

                if (table != null && table.Rows.Count > 0)
                {
                    UserIDTo = UData.ToInt32(table.Rows[0][0]);
                }
                else
                {
                    UserIDTo = 0;
                }

                item.Cxt               = base.Kv.Cxt;
                item.UserIDFrom        = UserIDFrom;
                item.UserIDTo          = UserIDTo;
                item.EmailTime         = DateTime.Now;
                item.Text              = Text;
                item.Subject           = Subject;
                item.StatusIDFrom      = StatusIDFrom;
                item.StatusIDTo        = StatusIDTo;
                item.Size              = Size;
                item.Cxt.CurrentUserID = base.Kv.Cxt.CurrentUserID;

                item.Save();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemple #5
0
        private DataTable GetUserCentaurGamesRating(int chessTypeID)
        {
            DataView dv;

            dv           = new DataView(userGamesRating);
            dv.RowFilter = "ChessTypeID=" + chessTypeID;
            totalGames   = dv.Count;
            ranking      = dv.ToTable().Rows[0]["Position"].ToString() + "/" + dv.ToTable().Rows[0]["TotalPlayers"].ToString();

            dv           = new DataView(userGamesRating);
            dv.RowFilter = "WhiteUserID=" + userID + " AND ChessTypeID=" + chessTypeID;
            whiteGames   = dv.Count;

            dv           = new DataView(userGamesRating);
            dv.RowFilter = "WhiteUserID=" + userID + " AND ChessTypeID=" + chessTypeID + " AND GameResultID=2";
            winGames     = dv.Count;
            dv           = new DataView(userGamesRating);
            dv.RowFilter = "BlackUserID=" + userID + " AND ChessTypeID=" + chessTypeID + " AND GameResultID=3";
            winGames     = winGames + dv.Count;

            dv           = new DataView(userGamesRating);
            dv.RowFilter = "ChessTypeID=" + chessTypeID + " AND BlackUserID=" + userID + " AND GameResultID=4";
            drawGames    = dv.Count;

            lossesGames = totalGames - (winGames + drawGames);
            result      = System.Math.Round((decimal)(((decimal)(drawGames / 2) + winGames) / totalGames) * 100, 2);

            nOpponent = (from DataRow dr in userGamesRating.Rows
                         where (string)dr["WhiteUserID"] != userID.ToString() &&
                         (string)dr["ChessTypeID"] == chessTypeID.ToString()
                         select(string) dr["WhiteUserID"]).Distinct().Union((from DataRow dr in userGamesRating.Rows
                                                                             where (string)dr["BlackUserID"] != userID.ToString() &&
                                                                             (string)dr["ChessTypeID"] == chessTypeID.ToString()
                                                                             select(string) dr["BlackUserID"]).Distinct()).Count();
            int whiteAvgElo = 0;
            int blackAvgElo = 0;
            int oppCount    = 0;

            dv           = new DataView(userGamesRating);
            dv.RowFilter = "ChessTypeID=" + chessTypeID;

            foreach (DataRow item in dv.ToTable().Rows)
            {
                if (item["WhiteUserID"].ToString() == userID.ToString())
                {
                    blackAvgElo += UData.ToInt32(item["EloBlackBefore"]);
                }
                else
                {
                    whiteAvgElo += UData.ToInt32(item["EloWhiteBefore"]);
                }
                oppCount++;
            }

            if (oppCount > 0)
            {
                opponentsRating = (whiteAvgElo + blackAvgElo) / oppCount;
            }
            else
            {
                opponentsRating = 0;
            }

            dv           = new DataView(userGamesRating);
            dv.RowFilter = "ChessTypeID=" + chessTypeID;
            rating       = UData.ToInt32(dv.ToTable().Rows[0]["EloRating"]);
            if (!string.IsNullOrEmpty(dv.ToTable().Rows[0]["StartDate"].ToString()))
            {
                date = Convert.ToDateTime(dv.ToTable().Rows[0]["StartDate"]).ToShortDateString();
            }
            else
            {
                date = DateTime.Now.ToShortDateString();
            }
            dv           = new DataView(userGamesRating);
            dv.RowFilter = "ChessTypeID=" + chessTypeID;

            return(dv.ToTable());
        }