public virtual void updateRezultatiOnGimnasticarDeleted(GimnasticarUcesnik g, IList <Ocena> ocene, RezultatskoTakmicenje rezTak) { PoredakUkupno.deleteGimnasticar(g, rezTak); foreach (Ocena o in ocene) { if (o.Sprava == Sprava.Preskok) { PoredakPreskok.deleteGimnasticar(g, rezTak); } else { getPoredakSprava(o.Sprava).deleteGimnasticar(g, rezTak); } } if (PoredakUkupnoFinaleKupa != null) { PoredakUkupnoFinaleKupa.deleteGimnasticar(g, rezTak); } foreach (PoredakSpravaFinaleKupa p in PoredakSpravaFinaleKupa) { p.deleteGimnasticar(g, rezTak); } if (PoredakUkupnoZbirViseKola != null) { PoredakUkupnoZbirViseKola.deleteGimnasticar(g, rezTak); } }
public virtual void loadFromDump(StringReader reader, IdMap map) { int count = int.Parse(reader.ReadLine()); for (int i = 0; i < count; ++i) { reader.ReadLine(); // id UcesnikTakmicenja3 u = new UcesnikTakmicenja3(); u.loadFromDump(reader, map); Ucesnici.Add(u); } count = int.Parse(reader.ReadLine()); for (int i = 0; i < count; ++i) { reader.ReadLine(); // id PoredakSprava p = new PoredakSprava(); p.loadFromDump(reader, map); Poredak.Add(p); } string id = reader.ReadLine(); PoredakPreskok p2 = null; if (id != NULL) { p2 = new PoredakPreskok(); p2.loadFromDump(reader, map); } PoredakPreskok = p2; }
// Za finale kupa public virtual void updateRezultatiOnGimnasticarAdded(GimnasticarUcesnik g, IList <Ocena> ocene, RezultatskoTakmicenje rezTak, RezultatskoTakmicenje rezTak1, RezultatskoTakmicenje rezTak2) { PoredakUkupnoFinaleKupa.addGimnasticar(g, rezTak, rezTak1, rezTak2); foreach (PoredakSpravaFinaleKupa p in PoredakSpravaFinaleKupa) { p.addGimnasticar(g, rezTak, rezTak1, rezTak2); } if (rezTak.odvojenoTak2()) { PoredakUkupno.addGimnasticar(g, ocene, rezTak); } if (rezTak.odvojenoTak3()) { foreach (Ocena o in ocene) { if (o.Sprava == Sprava.Preskok) { PoredakPreskok.addGimnasticar(g, o, rezTak); } else { getPoredakSprava(o.Sprava).addGimnasticar(g, o, rezTak); } } } }
public Takmicenje3(Gimnastika gimnastika) { foreach (Sprava s in Sprave.getSprave(gimnastika)) { if (s != Sprava.Preskok) _poredak.Add(new PoredakSprava(DeoTakmicenjaKod.Takmicenje3, s)); } _poredakPreskok = new PoredakPreskok(DeoTakmicenjaKod.Takmicenje3); }
public Takmicenje1(Gimnastika gimnastika) { _poredakUkupno = new PoredakUkupno(DeoTakmicenjaKod.Takmicenje1); foreach (Sprava s in Sprave.getSprave(gimnastika)) { if (s != Sprava.Preskok) _poredakSprava.Add(new PoredakSprava(DeoTakmicenjaKod.Takmicenje1, s)); } _poredakPreskok = new PoredakPreskok(DeoTakmicenjaKod.Takmicenje1); _poredakEkipno = new PoredakEkipno(DeoTakmicenjaKod.Takmicenje1); }
public Takmicenje3(Gimnastika gimnastika) { foreach (Sprava s in Sprave.getSprave(gimnastika)) { if (s != Sprava.Preskok) { _poredak.Add(new PoredakSprava(DeoTakmicenjaKod.Takmicenje3, s)); } } _poredakPreskok = new PoredakPreskok(DeoTakmicenjaKod.Takmicenje3); }
public virtual void updateRezultatiOnOcenaEdited(Ocena o, RezultatskoTakmicenje rezTak) { if (Gimnasticari.Contains(o.Gimnasticar)) { PoredakUkupno.editOcena(o, rezTak); if (o.Sprava == Sprava.Preskok) { PoredakPreskok.editOcena(o, rezTak); } else { getPoredakSprava(o.Sprava).editOcena(o, rezTak); } } }
public virtual void updateRezultatiOnGimnasticarAdded(GimnasticarUcesnik g, IList <Ocena> ocene, RezultatskoTakmicenje rezTak) { PoredakUkupno.addGimnasticar(g, ocene, rezTak); foreach (Ocena o in ocene) { if (o.Sprava == Sprava.Preskok) { PoredakPreskok.addGimnasticar(g, o, rezTak); } else { getPoredakSprava(o.Sprava).addGimnasticar(g, o, rezTak); } } }
public Takmicenje1(Takmicenje takmicenje) { if (takmicenje.ZbirViseKola) { _poredakUkupnoZbirViseKola = new PoredakUkupnoZbirViseKola(); _poredakEkipnoZbirViseKola = new PoredakEkipnoZbirViseKola(); } else if (takmicenje.FinaleKupa) { _poredakUkupnoFinaleKupa = new PoredakUkupnoFinaleKupa(); _poredakEkipnoFinaleKupa = new PoredakEkipnoFinaleKupa(); } _poredakUkupno = new PoredakUkupno(DeoTakmicenjaKod.Takmicenje1); foreach (Sprava s in Sprave.getSprave(takmicenje.Gimnastika)) { if (s != Sprava.Preskok) { _poredakSprava.Add(new PoredakSprava(DeoTakmicenjaKod.Takmicenje1, s)); } } _poredakPreskok = new PoredakPreskok(DeoTakmicenjaKod.Takmicenje1); _poredakEkipno = new PoredakEkipno(DeoTakmicenjaKod.Takmicenje1); }
// TODO3: Za sve poretke (ukupno, sprava, ekipno, kako za finale kupa, tako i za obicna takmicenja) specifikuj // pravila razresavanja istih ocena. public virtual void create(RezultatskoTakmicenje rezTak, PoredakPreskok poredakPrvoKolo, PoredakPreskok poredakDrugoKolo, bool poredak1NaOsnovuObaPreskoka, bool poredak2NaOsnovuObaPreskoka, List<RezultatSpravaFinaleKupaUpdate> rezultatiUpdate) { IList<GimnasticarUcesnik> gimnasticari = new List<GimnasticarUcesnik>(rezTak.Takmicenje1.Gimnasticari); IDictionary<GimnasticarUcesnik, RezultatSpravaFinaleKupa> rezultatiMap = new Dictionary<GimnasticarUcesnik, RezultatSpravaFinaleKupa>(); foreach (GimnasticarUcesnik g in gimnasticari) { RezultatSpravaFinaleKupa rezultat = new RezultatSpravaFinaleKupa(); rezultat.Gimnasticar = g; rezultatiMap.Add(g, rezultat); } if (poredakPrvoKolo != null) { bool postojiTotalObeOcene = false; foreach (RezultatPreskok r in poredakPrvoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { RezultatSpravaFinaleKupa r2 = rezultatiMap[r.Gimnasticar]; if (!poredak1NaOsnovuObaPreskoka) { r2.D_PrvoKolo = r.D; r2.E_PrvoKolo = r.E; r2.TotalPrvoKolo = r.Total; } else { r2.D_PrvoKolo = null; r2.E_PrvoKolo = null; r2.TotalPrvoKolo = r.TotalObeOcene; postojiTotalObeOcene |= (r.TotalObeOcene != null); } } } if (poredak1NaOsnovuObaPreskoka && !postojiTotalObeOcene) { // U propozicijama za prvo kolo je stavljeno da se preskok racuna na osnovu // oba preskoka, ali ni za jednog gimnasticara ne postoji ocena za oba preskoka. // Ova situacija najverovatnije nastaje kada se u prvom kolu kao prvi preskok // unosila konacna ocena za oba preskoka. // U tom slucaju, za ocenu prvog kola treba uzeti prvu ocenu. foreach (RezultatPreskok r in poredakPrvoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { RezultatSpravaFinaleKupa r2 = rezultatiMap[r.Gimnasticar]; r2.D_PrvoKolo = r.D; r2.E_PrvoKolo = r.E; r2.TotalPrvoKolo = r.Total; } } } } if (poredakDrugoKolo != null) { bool postojiTotalObeOcene = false; foreach (RezultatPreskok r in poredakDrugoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { RezultatSpravaFinaleKupa r2 = rezultatiMap[r.Gimnasticar]; if (!poredak2NaOsnovuObaPreskoka) { r2.D_DrugoKolo = r.D; r2.E_DrugoKolo = r.E; r2.TotalDrugoKolo = r.Total; } else { r2.D_DrugoKolo = null; r2.E_DrugoKolo = null; r2.TotalDrugoKolo = r.TotalObeOcene; postojiTotalObeOcene |= (r.TotalObeOcene != null); } } } if (poredak2NaOsnovuObaPreskoka && !postojiTotalObeOcene) { // Isti komentar kao za prvo kolo. foreach (RezultatPreskok r in poredakDrugoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { RezultatSpravaFinaleKupa r2 = rezultatiMap[r.Gimnasticar]; r2.D_DrugoKolo = r.D; r2.E_DrugoKolo = r.E; r2.TotalDrugoKolo = r.Total; } } } } List<RezultatSpravaFinaleKupa> rezultati = new List<RezultatSpravaFinaleKupa>(rezultatiMap.Values); Rezultati.Clear(); foreach (RezultatSpravaFinaleKupa r in rezultati) Rezultati.Add(r); // Total moze da bude krajnja finalna ocena ili ulazna finalna ocena. U oba slucaja se Total izracunava // na isti nacin. foreach (RezultatSpravaFinaleKupa 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.Tak3FinalnaOcenaJeZbirObaKola) total = total1 + total2; else if (rezTak.Propozicije.Tak3FinalnaOcenaJeMaxObaKola) total = total1 > total2 ? total1 : total2; else { // TODO3: Proveri da li ovde treba podesavati broj decimala. total = (total1 + total2) / 2; if (rezTak.Propozicije.Tak3NeRacunajProsekAkoNemaOceneIzObaKola && (rez.TotalPrvoKolo == null || rez.TotalDrugoKolo == null)) { total = total1 + total2; } } rez.setTotal(total); } rankRezultati(); if (rezTak.Propozicije.OdvojenoTak3) { updateKvalStatus(rezTak.Propozicije.BrojFinalistaTak3, rezTak.Propozicije.NeogranicenBrojTakmicaraIzKlubaTak3, rezTak.Propozicije.MaxBrojTakmicaraIzKlubaTak3, rezTak.Propozicije.MaxBrojTakmicaraTak3VaziZaDrzavu, rezTak.Propozicije.BrojRezerviTak3); applyRezultatiUpdate(rezultatiUpdate); } }
public virtual void loadFromDump(StringReader reader, IdMap map) { int count = int.Parse(reader.ReadLine()); for (int i = 0; i < count; ++i) { Gimnasticari.Add(map.gimnasticariMap[int.Parse(reader.ReadLine())]); } string id; count = int.Parse(reader.ReadLine()); for (int i = 0; i < count; ++i) { id = reader.ReadLine(); Ekipa e = new Ekipa(); map.ekipeMap.Add(int.Parse(id), e); e.loadFromDump(reader, map); Ekipe.Add(e); } id = reader.ReadLine(); PoredakUkupno poredakUkupno = null; if (id != NULL) { poredakUkupno = new PoredakUkupno(); poredakUkupno.loadFromDump(reader, map); } PoredakUkupno = poredakUkupno; count = int.Parse(reader.ReadLine()); for (int i = 0; i < count; ++i) { reader.ReadLine(); // id PoredakSprava poredakSprava = new PoredakSprava(); poredakSprava.loadFromDump(reader, map); PoredakSprava.Add(poredakSprava); } id = reader.ReadLine(); PoredakPreskok poredakPreskok = null; if (id != NULL) { poredakPreskok = new PoredakPreskok(); poredakPreskok.loadFromDump(reader, map); } PoredakPreskok = poredakPreskok; id = reader.ReadLine(); PoredakEkipno poredakEkipno = null; if (id != NULL) { poredakEkipno = new PoredakEkipno(); poredakEkipno.loadFromDump(reader, map); } PoredakEkipno = poredakEkipno; id = reader.ReadLine(); PoredakUkupnoFinaleKupa poredakUkupnoFinaleKupa = null; if (id != NULL) { poredakUkupnoFinaleKupa = new PoredakUkupnoFinaleKupa(); poredakUkupnoFinaleKupa.loadFromDump(reader, map); } PoredakUkupnoFinaleKupa = poredakUkupnoFinaleKupa; count = int.Parse(reader.ReadLine()); for (int i = 0; i < count; ++i) { reader.ReadLine(); // id PoredakSpravaFinaleKupa p = new PoredakSpravaFinaleKupa(); p.loadFromDump(reader, map); PoredakSpravaFinaleKupa.Add(p); } id = reader.ReadLine(); PoredakEkipnoFinaleKupa poredakEkipnoFinaleKupa = null; if (id != NULL) { poredakEkipnoFinaleKupa = new PoredakEkipnoFinaleKupa(); poredakEkipnoFinaleKupa.loadFromDump(reader, map); } PoredakEkipnoFinaleKupa = poredakEkipnoFinaleKupa; id = reader.ReadLine(); PoredakUkupnoZbirViseKola poredakUkupnoZbirViseKola = null; if (id != NULL) { poredakUkupnoZbirViseKola = new PoredakUkupnoZbirViseKola(); poredakUkupnoZbirViseKola.loadFromDump(reader, map); } PoredakUkupnoZbirViseKola = poredakUkupnoZbirViseKola; id = reader.ReadLine(); PoredakEkipnoZbirViseKola poredakEkipnoZbirViseKola = null; if (id != NULL) { poredakEkipnoZbirViseKola = new PoredakEkipnoZbirViseKola(); poredakEkipnoZbirViseKola.loadFromDump(reader, map); } PoredakEkipnoZbirViseKola = poredakEkipnoZbirViseKola; }
public virtual void dump(StringBuilder strBuilder) { strBuilder.AppendLine(Id.ToString()); // gimnasticari strBuilder.AppendLine(Gimnasticari.Count.ToString()); foreach (GimnasticarUcesnik g in Gimnasticari) { strBuilder.AppendLine(g.Id.ToString()); } // ekipe strBuilder.AppendLine(Ekipe.Count.ToString()); foreach (Ekipa e in Ekipe) { e.dump(strBuilder); } if (PoredakUkupno == null) { strBuilder.AppendLine(NULL); } else { PoredakUkupno.dump(strBuilder); } strBuilder.AppendLine(PoredakSprava.Count.ToString()); foreach (PoredakSprava p in PoredakSprava) { p.dump(strBuilder); } if (PoredakPreskok == null) { strBuilder.AppendLine(NULL); } else { PoredakPreskok.dump(strBuilder); } if (PoredakEkipno == null) { strBuilder.AppendLine(NULL); } else { PoredakEkipno.dump(strBuilder); } if (PoredakUkupnoFinaleKupa == null) { strBuilder.AppendLine(NULL); } else { PoredakUkupnoFinaleKupa.dump(strBuilder); } strBuilder.AppendLine(PoredakSpravaFinaleKupa.Count.ToString()); foreach (PoredakSpravaFinaleKupa p in PoredakSpravaFinaleKupa) { p.dump(strBuilder); } if (PoredakEkipnoFinaleKupa == null) { strBuilder.AppendLine(NULL); } else { PoredakEkipnoFinaleKupa.dump(strBuilder); } if (PoredakUkupnoZbirViseKola == null) { strBuilder.AppendLine(NULL); } else { PoredakUkupnoZbirViseKola.dump(strBuilder); } if (PoredakEkipnoZbirViseKola == null) { strBuilder.AppendLine(NULL); } else { PoredakEkipnoZbirViseKola.dump(strBuilder); } }