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); }
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; } }
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()); }