public override OpRes doQuery(object param, GMUser user)
    {
        ParamGrandPrix p   = (ParamGrandPrix)param;
        OpRes          res = OpRes.op_res_failed;

        switch (p.m_queryType)
        {
        case ParamGrandPrix.QUERY_WEEK_CHAMPION:
        {
            m_result1.Clear();
            res = queryWeekChampion(user);
        }
        break;

        case ParamGrandPrix.QUERY_MATCH_DAY:
        {
            m_result2.Clear();
            ParamMatchDay pd = (ParamMatchDay)p.m_param;
            if (pd.m_isTop100)
            {
                res = queryMatchDayTop100(user, pd);
                m_result2.Sort(sortRank);
            }
            else
            {
                res = queryMatchDayForSpecialPlayer(user, pd);
            }
        }
        break;
        }

        return(res);
    }
    private OpRes queryMatchDayTop100(GMUser user, ParamMatchDay p)
    {
        DateTime mint = DateTime.Now, maxt = DateTime.Now;
        bool     res = Tool.splitTimeStr(p.m_matchDay, ref mint, ref maxt);

        if (!res)
        {
            return(OpRes.op_res_time_format_error);
        }

        IMongoQuery imq = Query.EQ("matchTime", BsonValue.Create(mint));

        return(queryMatchDay(user, imq, 100));
    }
        protected void onQueryTop100(object sender, EventArgs e)
        {
            GMUser         user  = (GMUser)Session["user"];
            ParamGrandPrix param = new ParamGrandPrix();

            param.m_queryType = ParamGrandPrix.QUERY_MATCH_DAY;
            var matchDayParam = new ParamMatchDay();

            matchDayParam.m_matchDay = m_time.Text;
            matchDayParam.m_isTop100 = true;
            param.m_param            = matchDayParam;

            OpRes res = user.doQuery(param, QueryType.queryTypeGrandPrix);

            genTable(m_result, res, param, user);
        }
    private OpRes queryMatchDayForSpecialPlayer(GMUser user, ParamMatchDay p)
    {
        DateTime mint = DateTime.Now, maxt = DateTime.Now;
        bool     res = Tool.splitTimeStr(p.m_matchDay, ref mint, ref maxt);

        if (!res)
        {
            return(OpRes.op_res_time_format_error);
        }

        int playerId = 0;

        if (!int.TryParse(p.m_playerId, out playerId))
        {
            return(OpRes.op_res_param_not_valid);
        }

        IMongoQuery imq1 = Query.LT("matchTime", BsonValue.Create(maxt));
        IMongoQuery imq2 = Query.GTE("matchTime", BsonValue.Create(mint));
        IMongoQuery imq3 = Query.EQ("playerId", BsonValue.Create(playerId));
        var         cond = Query.And(imq1, imq2, imq3);

        return(queryMatchDay(user, cond));
    }