Ejemplo n.º 1
0
        public static void VypoctiPoradiPod(Int16 soutez, OdbcConnection spojeni, String proCo)
        {
            /*----funkce pod hlavni vypoctovou funkci-*/
            /*---
             * proCo=="V" ..... pocita normalne poradi
             * proCo=="P" ..... 2. pocita poradi pro play off - takove poradi je vypocteno k datu 1.1.1970
             * --*/

            Int16 pocetTipuCelkem = 0;
            Int16 pocetTipuSpravne = 0;
            float pocetBodu = 0;
            DateTime keDni;
            OdbcDataReader reader;

            if (proCo == "V")
            {

                //---nejprve musim zjistit datum, ke kteremu je poradi vypocitavano - bude to datum nejnovesjiho zapsau, u ktereho je vysledek
                String retSel = "SELECT date_trunc('day',mdo) AS kedni from program WHERE spravne IS NOT NULL AND kolo=" + soutez.ToString() + " ORDER BY mdo DESC";
                OdbcCommand selekt = new OdbcCommand(retSel, spojeni);
                reader = selekt.ExecuteReader(CommandBehavior.SingleRow);
                reader.Read();
                if (!reader.HasRows)
                {
                    reader.Close();
                    return;
                }
                keDni = DateTime.Parse(reader["kedni"].ToString());
                reader.Close();
            }
            else
            {
                keDni = knihovna_ser.VratFiktivniDatumProPlayOff();
                if (keDni == DateTime.MinValue)
                {
                    /*---zatim se play off nehralo, nic neudelam-*/
                    return;
                }
            }

            //----pro toto datum smazu naplneni tabulky celkove----------------------
            String strSQL = "DELETE FROM celkove WHERE soutez=" + soutez + " AND kedni=?";
            OdbcCommand prikazDelete = new OdbcCommand(strSQL, spojeni);
            prikazDelete.Parameters.Add(new OdbcParameter("@kedni", OdbcType.Date));
            prikazDelete.Parameters["@kedni"].Value = keDni;
            prikazDelete.ExecuteNonQuery();

            //---cyklus pro uzivatele
            strSQL = "SELECT mlogin FROM uzivatele";
            OdbcCommand comSelect = new OdbcCommand(strSQL, spojeni);
            reader = comSelect.ExecuteReader();
            while (reader.Read())
            {
                String strUzivatel = reader.GetString(0).Trim();
                BilanceUzivatele bilance = new BilanceUzivatele();
                bilance.NaplnCelkovouBilanci(soutez, strUzivatel, spojeni, proCo);
                pocetTipuCelkem = bilance.pocetTipuCelkem;
                if (pocetTipuCelkem == 0) continue;
                pocetTipuSpravne = bilance.pocetTipuSpravne;
                pocetBodu = bilance.pocetBoduCelkem;
                //----insert do celkove
                String strPocetBodu = pocetBodu.ToString();
                strPocetBodu = knihovna_ser.VratNumericProSelekt(strPocetBodu);
                strSQL = "INSERT INTO celkove (mlogin,pocet_spravne,pocet_celkem,vaha_body,soutez,kedni) VALUES(?,?,?," + strPocetBodu + ",?,?)";
                OdbcCommand prikazInsert = new OdbcCommand(strSQL, spojeni);
                prikazInsert.Parameters.Add(new OdbcParameter("@p_login", OdbcType.Char, 50));
                prikazInsert.Parameters.Add(new OdbcParameter("@p_spravne", OdbcType.Int));
                prikazInsert.Parameters.Add(new OdbcParameter("@p_celkem", OdbcType.Int));
                //prikazInsert.Parameters.Add(new OdbcParameter("@p_body", OdbcType.Numeric));
                prikazInsert.Parameters.Add(new OdbcParameter("@p_soutez", OdbcType.Int));
                prikazInsert.Parameters.Add(new OdbcParameter("@kedni", OdbcType.Date));
                prikazInsert.Parameters["@p_login"].Value = strUzivatel;
                prikazInsert.Parameters["@p_spravne"].Value = pocetTipuSpravne;
                prikazInsert.Parameters["@p_celkem"].Value = pocetTipuCelkem;
                //prikazInsert.Parameters["@p_body"].Value = pocetBodu;
                prikazInsert.Parameters["@p_soutez"].Value = soutez;
                prikazInsert.Parameters["@kedni"].Value = keDni;
                prikazInsert.ExecuteNonQuery();
                knihovna_ser.DoplnPoradi(soutez, spojeni, keDni);
            }
            reader.Close();
        }
Ejemplo n.º 2
0
        public static void DejPocetZD(String login, ref Int16 pocetZD, ref Int16 pocetOKTipuCelkem, OdbcConnection spojeni, Int16 soutez)
        {
            //----------spocte zelene dny daneho uzivatele------------
            OdbcCommand selektZD;
            OdbcDataReader readerZD;
            DateTime datum;
            Int16 pocetZapasuZaDen;
            Int16 pocetZapasuNeodehranych;
            Int16 pocetZapasuOK;

            selektZD = new OdbcCommand("SELECT DISTINCT(date_trunc('day',zelden)) from program, tipy WHERE " +
                "tipy.kolo=program.kolo AND tipy.radek=program.radek AND spravne IS NOT NULL AND mlogin=? AND program.kolo=?", spojeni);
            selektZD.Parameters.Add(new OdbcParameter("@p_login", OdbcType.NChar));
            selektZD.Parameters["@p_login"].Value = login;
            selektZD.Parameters.Add(new OdbcParameter("@p_soutez", OdbcType.Int));
            selektZD.Parameters["@p_soutez"].Value = soutez;
            readerZD = selektZD.ExecuteReader();

            //-------------------cyklus na dny--------------------------------------------------
            pocetZD = 0;
            while (readerZD.Read())
            {
                datum = readerZD.GetDateTime(0);
                //--mam den, zjistim zda je zeleny
                //--nejprve zjistim celkovy pocet jeho zapasu-----------------------------------
                pocetZapasuNeodehranych = DejPocetZapasuNeodehranych(datum, spojeni, soutez);
                if (pocetZapasuNeodehranych == 0)
                {
                    //------------pokud jeste zbyva nejaky zapas odehrat, zeleny den nepocita
                    pocetZapasuZaDen = DejPocetZapasuZaDen(datum, spojeni, soutez);
                    BilanceUzivatele bilance = new BilanceUzivatele();
                    bilance.NaplDenniBilanci(soutez, login, datum, spojeni);
                    pocetZapasuOK = bilance.pocetTipuSpravne;
                    bilance.NaplnCelkovouBilanci(soutez, login, spojeni, "V");
                    pocetOKTipuCelkem = bilance.pocetTipuSpravne;

                    if (pocetZapasuZaDen == pocetZapasuOK)
                    {
                        pocetZD++;
                    }
                }
            }
        }