Exemplo n.º 1
0
 public BaseForm(SqlConnection cn, string competitionTitle, String baseResourceFile = "ClimbingCompetition.ListHeaderStrings")
     : this(baseResourceFile)
 {
     this.cTitle = competitionTitle;
     if (cn == null || cn.ConnectionString == "")
     {
         cr = SpeedRules.DefaultAll;
         return;
     }
     con = new SqlConnection(cn.ConnectionString);
     try { con.Open(); }
     catch (Exception ex) { MessageBox.Show("Невозможно открыть соединение:\r\n" + ex.Message); }
     try
     {
         cr = SortingClass.GetCompRules(this.cn, false);
         bool leaveTrains = SettingsForm.GetLeaveTrains(this.cn);
         if (leaveTrains)
         {
             cr = cr | SpeedRules.InternationalRules;
         }
         else
         {
             cr = cr & (~SpeedRules.InternationalRules);
         }
     }
     catch (Exception ex)
     {
         cr = SpeedRules.DefaultAll;
         MessageBox.Show("Невозможно определить правила проведения соревнований:\r\n"
                         + ex.Message + "\r\nБудут использоваться российские правила");
     }
 }
        private ApiListHeader GetListHeader(int iid)
        {
            using (var cmd = this.CreateCommand())
            {
                cmd.CommandText = "select G." + ServiceHelper.REMOTE_ID_COLUMN + " group_id, L.listType, L.style, L.round, isnull(L.quote,0) quote," +
                                  "       L.allowView, isnull(LP." + ServiceHelper.REMOTE_ID_COLUMN + ", '') prevRoundId, isnull(L.routeNumber,0) routeNumber," +
                                  "       isnull(PR." + ServiceHelper.REMOTE_ID_COLUMN + ", '') parentIid," +
                                  "       IsNull(L." + ServiceHelper.REMOTE_ID_COLUMN + ", '') " + ServiceHelper.REMOTE_ID_COLUMN +
                                  "  from Lists L(nolock)" +
                                  " left join Lists LP(nolock) on LP.iid = L.prev_round" +
                                  " left join Lists PR(nolock) on PR.iid = L.iid_parent" +
                                  "      join Groups G(nolock) on G.iid = L.group_id" +
                                  "     where L.iid = @iid";
                cmd.Parameters.Add("@iid", SqlDbType.Int).Value = iid;

                bool iRulesLead = SettingsForm.GetLeaveTrains(this.cn, this.currentTransaction);
                var  sr         = SettingsForm.GetSpeedRules(this.cn, this.currentTransaction);

                using (var rdr = cmd.ExecuteReader())
                {
                    if (!rdr.Read())
                    {
                        return(null);
                    }
                    int routeNumber;
                    var round = ClimbingRoundExtensions.GetByLocalizedValue(rdr["round"].ToString(), out routeNumber, DefaultUICulture);
                    if (routeNumber < 1)
                    {
                        routeNumber = Convert.ToInt32(rdr["routeNumber"]);
                    }

                    ListType listType;
                    try { listType = (ListType)Enum.Parse(typeof(ListType), rdr["listType"].ToString(), true); }
                    catch { listType = ListType.Unknown; }

                    Rules r;
                    var   style = Extensions.StringExtensions.GetEnumByStringValue <ClimbingStyles>(rdr["style"].ToString(), ClimbingStyles.Lead, DefaultUICulture);
                    if (style == ClimbingStyles.Speed)
                    {
                        r = (sr & SpeedRules.InternationalSchema) == SpeedRules.InternationalSchema ? Rules.International : Rules.Russian;
                        if ((sr & SpeedRules.BestResultFromTwoQfRounds) == SpeedRules.BestResultFromTwoQfRounds)
                        {
                            r = r | Rules.BestRouteInQf;
                        }
                    }
                    else
                    {
                        r = iRulesLead ? Rules.International : Rules.Russian;
                    }
                    return(new ApiListHeader
                    {
                        AgeGroupInCompId = rdr["group_id"].ToString(),
                        ClimbingRules = r,
                        IidParent = rdr["parentIid"].ToString(),
                        ListTypeV = listType,
                        Live = Convert.ToInt32(rdr["allowView"]) > 0,
                        PreviousRoundId = rdr["prevRoundId"].ToString(),
                        Quota = Convert.ToInt32(rdr["quote"]),
                        Round = round,
                        RouteNumber = routeNumber,
                        Style = style,
                        Iid = rdr[ServiceHelper.REMOTE_ID_COLUMN].ToString(),
                        SecretaryId = iid
                    });
                }
            }
        }