public virtual void addEkipa(Ekipa e, RezultatskoTakmicenje rezTak, RezultatskoTakmicenje rezTak1, RezultatskoTakmicenje rezTak2) { RezultatEkipnoFinaleKupa rezultat = new RezultatEkipnoFinaleKupa(); rezultat.Ekipa = e; foreach (RezultatEkipno r in rezTak1.Takmicenje1.PoredakEkipno.Rezultati) { if (r.Ekipa.Equals(e)) { rezultat.initPrvoKolo(r); break; } } foreach (RezultatEkipno r in rezTak2.Takmicenje1.PoredakEkipno.Rezultati) { if (r.Ekipa.Equals(e)) { rezultat.initDrugoKolo(r); break; } } rezultat.calculateTotal(rezTak.Propozicije.NacinRacunanjaOceneFinaleKupaTak4); Rezultati.Add(rezultat); rankRezultati(rezTak.Propozicije); }
public virtual void deleteEkipa(Ekipa e, RezultatskoTakmicenje rezTak) { RezultatEkipnoFinaleKupa r = getRezultat(e); if (r != null) { Rezultati.Remove(r); rankRezultati(rezTak.Propozicije); } }
public virtual void loadFromDump(StringReader reader, IdMap map) { DeoTakmicenjaKod = (DeoTakmicenjaKod)Enum.Parse(typeof(DeoTakmicenjaKod), reader.ReadLine()); int brojRezultata = int.Parse(reader.ReadLine()); for (int i = 0; i < brojRezultata; ++i) { reader.ReadLine(); // id RezultatEkipnoFinaleKupa r = new RezultatEkipnoFinaleKupa(); r.loadFromDump(reader, map); Rezultati.Add(r); } }
public virtual void create(RezultatskoTakmicenje rezTak, RezultatskoTakmicenje rezTak1, RezultatskoTakmicenje rezTak2) { // NOTE: Da bi Ekipa mogla da se koristi kao key u Dictionary, mora da implementira // interfejs IEquatable<Ekipa>. IDictionary <Ekipa, RezultatEkipnoFinaleKupa> rezultatiMap = new Dictionary <Ekipa, RezultatEkipnoFinaleKupa>(); foreach (Ekipa e in rezTak.Takmicenje1.Ekipe) { RezultatEkipnoFinaleKupa rezultat = new RezultatEkipnoFinaleKupa(); rezultat.Ekipa = e; rezultatiMap.Add(e, rezultat); } foreach (RezultatEkipno r in rezTak1.Takmicenje1.PoredakEkipno.Rezultati) { if (rezultatiMap.ContainsKey(r.Ekipa)) { rezultatiMap[r.Ekipa].initPrvoKolo(r); } } foreach (RezultatEkipno r in rezTak2.Takmicenje1.PoredakEkipno.Rezultati) { if (rezultatiMap.ContainsKey(r.Ekipa)) { rezultatiMap[r.Ekipa].initDrugoKolo(r); } } Rezultati.Clear(); foreach (RezultatEkipnoFinaleKupa r in rezultatiMap.Values) { r.calculateTotal(rezTak.Propozicije.NacinRacunanjaOceneFinaleKupaTak4); Rezultati.Add(r); } rankRezultati(rezTak.Propozicije); }
public virtual void create(RezultatskoTakmicenje rezTak, PoredakEkipno poredakPrvoKolo, PoredakEkipno poredakDrugoKolo) { IList<Ekipa> ekipe = new List<Ekipa>(rezTak.Takmicenje1.Ekipe); // NOTE: Da bi Ekipa mogla da se koristi kao key u Dictionary, mora da implementira // interfejs IEquatable<Ekipa>. IDictionary<Ekipa, RezultatEkipnoFinaleKupa> rezultatiMap = new Dictionary<Ekipa, RezultatEkipnoFinaleKupa>(); foreach (Ekipa e in ekipe) { RezultatEkipnoFinaleKupa rezultat = new RezultatEkipnoFinaleKupa(); rezultat.Ekipa = e; rezultatiMap.Add(e, rezultat); } if (poredakPrvoKolo != null) { foreach (RezultatEkipno r in poredakPrvoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Ekipa)) { rezultatiMap[r.Ekipa].ParterPrvoKolo = r.Parter; rezultatiMap[r.Ekipa].KonjPrvoKolo = r.Konj; rezultatiMap[r.Ekipa].KarikePrvoKolo = r.Karike; rezultatiMap[r.Ekipa].PreskokPrvoKolo = r.Preskok; rezultatiMap[r.Ekipa].RazbojPrvoKolo = r.Razboj; rezultatiMap[r.Ekipa].VratiloPrvoKolo = r.Vratilo; rezultatiMap[r.Ekipa].DvovisinskiRazbojPrvoKolo = r.DvovisinskiRazboj; rezultatiMap[r.Ekipa].GredaPrvoKolo = r.Greda; rezultatiMap[r.Ekipa].TotalPrvoKolo = r.Total; } } } if (poredakDrugoKolo != null) { foreach (RezultatEkipno r in poredakDrugoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Ekipa)) { rezultatiMap[r.Ekipa].ParterDrugoKolo = r.Parter; rezultatiMap[r.Ekipa].KonjDrugoKolo = r.Konj; rezultatiMap[r.Ekipa].KarikeDrugoKolo = r.Karike; rezultatiMap[r.Ekipa].PreskokDrugoKolo = r.Preskok; rezultatiMap[r.Ekipa].RazbojDrugoKolo = r.Razboj; rezultatiMap[r.Ekipa].VratiloDrugoKolo = r.Vratilo; rezultatiMap[r.Ekipa].DvovisinskiRazbojDrugoKolo = r.DvovisinskiRazboj; rezultatiMap[r.Ekipa].GredaDrugoKolo = r.Greda; rezultatiMap[r.Ekipa].TotalDrugoKolo = r.Total; } } } List<RezultatEkipnoFinaleKupa> rezultati = new List<RezultatEkipnoFinaleKupa>(rezultatiMap.Values); Rezultati.Clear(); foreach (RezultatEkipnoFinaleKupa rez in rezultati) Rezultati.Add(rez); // Total moze da bude krajnja finalna ocena ili ulazna finalna ocena. U oba slucaja se Total izracunava // na isti nacin. foreach (RezultatEkipnoFinaleKupa rez in Rezultati) { if (rez.TotalPrvoKolo == null && rez.TotalDrugoKolo == null) { rez.setTotal(null); continue; } float total1 = rez.TotalPrvoKolo == null ? 0 : rez.TotalPrvoKolo.Value; float total2 = rez.TotalDrugoKolo == null ? 0 : rez.TotalDrugoKolo.Value; float total; if (rezTak.Propozicije.Tak4FinalnaOcenaJeZbirObaKola) total = total1 + total2; else if (rezTak.Propozicije.Tak4FinalnaOcenaJeMaxObaKola) total = total1 > total2 ? total1 : total2; else { // TODO3: Proveri da li ovde treba podesavati broj decimala. total = (total1 + total2) / 2; if (rezTak.Propozicije.Tak4NeRacunajProsekAkoNemaOceneIzObaKola && (rez.TotalPrvoKolo == null || rez.TotalDrugoKolo == null)) { total = total1 + total2; } } rez.setTotal(total); } rankRezultati(); if (rezTak.Propozicije.OdvojenoTak4) updateKvalStatus(rezTak.Propozicije.BrojEkipaUFinalu, 0); }