public virtual void loadFromDump(StringReader reader, IdMap map) { string naziv = reader.ReadLine(); Naziv = naziv != NULL ? naziv : null; RedBroj = byte.Parse(reader.ReadLine()); string line = reader.ReadLine(); Takmicenje = line != NULL ? map.takmicenjeMap[int.Parse(line)] : null; }
public virtual void loadFromDump(StringReader reader, IdMap map) { string naziv = reader.ReadLine(); Naziv = naziv != NULL ? naziv : null; string kod = reader.ReadLine(); Kod = kod != NULL ? kod : null; Takmicenje = map.takmicenjeMap[int.Parse(reader.ReadLine())]; }
public override int GetHashCode() { unchecked { int result = 14; result = 29 * result + Gimnastika.GetHashCode(); result = 29 * result + Takmicenje.GetHashCode(); result = 29 * result + Kategorija.GetHashCode(); result = 29 * result + TakmicenjeDescription.GetHashCode(); return(result); } }
public RezultatskoTakmicenje(Takmicenje takmicenje, TakmicarskaKategorija kategorija, RezultatskoTakmicenjeDescription desc, Propozicije propozicije) { this.takmicenje = takmicenje; this.kategorija = kategorija; this.description = desc; this.propozicije = propozicije; this.gimnastika = takmicenje.Gimnastika; Takmicenje1 = new Takmicenje1(takmicenje); Takmicenje2 = new Takmicenje2(); Takmicenje3 = new Takmicenje3(Gimnastika); Takmicenje4 = new Takmicenje4(); }
public override bool Equals(object other) { if (object.ReferenceEquals(this, other)) { return(true); } if (!(other is Takmicenje)) { return(false); } Takmicenje that = (Takmicenje)other; return(this.Naziv.ToUpper() == that.Naziv.ToUpper() && this.Gimnastika == that.Gimnastika && this.Datum == that.Datum); }
public RasporedSudija(IList <TakmicarskaKategorija> kategorije, DeoTakmicenjaKod deoTakKod, Gimnastika gimnastika) { if (kategorije.Count == 0) { throw new ArgumentException("Kategorije ne smeju da budu prazne."); } this.Naziv = RasporedNastupa.kreirajNaziv(kategorije); this.deoTakKod = deoTakKod; this.takmicenje = kategorije[0].Takmicenje; Sprava[] sprave = Sprave.getSprave(gimnastika); foreach (Sprava s in sprave) { odbori.Add(new SudijskiOdborNaSpravi(s)); } }
public virtual void kreirajRezultateViseKola(IList <RezultatskoTakmicenje> rezTakmicenja, List <IList <RezultatskoTakmicenje> > rezTakmicenjaPrethodnaKola) { foreach (RezultatskoTakmicenje rt in rezTakmicenja) { RezultatskoTakmicenje rezTak1 = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethodnaKola[0], 0, rt.Kategorija); RezultatskoTakmicenje rezTak2 = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethodnaKola[1], 0, rt.Kategorija); RezultatskoTakmicenje rezTak3 = null; RezultatskoTakmicenje rezTak4 = null; if (TreceKolo != null) { rezTak3 = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethodnaKola[2], 0, rt.Kategorija); } if (CetvrtoKolo != null) { rezTak4 = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethodnaKola[3], 0, rt.Kategorija); } if (FinaleKupa) { rt.Takmicenje1.PoredakUkupnoFinaleKupa.create(rt, rezTak1, rezTak2); rt.Takmicenje1.initPoredakSpravaFinaleKupa(Gimnastika); foreach (PoredakSpravaFinaleKupa p in rt.Takmicenje1.PoredakSpravaFinaleKupa) { p.create(rt, rezTak1, rezTak2); } // TODO4: Obradi slucaj kombinovanog ekipnog takmicenja (na svim mestima gde se racuna). rt.Takmicenje1.PoredakEkipnoFinaleKupa.create(rt, rezTak1, rezTak2); } else if (ZbirViseKola) { rt.Takmicenje1.PoredakUkupnoZbirViseKola.create(rt, rezTak1, rezTak2, rezTak3, rezTak4); rt.Takmicenje1.PoredakEkipnoZbirViseKola.create(rt, rezTak1, rezTak2, rezTak3, rezTak4); } } }
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); }
public virtual void updateRezultatiOnChangedPropozicije(IDictionary <int, Domain.Propozicije> origPropozicijeMap, Takmicenje takmicenje, IList <RezultatskoTakmicenje> rezTakmicenja, IList <Ocena> oceneTak1) { Propozicije origPropozicije = origPropozicijeMap[Id]; bool rankPoredakUkupnoTak1 = false; bool createPoredakUkupnoTak1 = false; bool rankPoredakSpravaTak1 = false; bool rankPoredakPreskokTak1 = false; bool rankPoredakSpravaTak3 = false; bool rankPoredakPreskokTak3 = false; bool rankPoredakEkipeTak1 = false; bool createPoredakEkipeTak1 = false; bool calculatePoredakUkupnoFinaleKupa = false; bool calculatePoredakUkupnoZbirViseKola = false; bool rankPoredakSpravaFinaleKupa = false; bool calculatePoredakSpravaFinaleKupa = false; bool calculatePoredakEkipnoFinaleKupa = false; bool calculatePoredakEkipnoZbirViseKola = false; bool updateRezTak = false; // TODO: Fali kod za odvojeno takmicenje 2 finale kupa if (Propozicije.PostojiTak2 != origPropozicije.PostojiTak2) { // ignorisi, posto Takmicenje 2 uvek postoji, da bi se videli rezultati } if (Propozicije.OdvojenoTak2 != origPropozicije.OdvojenoTak2) { // Rangiraj ponovo rezultate jer se kval. status promenio. rankPoredakUkupnoTak1 = true; } if (Propozicije.ZaPreskokVisebojRacunajBoljuOcenu != origPropozicije.ZaPreskokVisebojRacunajBoljuOcenu) { createPoredakUkupnoTak1 = true; } if (Propozicije.NeogranicenBrojTakmicaraIzKlubaTak2 != origPropozicije.NeogranicenBrojTakmicaraIzKlubaTak2 || Propozicije.MaxBrojTakmicaraIzKlubaTak2 != origPropozicije.MaxBrojTakmicaraIzKlubaTak2 || Propozicije.MaxBrojTakmicaraTak2VaziZaDrzavu != origPropozicije.MaxBrojTakmicaraTak2VaziZaDrzavu || Propozicije.BrojFinalistaTak2 != origPropozicije.BrojFinalistaTak2 || Propozicije.BrojRezerviTak2 != origPropozicije.BrojRezerviTak2) { rankPoredakUkupnoTak1 = true; } if (Propozicije.PostojiTak3 != origPropozicije.PostojiTak3) { // ignorisi, posto Takmicenje 3 uvek postoji, da bi se videli rezultati } if (Propozicije.OdvojenoTak3 != origPropozicije.OdvojenoTak3) { // Rangiraj ponovo rezultate jer se kval. status promenio. if (takmicenje.StandardnoTakmicenje) { rankPoredakSpravaTak1 = true; rankPoredakPreskokTak1 = true; } else if (takmicenje.FinaleKupa) { rankPoredakSpravaFinaleKupa = true; } } if (Propozicije.NeogranicenBrojTakmicaraIzKlubaTak3 != origPropozicije.NeogranicenBrojTakmicaraIzKlubaTak3 || Propozicije.MaxBrojTakmicaraIzKlubaTak3 != origPropozicije.MaxBrojTakmicaraIzKlubaTak3 || Propozicije.MaxBrojTakmicaraTak3VaziZaDrzavu != origPropozicije.MaxBrojTakmicaraTak3VaziZaDrzavu || Propozicije.BrojFinalistaTak3 != origPropozicije.BrojFinalistaTak3 || Propozicije.BrojRezerviTak3 != origPropozicije.BrojRezerviTak3) { if (takmicenje.StandardnoTakmicenje) { rankPoredakSpravaTak1 = true; rankPoredakPreskokTak1 = true; } else if (takmicenje.FinaleKupa) { rankPoredakSpravaFinaleKupa = true; } } if (Propozicije.VecaEOcenaImaPrednost != origPropozicije.VecaEOcenaImaPrednost) { if (takmicenje.StandardnoTakmicenje) { rankPoredakSpravaTak1 = true; rankPoredakPreskokTak1 = true; rankPoredakSpravaTak3 = true; rankPoredakPreskokTak3 = true; } else if (takmicenje.FinaleKupa) { rankPoredakSpravaTak1 = true; rankPoredakPreskokTak1 = true; } } if (Propozicije.Tak1PreskokNaOsnovuObaPreskoka != origPropozicije.Tak1PreskokNaOsnovuObaPreskoka) { if (takmicenje.StandardnoTakmicenje || takmicenje.FinaleKupa) { rankPoredakPreskokTak1 = true; } } if (Propozicije.Tak3PreskokNaOsnovuObaPreskoka != origPropozicije.Tak3PreskokNaOsnovuObaPreskoka) { if (takmicenje.StandardnoTakmicenje) { rankPoredakPreskokTak3 = true; } } // TODO: Fali kod za odvojeno ekipno finale kupa if (Propozicije.PostojiTak4 != origPropozicije.PostojiTak4) { // TODO4: Ovaj deo (konkretno grana else if (Propozicije.PostojiTak4)) je pravio probleme kada se // kreira takmicenje gde postoji jedno ekipno takmicenje za sve kategorije (prava vrednost za // ImaEkipnoTakmicenje se podesi u updateImaEkipnoTakmicenje, a onda se ovde pogresno postavi na true // za sva rez.takmicenja). Proveri da li moze (i kada) da pravi probleme to sto sam ceo ovaj deo // zakomentarisao /*if (takmicenje.ZavrsenoTak1) * { * // ignorisi * // TODO: Da li treba vracati originalnu vrednost za PostojiTak4 (isto i za PostojiTak2 i PostojiTak3) * } * else if (Propozicije.PostojiTak4) * { * // ignorisi, posto se PoredakEkipno za takmicenje 1 uvek kreira * ImaEkipnoTakmicenje = true; * } * else * { * // TODO: Razmisli da li treba pitati korisnika za potvrdu, pa zatim izbrisati ekipe i poredak ekipno. * ImaEkipnoTakmicenje = false; * }*/ // KombinovanoEkipnoTak se podesava u updateImaEkipnoTakmicenje. } if (Propozicije.OdvojenoTak4 != origPropozicije.OdvojenoTak4) { // Rangiraj ponovo rezultate jer se kval. status promenio. rankPoredakEkipeTak1 = true; } if (Propozicije.JednoTak4ZaSveKategorije != origPropozicije.JednoTak4ZaSveKategorije) { // rt.ImaEkipnoTakmicenje i rt.KombinovanoEkipnoTak su promenjeni u updateImaEkipnoTakmicenje. updateRezTak = true; // PoredakEkipno i Ekipe ignorisem, ostavljam korisniku da to ispodesava. } if (Propozicije.BrojRezultataKojiSeBodujuZaEkipu != origPropozicije.BrojRezultataKojiSeBodujuZaEkipu) { if (ImaEkipnoTakmicenje) { createPoredakEkipeTak1 = true; } } if (!createPoredakEkipeTak1 && ImaEkipnoTakmicenje) { // Proveri da li treba ponovo racunati poredak zbog promenjenog nacina racunanja viseboja. bool create = false; if (!KombinovanoEkipnoTak && Propozicije.ZaPreskokVisebojRacunajBoljuOcenu != origPropozicije.ZaPreskokVisebojRacunajBoljuOcenu) { create = true; } if (!create && KombinovanoEkipnoTak) { // Proveri da li je nekom rez. takmicenju unutar istog descriptiona promenjen nacin racunanja // viseboja. foreach (RezultatskoTakmicenje rt2 in rezTakmicenja) { if (!rt2.TakmicenjeDescription.Equals(TakmicenjeDescription)) { continue; } if (rt2.Propozicije.ZaPreskokVisebojRacunajBoljuOcenu != origPropozicijeMap[rt2.Id].ZaPreskokVisebojRacunajBoljuOcenu) { create = true; break; } } } if (create) { createPoredakEkipeTak1 = true; } } if (Propozicije.BrojEkipaUFinalu != origPropozicije.BrojEkipaUFinalu) { if (ImaEkipnoTakmicenje) { rankPoredakEkipeTak1 = true; } } if (Propozicije.NacinRacunanjaOceneFinaleKupaTak2 != origPropozicije.NacinRacunanjaOceneFinaleKupaTak2) { if (takmicenje.FinaleKupa) { calculatePoredakUkupnoFinaleKupa = true; } else if (takmicenje.ZbirViseKola) { calculatePoredakUkupnoZbirViseKola = true; } } if (Propozicije.NacinRacunanjaOceneFinaleKupaTak3 != origPropozicije.NacinRacunanjaOceneFinaleKupaTak3) { if (takmicenje.FinaleKupa) { calculatePoredakSpravaFinaleKupa = true; } } if (Propozicije.NacinRacunanjaOceneFinaleKupaTak4 != origPropozicije.NacinRacunanjaOceneFinaleKupaTak4) { if (takmicenje.FinaleKupa) { calculatePoredakEkipnoFinaleKupa = true; } else if (takmicenje.ZbirViseKola) { calculatePoredakEkipnoZbirViseKola = true; } } if (updateRezTak) { } if (createPoredakUkupnoTak1) { Takmicenje1.PoredakUkupno.create(this, oceneTak1); } else if (rankPoredakUkupnoTak1) { Takmicenje1.PoredakUkupno.rankRezultati(Propozicije); } if (rankPoredakSpravaTak1) { foreach (PoredakSprava ps in Takmicenje1.PoredakSprava) { ps.rankRezultati(Propozicije); } } if (rankPoredakPreskokTak1) { Takmicenje1.PoredakPreskok.rankRezultati(Propozicije); } if (rankPoredakSpravaTak3) { foreach (PoredakSprava ps in Takmicenje3.Poredak) { ps.rankRezultati(Propozicije); } } if (rankPoredakPreskokTak3) { Takmicenje3.PoredakPreskok.rankRezultati(Propozicije); } if (createPoredakEkipeTak1) { Takmicenje1.PoredakEkipno.create(this, Takmicenje.getEkipaRezultatiUkupnoMap(this, rezTakmicenja, DeoTakmicenjaKod.Takmicenje1)); } else if (rankPoredakEkipeTak1) { Takmicenje1.PoredakEkipno.rankRezultati(Propozicije); } if (calculatePoredakUkupnoFinaleKupa) { Takmicenje1.PoredakUkupnoFinaleKupa.calculateTotal(Propozicije); } if (calculatePoredakUkupnoZbirViseKola) { Takmicenje1.PoredakUkupnoZbirViseKola.calculateTotal(); } if (calculatePoredakSpravaFinaleKupa) { foreach (PoredakSpravaFinaleKupa p in Takmicenje1.PoredakSpravaFinaleKupa) { p.calculateTotal(Propozicije); } } else if (rankPoredakSpravaFinaleKupa) { foreach (PoredakSpravaFinaleKupa p in Takmicenje1.PoredakSpravaFinaleKupa) { p.rankRezultati(Propozicije); } } if (calculatePoredakEkipnoFinaleKupa) { Takmicenje1.PoredakEkipnoFinaleKupa.calculateTotal(Propozicije); } if (calculatePoredakEkipnoZbirViseKola) { Takmicenje1.PoredakEkipnoZbirViseKola.calculateTotal(); } }
// NOTE: Metod setTakmicenjeInternal nije za upotrebu vec se koristi samo kao // pomoc prilikom uspostavlja dvostruke asocijacije izmedju Takmicenja i // TakmicarskeKategorije (set aksesor za Takmicenje sam proglasio privatnim da // ga ne bi greskom koristio za uspostavljanje asocijacije). Ako je potrebno // da i Takmicenje ima metod za uspostavljanje asocijacije on bi izgledao // ovako // public void setTakmicenje(Takmicenje t) // { // t.addKategorija(this); // } public virtual void setTakmicenjeInternal(Takmicenje t) { Takmicenje = t; }