示例#1
0
        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);
            }
        }
示例#2
0
        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;
        }
示例#3
0
        // 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);
                    }
                }
            }
        }
示例#4
0
 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);
 }
示例#5
0
 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);
 }
示例#6
0
 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);
 }
示例#7
0
 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);
         }
     }
 }
示例#8
0
 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);
         }
     }
 }
示例#9
0
        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);
        }
示例#10
0
        // 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);
            }
        }
示例#11
0
        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;
        }
示例#12
0
        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);
            }
        }