private void btnOK_Click(object sender, EventArgs e)
 {
     Cancel      = false;
     WhatToPrint = GetCardPrint();
     if (!WhatToPrint.CANCEL)
     {
         if (WhatToPrint.lead != null && WhatToPrint.lead.qFlash)
         {
             ClComp cSet = ClComp.Default;
             cSet.CardFlashRN = WhatToPrint.lead.qFlashRN;
             cSet.Save();
         }
         this.Close();
     }
 }
        public SelectCardType()
        {
            ClComp cSet = ClComp.Default;

            InitializeComponent();
#if !FULL
            cbLead.Checked     = cbBoulder.Checked = cbLead.Enabled = cbBoulder.Enabled =
                gbLead.Enabled = gbBoulder.Enabled = false;
            cbSpeed.Checked    = gbSpeed.Enabled = true;
            cbSpeed.Enabled    = false;
#endif
            tbQroute.Text = cSet.tbQroute;
            tbSroute.Text = cSet.tbSroute;
            tbFroute.Text = cSet.tbFroute;
            rbLFlash_CheckedChanged(null, null);
        }
        private bool PrintData <T>(ReportToPrint repToPrint) where T : class
        {
            List <int> ToPrint = new List <int>();
            DataTable  dt      = dgTeams.DataSource as DataTable;

            if (dt == null)
            {
                MessageBox.Show(this, "Неизвестная ошибка загрузки списка команд");
                return(false);
            }
            int lastCol = dt.Columns.Count - 1;

            if (lastCol < 0)
            {
                MessageBox.Show(this, "Неизвестная ошибка загрузки списка команд");
                return(false);
            }
            if (rbOnlyOne.Checked)
            {
                if (selectedTeam == null)
                {
                    MessageBox.Show(this, "Неизвестная ошибка загрузки списка команд");
                    return(false);
                }
                ToPrint.Add(selectedTeam.Value);
            }
            else if (rbSelected.Checked || rbAll.Checked)
            {
                foreach (DataRow row in dt.Rows)
                {
                    if (Convert.ToBoolean(row[lastCol]) || rbAll.Checked)
                    {
                        ToPrint.Add(Convert.ToInt32(row[0]));
                    }
                }
            }
            else
            {
                MessageBox.Show(this, "Режим печати отета не выбран");
                return(false);
            }
            if (ToPrint.Count < 1)
            {
                MessageBox.Show(this, "Не выбраны команды для печати отчета");
                return(false);
            }
            string dir;

            if (ToPrint.Count == 1 || repToPrint == ReportToPrint.APPL_REP)
            {
                dir = String.Empty;
            }
            else
            {
                ClComp def = ClComp.Default;
                dir = String.IsNullOrEmpty(def.DefaultReportFolder) ? MainForm.GetDir() : def.DefaultReportFolder;
                FolderBrowserDialog ofd = new FolderBrowserDialog();
                ofd.SelectedPath = dir;
                ofd.Description  = "Выберите папку для сохранения отчетов";
                if (ofd.ShowDialog() == DialogResult.Cancel)
                {
                    return(false);
                }
                dir = ofd.SelectedPath;
                def.DefaultReportFolder = dir;
                def.Save();
            }

            try
            {
                if (!string.IsNullOrWhiteSpace(dir) && !Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, "Невозможно проверить наличие/создать директорию " + dir + ":" + Environment.NewLine + ex.ToString());
                return(false);
            }

            TBReports <T> rep = new TBReports <T>(cn, ToPrint, dir, this);

            if (cn.State != ConnectionState.Open)
            {
                cn.Open();
            }
            SqlCommand cmd = new SqlCommand();

            cmd.Connection  = cn;
            cmd.CommandText = "SELECT MAX(iid) FROM teams(NOLOCK)";
            object res = cmd.ExecuteScalar();

            if (res != null && res != DBNull.Value)
            {
                int lC = res.ToString().Length;
                if (lC > 0)
                {
                    string tpl = String.Empty;
                    for (int i = 0; i < lC; i++)
                    {
                        tpl += "0";
                    }
                    rep.IdTemplate = tpl;
                }
            }

            ReportCreationBar <T> .CreateRep func;

            switch (repToPrint)
            {
            case ReportToPrint.TB_REP:
                func = rep.CreateTBReport_DelegateFunction;
                break;

            case ReportToPrint.APPL_REP:
                func = rep.CreateApplSecrData;
                break;

            default:
                MessageBox.Show(this, "Неизвестный отчет: " + repToPrint.ToString());
                return(false);
            }

            return(rep.PrintAllReports(func, cbNoDate.Checked ? null : new DateTime?(dateToPrint.Value)));
        }
        private CardPrint GetCardPrint()
        {
            CardPrint retVal = new CardPrint();

            retVal.CANCEL           = Cancel;
            retVal.OnlyParticipants = cbOnlyReal.Checked;
            if (Cancel)
            {
                return(retVal);
            }
            if (!(cbLead.Checked || cbSpeed.Checked || cbBoulder.Checked))
            {
                MessageBox.Show(this, "Для печати в карточку ничего не выбрано.");
                retVal.CANCEL = true;
                return(retVal);
            }
            if (cbLead.Checked)
            {
                Lead l = new Lead();
                l.quali = cbLQuali.Checked;
                l.q1g   = rbL1gr.Checked;
                l.q2g   = rbL2gr.Checked;
                if (cbLead.Enabled && cbLead.Checked && rbLFlash.Enabled && rbLFlash.Checked)
                {
                    int nRn;
                    if (!int.TryParse(tbFlashRN.Text, out nRn))
                    {
                        MessageBox.Show(this, "Число трасс для квалификации flash введено неверно");
                        retVal.CANCEL = true;
                        return(retVal);
                    }
                    l.qFlashRN = nRn;
                }

                l.final     = cbLFinal.Checked;
                l.semi      = cbLSemi.Checked;
                l.super     = cbLSuper.Checked;
                retVal.lead = l;
            }

            if (cbSpeed.Checked)
            {
                Speed s = new Speed();
                if (rbS1q.Checked)
                {
                    s.q1 = !(s.q2 = false);
                }
                else
                {
                    s.q1 = s.q2 = true;
                }
                if (rbSF16.Checked)
                {
                    s.f16 = s.f8 = s.f4 = true;
                }
                else
                {
                    if (rbSF08.Checked)
                    {
                        s.f16 = false;
                        s.f4  = s.f8 = true;
                    }
                    else
                    {
                        s.f16 = s.f8 = false;
                        s.f4  = true;
                    }
                }
                retVal.speed = s;
            }

            if (cbBoulder.Checked)
            {
                int     nTmp;
                Boulder b = new Boulder();
                b.quali = cbBQuali.Checked;
                ClComp cSet = ClComp.Default;
                if (b.quali)
                {
                    b.q2g = rbB2g.Checked;
                    if (!int.TryParse(tbQroute.Text, out nTmp))
                    {
                        MessageBox.Show("Число трасс в квалификации боулдеринга введено неверно.");
                        retVal.CANCEL = true;
                        return(retVal);
                    }
                    cSet.tbQroute = nTmp.ToString();
                    b.rQuali      = nTmp;
                }

                b.semi = cbBSemi.Checked;
                if (b.semi)
                {
                    if (!int.TryParse(tbSroute.Text, out nTmp))
                    {
                        MessageBox.Show("Число трасс в полуфинале боулдеринга введено неверно.");
                        retVal.CANCEL = true;
                        return(retVal);
                    }
                    cSet.tbSroute = nTmp.ToString();
                    b.rSemi       = nTmp;
                }
                b.final = cbBFinal.Checked;
                if (b.final)
                {
                    if (!int.TryParse(tbFroute.Text, out nTmp))
                    {
                        MessageBox.Show("Число трасс в финале боулдеринга введено неверно.");
                        retVal.CANCEL = true;
                        return(retVal);
                    }
                    cSet.tbFroute = nTmp.ToString();
                    b.rFinal      = nTmp;
                }
                b.super        = cbBSuper.Checked;
                retVal.boulder = b;
            }
            return(retVal);
        }