예제 #1
0
        private void Init()
        {
            if (UserFormulas.Instance == null)
            {
                return;
            }

            UserFormula formula = UserFormulas.Instance.GetUserFormula();

            if (formula == null)
            {
                return;
            }

            chkUnrated.Checked = formula.IsUnrated;
            chkRated.Checked   = formula.IsRated;
            chkDucats.Checked  = formula.IsDucate;

            chkNoComputer.Checked   = formula.IsNoComputer;
            chkNoCentaur.Checked    = formula.IsNoCentaur;
            chkFastInternet.Checked = formula.IsFastInternetOnly;

            numericMinElo.Value = formula.MinElo;
            numericMaxElo.Value = formula.MaxElo;

            numericMinTime.Value = formula.MinTime;
            numericMaxTime.Value = formula.MaxTime;

            numericMinGain.Value = formula.MinGainPerMove;
            numericMaxGain.Value = formula.MaxGainPerMove;

            comboBoxMinRank.SelectedValue = formula.RankID;
            numericMinDucats.Value        = formula.DucatesToOverride;
            chkActivate.Checked           = formula.IsActive;
        }
예제 #2
0
        public DataTable UpdateFormula()
        {
            UserFormula item;

            try
            {
                string    selectQuery;
                DataTable table;
                selectQuery = "SELECT TOP 1 * FROM UserFormula WHERE UserID = @p1";
                table       = BaseCollection.ExecuteSql(InfiChess.UserFormula, selectQuery, UserID);

                if (table != null && table.Rows.Count > 0)
                {
                    item = new UserFormula(base.Kv.Cxt, table.Rows[0]);
                }
                else
                {
                    item = new UserFormula();
                }

                item.Cxt    = base.Kv.Cxt;
                item.UserID = UserID;

                item.IsUnrated = IsUnrated;
                item.IsRated   = IsRated;
                item.IsDucate  = IsDucate;

                item.IsNoComputer       = IsNoComputer;
                item.IsNoCentaur        = IsNoCentaur;
                item.IsFastInternetOnly = IsFastInternetOnly;

                item.MinElo = MinElo;
                item.MaxElo = MaxElo;

                item.MinTime = MinTime;
                item.MaxTime = MaxTime;

                item.MinGainPerMove = MinGainPerMove;
                item.MaxGainPerMove = MaxGainPerMove;

                item.RankID            = RankID;
                item.DucatesToOverride = DucatesToOverride;
                item.IsActive          = IsActive;

                item.Cxt.CurrentUserID = base.Kv.Cxt.CurrentUserID;

                item.Save();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(Challenges.GetChallengesByRoomID(item.Cxt, base.Kv.GetInt32("RoomID"), item.Cxt.CurrentUserID));
        }
예제 #3
0
        private DataTable CheckUserFormula(DataTable dt)
        {
            if (UserFormulas.Instance == null)
            {
                return(dt);
            }

            UserFormula formula = UserFormulas.Instance.GetUserFormula();

            if (dt == null || dt.Rows.Count <= 0 || formula == null || !formula.IsActive)
            {
                return(dt);
            }

            DataTable FilteredTable = new DataTable();

            try
            {
                DataView dv = new DataView(dt);
                dv.RowFilter  = "ChallengerUserID = " + Ap.CurrentUserID;
                FilteredTable = dv.ToTable();

                DataTable     table       = new DataTable();
                DataTable     table1      = new DataTable();
                StringBuilder QueryFilter = new StringBuilder();

                int internetID = 5;
                if (formula.IsFastInternetOnly)
                {
                    internetID = 2;
                }

                if (formula.IsNoComputer)
                {
                    QueryFilter.Append("ChessTypeID <> 2 AND ");
                }

                if (formula.IsRated && !formula.IsUnrated)
                {
                    QueryFilter.Append("Condition = true AND ");
                }

                else if (!formula.IsRated && formula.IsUnrated)
                {
                    QueryFilter.Append("Condition = false AND ");
                }
                else if (!formula.IsRated && !formula.IsUnrated)
                {
                    QueryFilter.Append("(Condition = false AND Condition = true) AND ");
                }

                QueryFilter.Append("(GainPerMoveMin >= " + formula.MinGainPerMove + " AND " + " GainPerMoveMin<= " + formula.MaxGainPerMove + ") AND ");
                QueryFilter.Append("(GameTime >= " + formula.MinTime + " AND " + " GameTime<= " + formula.MaxTime + ")");


                string ChallengerRankID;
                if (formula.RankID == 7)
                {
                    ChallengerRankID = "ChallengerRankID <= " + formula.RankID;
                }
                else
                {
                    ChallengerRankID = "(ChallengerRankID <> 7 AND ChallengerRankID >= " + formula.RankID + ")";
                }

                dv           = new DataView(dt);
                dv.RowFilter = "ChallengerUserID <> " + Ap.CurrentUserID + " AND InternetC <= " + internetID + " AND ChallengerElo >= " + formula.MinElo + " AND ChallengerElo <= " + formula.MaxElo + " AND " + ChallengerRankID + " AND Type = 1 AND " + QueryFilter;
                table        = dv.ToTable();

                dv           = new DataView(dt);
                dv.RowFilter = "ChallengerUserID <> " + Ap.CurrentUserID + " AND InternetC <= " + internetID + " AND (ChallengerElo >= " + formula.MinElo + " AND ChallengerElo <= " + formula.MaxElo + ") AND " + ChallengerRankID + " AND Type <> 1 AND " + QueryFilter;
                table1       = dv.ToTable();

                FilteredTable.Merge(table);
                FilteredTable.Merge(table1);

                foreach (DataRow item in FilteredTable.Rows)
                {
                    DataRow r = dt.Select("ChallengeID = " + item["ChallengeID"])[0];
                    dt.Rows.Remove(r);
                }


                dv           = new DataView(dt);
                dv.RowFilter = "Type <> 1 AND TournamentMatchID = 0";
                dt           = dv.ToTable();

                if (dt.Rows.Count > 0)
                {
                    SocketClient.DeclineChallenges(dt);
                }
            }
            catch (Exception ex)
            {
                TestDebugger.Instance.WriteError(ex);
            }
            return(FilteredTable);
        }