Beispiel #1
0
 public CompetitionApiModel()
 {
     this.Iid       = 0;
     this.DateStart = this.DateEnd = DateTime.MinValue;
     this.FullName  = this.ShortName = String.Empty;
     this.Rules     = CompetitionRules.International;
 }
Beispiel #2
0
        public static void SortResults(DataTable dt, int quote, bool frstRound, bool isQuali, /*SpeedRules*/ CompetitionRules cRules, bool ForceQf = false)
        {
            if (dt == null || dt.Rows.Count < 1)
            {
                return;
            }
            SortResults(dt, frstRound, isQuali);
            //bool rulesIntl = (cRules & SpeedRules.InternationalRules) == SpeedRules.InternationalRules;
            if (cRules == CompetitionRules.International)
            {
                if (dt.Columns.IndexOf("posV") < 0)
                {
                    dt.Columns.Add("posV", typeof(double));
                }
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DataRow dr = dt.Rows[i];
                    double  d;
                    if (double.TryParse(dr["posText"].ToString(), out d))
                    {
                        dr["posV"] = d;
                    }
                    else if (i == 0)
                    {
                        dr["posV"] = 1.0;
                    }
                    else if (Convert.ToInt32(Convert.ToDouble(dr["pts"]) * 100) ==
                             Convert.ToInt32(Convert.ToDouble(dt.Rows[i - 1]["pts"]) * 100))
                    {
                        dr["posV"] = dt.Rows[i - 1]["posV"];
                    }
                    else
                    {
                        dr["posV"] = Convert.ToDouble(dt.Rows[i - 1]["posV"]) + 0.01;
                    }
                }
            }
            //int nVk = 0;
            //int curRow = 0;
            //int curPl = -1;
            double qD;

            if (quote > 0)
            {
                if (cRules == CompetitionRules.International)
                {
                    qD = (double)quote + 0.001;
                }
                else
                {
                    qD = (double)quote + 0.65;
                }
            }
            else
            {
                qD = -100.0;
            }

            foreach (DataRow dr in dt.Rows)
            {
                if (cRules == CompetitionRules.Russian)
                {
                    if (Convert.ToDouble(dr["pts"]) < qD && Convert.ToDouble(dr["pts"]) > 0.11)
                    {
                        dr["qf"] = "Q";
                    }
                }
                else
                {
                    if (Convert.ToDouble(dr["posV"]) < qD && Convert.ToDouble(dr["pts"]) > 0.11)
                    {
                        dr["qf"] = "Q";
                    }
                }
                try
                {
                    if (frstRound && (!isQuali))
                    {
                        switch (dr["sp"].ToString())
                        {
                        case "1":
                            dr["pts"] = dr["pos"] = DSQ_POS;
                            if (!ForceQf)
                            {
                                dr["qf"] = "";
                            }
                            break;

                        case "2":
                            dr["pts"] = dr["pos"] = DNS_POS;
                            if (!ForceQf)
                            {
                                dr["qf"] = "";
                            }
                            break;
                        }
                    }
                }
                catch { }
            }
            int lastQ = -1;

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (dt.Rows[i]["qf"].ToString().ToLower().IndexOf("q") > -1)
                {
                    lastQ = i;
                }
                else
                {
                    break;
                }
            }

            if (lastQ >= 0 && Convert.ToBoolean(dt.Rows[lastQ]["vk"]))
            {
                double lQpts = Convert.ToDouble(dt.Rows[lastQ]["pts"]);
                if (lQpts > (double)quote)
                {
                    int i = lastQ - 1;
                    if (i >= 0 && Convert.ToDouble(dt.Rows[i]["pts"]) < lQpts)
                    {
                        dt.Rows[lastQ]["qf"] = "";
                    }
                }
            }
        }
 public Competition(CompetitionRules <T> rules)
 {
     Rules       = rules;
     Results     = new List <CompetitionResults <T> >();
     Competitors = new List <Competitor <T> >();
 }