private bool ranksAreEqual(RezultatSprava r1, RezultatSprava r2, bool vecaEOcenaImaPrednost) { if (r1 == null || r2 == null) { return(false); } return(r1.Total == r2.Total && (!vecaEOcenaImaPrednost || r1.E == r2.E)); }
public virtual void addGimnasticar(GimnasticarUcesnik g, Ocena o, RezultatskoTakmicenje rezTak) { RezultatSprava r = new RezultatSprava(); r.Gimnasticar = g; r.setOcena(o); Rezultati.Add(r); rankRezultati(rezTak.Propozicije); }
public virtual void editOcena(Ocena o, RezultatskoTakmicenje rezTak) { RezultatSprava r = getRezultat(o.Gimnasticar); if (r != null) { r.setOcena(o); rankRezultati(rezTak.Propozicije); } }
public virtual void deleteGimnasticar(GimnasticarUcesnik g, RezultatskoTakmicenje rezTak) { RezultatSprava r = getRezultat(g); 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()); Sprava = (Sprava)Enum.Parse(typeof(Sprava), reader.ReadLine()); int brojRezultata = int.Parse(reader.ReadLine()); for (int i = 0; i < brojRezultata; ++i) { reader.ReadLine(); // id RezultatSprava r = new RezultatSprava(); r.loadFromDump(reader, map); Rezultati.Add(r); } }
public virtual void deleteOcena(Ocena o, RezultatskoTakmicenje rezTak, bool removeRezultat) { RezultatSprava r = getRezultat(o.Gimnasticar); if (r != null) { if (removeRezultat) { Rezultati.Remove(r); } else { r.clearOcena(); } rankRezultati(rezTak.Propozicije); } }
public virtual void addOcena(Ocena o, RezultatskoTakmicenje rezTak, bool createRezultat) { RezultatSprava rezultat; if (createRezultat) { rezultat = new RezultatSprava(); rezultat.Gimnasticar = o.Gimnasticar; Rezultati.Add(rezultat); } else { rezultat = getRezultat(o.Gimnasticar); } if (rezultat != null) { rezultat.setOcena(o); rankRezultati(rezTak.Propozicije); } }
public virtual void create(RezultatskoTakmicenje rezTak, IList <Ocena> ocene) { IList <GimnasticarUcesnik> gimnasticari; if (deoTakKod == DeoTakmicenjaKod.Takmicenje1) { gimnasticari = getGimnasticari(ocene, Sprava, rezTak); } else { gimnasticari = rezTak.Takmicenje3.getGimnasticariKvalifikanti(Sprava); } IDictionary <int, RezultatSprava> rezultatiMap = new Dictionary <int, RezultatSprava>(); foreach (GimnasticarUcesnik g in gimnasticari) { RezultatSprava r = new RezultatSprava(); r.Gimnasticar = g; rezultatiMap.Add(g.Id, r); } foreach (Ocena o in ocene) { if (o.Sprava == Sprava && rezultatiMap.ContainsKey(o.Gimnasticar.Id)) { rezultatiMap[o.Gimnasticar.Id].setOcena(o); } } Rezultati.Clear(); foreach (RezultatSprava r in rezultatiMap.Values) { Rezultati.Add(r); } rankRezultati(rezTak.Propozicije); }
public virtual void initDrugoKolo(RezultatSprava r) { D_DrugoKolo = r.D; E_DrugoKolo = r.E; TotalDrugoKolo = r.Total; }
public virtual void initPrvoKolo(RezultatSprava r) { D_PrvoKolo = r.D; E_PrvoKolo = r.E; TotalPrvoKolo = r.Total; }
public virtual void rankRezultati(Propozicije propozicije) { // TODO3: I u klasi PoredakSpravaFinaleKupa treba razresiti situaciju kada dva gimnasticara imaju iste ocene. // Pretpostavljam da i tamo treba gledati E ocene, tj. ko ima vecu taj je u prednosti. List <RezultatSprava> rezultati = new List <RezultatSprava>(Rezultati); PropertyDescriptor[] propDesc; ListSortDirection[] sortDir; if (propozicije.VecaEOcenaImaPrednost) { propDesc = new PropertyDescriptor[] { TypeDescriptor.GetProperties(typeof(RezultatSprava))["Total"], TypeDescriptor.GetProperties(typeof(RezultatSprava))["E"], TypeDescriptor.GetProperties(typeof(RezultatSprava))["PrezimeIme"] }; sortDir = new ListSortDirection[] { ListSortDirection.Descending, ListSortDirection.Descending, ListSortDirection.Ascending }; } else { propDesc = new PropertyDescriptor[] { TypeDescriptor.GetProperties(typeof(RezultatSprava))["Total"], TypeDescriptor.GetProperties(typeof(RezultatSprava))["PrezimeIme"] }; sortDir = new ListSortDirection[] { ListSortDirection.Descending, ListSortDirection.Ascending }; } rezultati.Sort(new SortComparer <RezultatSprava>(propDesc, sortDir)); RezultatSprava prevRezultat = null; short prevRank = 0; for (int i = 0; i < rezultati.Count; i++) { rezultati[i].RedBroj = (short)(i + 1); if (rezultati[i].Total == null) { rezultati[i].Rank = null; } else { if (!ranksAreEqual(rezultati[i], prevRezultat, propozicije.VecaEOcenaImaPrednost)) { rezultati[i].Rank = rezultati[i].RedBroj; } else { rezultati[i].Rank = prevRank; } prevRezultat = rezultati[i]; prevRank = rezultati[i].Rank.Value; } } updateKvalStatus <RezultatSprava>(propozicije, Rezultati, deoTakKod, x => x.Total == null); }