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(); }
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++; } } } }