public Takmicenje3FinaleKupaPage(Propozicije propozicije, 
     IList<Propozicije> dependentPropozicije)
 {
     InitializeComponent();
     this.propozicije = propozicije;
     this.dependentPropozicije = dependentPropozicije;
 }
Esempio n. 2
0
        private Propozicije createPropozicije()
        {
            Propozicije result = new Propozicije();

            result.MaxBrojTakmicaraIzKlubaTak1 = 0; // nema ogranicenja

            result.PostojiTak2 = true;
            result.OdvojenoTak2 = true;
            result.NeogranicenBrojTakmicaraIzKlubaTak2 = false;
            result.MaxBrojTakmicaraIzKlubaTak2 = 2;
            result.BrojFinalistaTak2 = 24;
            result.BrojRezerviTak2 = 4;

            result.PostojiTak3 = true;
            result.OdvojenoTak3 = true;
            result.NeogranicenBrojTakmicaraIzKlubaTak3 = false;
            result.MaxBrojTakmicaraIzKlubaTak3 = 2;
            result.MaxBrojTakmicaraTak3VaziZaDrzavu = true;
            result.BrojFinalistaTak3 = 8;
            result.BrojRezerviTak3 = 3;
            result.KvalifikantiTak3PreskokNaOsnovuObaPreskoka = true;
            result.PoredakTak3PreskokNaOsnovuObaPreskoka = true;

            result.PostojiTak4 = false;
            result.OdvojenoTak4 = false;
            result.BrojRezultataKojiSeBodujuZaEkipu = 0;
            result.BrojEkipaUFinalu = 0;

            return result;
        }
Esempio n. 3
0
        public virtual Propozicije clonePropozicije()
        {
            Propozicije result = new Propozicije();

            result.PostojiTak2  = this.PostojiTak2;
            result.OdvojenoTak2 = this.OdvojenoTak2;
            result.ZaPreskokVisebojRacunajBoljuOcenu   = this.ZaPreskokVisebojRacunajBoljuOcenu;
            result.NeogranicenBrojTakmicaraIzKlubaTak2 = this.NeogranicenBrojTakmicaraIzKlubaTak2;
            result.MaxBrojTakmicaraIzKlubaTak2         = this.MaxBrojTakmicaraIzKlubaTak2;
            result.MaxBrojTakmicaraTak2VaziZaDrzavu    = this.MaxBrojTakmicaraTak2VaziZaDrzavu;
            result.BrojFinalistaTak2 = this.BrojFinalistaTak2;
            result.BrojRezerviTak2   = this.BrojRezerviTak2;

            result.PostojiTak3  = this.PostojiTak3;
            result.OdvojenoTak3 = this.OdvojenoTak3;
            result.NeogranicenBrojTakmicaraIzKlubaTak3 = this.NeogranicenBrojTakmicaraIzKlubaTak3;
            result.MaxBrojTakmicaraIzKlubaTak3         = this.MaxBrojTakmicaraIzKlubaTak3;
            result.MaxBrojTakmicaraTak3VaziZaDrzavu    = this.MaxBrojTakmicaraTak3VaziZaDrzavu;
            result.BrojFinalistaTak3 = this.BrojFinalistaTak3;
            result.BrojRezerviTak3   = this.BrojRezerviTak3;
            result.Tak1PreskokNaOsnovuObaPreskoka = this.Tak1PreskokNaOsnovuObaPreskoka;
            result.Tak3PreskokNaOsnovuObaPreskoka = this.Tak3PreskokNaOsnovuObaPreskoka;
            result.VecaEOcenaImaPrednost          = this.VecaEOcenaImaPrednost;

            result.PostojiTak4  = this.PostojiTak4;
            result.OdvojenoTak4 = this.OdvojenoTak4;
            result.BrojRezultataKojiSeBodujuZaEkipu = this.BrojRezultataKojiSeBodujuZaEkipu;
            result.BrojEkipaUFinalu         = this.BrojEkipaUFinalu;
            result.JednoTak4ZaSveKategorije = this.JednoTak4ZaSveKategorije;

            result.NacinRacunanjaOceneFinaleKupaTak2 = this.NacinRacunanjaOceneFinaleKupaTak2;
            result.NacinRacunanjaOceneFinaleKupaTak3 = this.NacinRacunanjaOceneFinaleKupaTak3;
            result.NacinRacunanjaOceneFinaleKupaTak4 = this.NacinRacunanjaOceneFinaleKupaTak4;
            return(result);
        }
Esempio n. 4
0
 public virtual void calculateTotal(Propozicije propozicije)
 {
     foreach (RezultatEkipnoFinaleKupa r in Rezultati)
     {
         r.calculateTotal(propozicije.NacinRacunanjaOceneFinaleKupaTak4);
     }
     rankRezultati(propozicije);
 }
Esempio n. 5
0
 // TODO: I za ostale propozicije (takmicenje 2, takmicenje 3, ...) kreiraj dva metoda - jedan sto kao argument
 // dobija object i jedan sto dobija listu.
 public virtual void copyTakmicenje4To(Propozicije p)
 {
     p.PostojiTak4                      = this.PostojiTak4;
     p.OdvojenoTak4                     = this.OdvojenoTak4;
     p.JednoTak4ZaSveKategorije         = this.JednoTak4ZaSveKategorije;
     p.BrojRezultataKojiSeBodujuZaEkipu = this.BrojRezultataKojiSeBodujuZaEkipu;
     p.BrojEkipaUFinalu                 = this.BrojEkipaUFinalu;
 }
Esempio n. 6
0
 public virtual void dump(StringBuilder strBuilder)
 {
     strBuilder.AppendLine(Id.ToString());
     strBuilder.AppendLine(RedBroj.ToString());
     strBuilder.AppendLine(Gimnastika.ToString());
     strBuilder.AppendLine(ImaEkipnoTakmicenje.ToString());
     strBuilder.AppendLine(KombinovanoEkipnoTak.ToString());
     strBuilder.AppendLine(Takmicenje != null ? Takmicenje.Id.ToString() : NULL);
     strBuilder.AppendLine(Kategorija != null ? Kategorija.Id.ToString() : NULL);
     strBuilder.AppendLine(TakmicenjeDescription != null ? TakmicenjeDescription.Id.ToString() : NULL);
     if (Propozicije == null)
     {
         strBuilder.AppendLine(NULL);
     }
     else
     {
         Propozicije.dump(strBuilder);
     }
     if (Takmicenje1 == null)
     {
         strBuilder.AppendLine(NULL);
     }
     else
     {
         Takmicenje1.dump(strBuilder);
     }
     if (Takmicenje2 == null)
     {
         strBuilder.AppendLine(NULL);
     }
     else
     {
         Takmicenje2.dump(strBuilder);
     }
     if (Takmicenje3 == null)
     {
         strBuilder.AppendLine(NULL);
     }
     else
     {
         Takmicenje3.dump(strBuilder);
     }
     if (Takmicenje4 == null)
     {
         strBuilder.AppendLine(NULL);
     }
     else
     {
         Takmicenje4.dump(strBuilder);
     }
 }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        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.Gimnastika);
            if (propozicije.PostojiTak2)
                _takmicenje2 = new Takmicenje2();
            if (propozicije.PostojiTak3)
                _takmicenje3 = new Takmicenje3(takmicenje.Gimnastika);
            if (propozicije.PostojiTak4)
                _takmicenje4 = new Takmicenje4();
        }
Esempio n. 9
0
        public virtual void loadFromDump(StringReader reader)
        {
            string naziv = reader.ReadLine();

            Naziv   = naziv != NULL ? naziv : null;
            RedBroj = byte.Parse(reader.ReadLine());

            string      id = reader.ReadLine();
            Propozicije p  = null;

            if (id != NULL)
            {
                p = new Propozicije();
                p.loadFromDump(reader);
            }
            Propozicije = p;
        }
Esempio n. 10
0
        private void updateKvalStatus(Propozicije propozicije)
        {
            if (!propozicije.odvojenoTak4())
            {
                foreach (RezultatEkipnoFinaleKupa r in Rezultati)
                {
                    r.KvalStatus = KvalifikacioniStatus.None;
                }
                return;
            }

            List <RezultatEkipnoFinaleKupa> rezultati = new List <RezultatEkipnoFinaleKupa>(Rezultati);
            PropertyDescriptor propDesc =
                TypeDescriptor.GetProperties(typeof(RezultatEkipnoFinaleKupa))["RedBroj"];

            rezultati.Sort(new SortComparer <RezultatEkipnoFinaleKupa>(propDesc,
                                                                       ListSortDirection.Ascending));

            int finCount = 0;
            int rezCount = 0;

            for (int i = 0; i < rezultati.Count; i++)
            {
                Rezultat rezultat = rezultati[i];
                if (rezultat.Total == null)
                {
                    rezultat.KvalStatus = KvalifikacioniStatus.None;
                    continue;
                }

                if (finCount < propozicije.BrojEkipaUFinalu)
                {
                    finCount++;
                    rezultat.KvalStatus = KvalifikacioniStatus.Q;
                }
                else if (rezCount < 0 /*brojRezervi*/)
                {
                    rezCount++;
                    rezultat.KvalStatus = KvalifikacioniStatus.R;
                }
                else
                {
                    rezultat.KvalStatus = KvalifikacioniStatus.None;
                }
            }
        }
Esempio n. 11
0
        public virtual void rankRezultati(Propozicije propozicije)
        {
            List <RezultatEkipnoFinaleKupa> rezultati = new List <RezultatEkipnoFinaleKupa>(Rezultati);

            PropertyDescriptor[] propDesc = new PropertyDescriptor[] {
                TypeDescriptor.GetProperties(typeof(RezultatEkipnoFinaleKupa))["Total"],
                TypeDescriptor.GetProperties(typeof(RezultatEkipnoFinaleKupa))["NazivEkipe"]
            };
            ListSortDirection[] sortDir = new ListSortDirection[] {
                ListSortDirection.Descending,
                ListSortDirection.Ascending
            };
            rezultati.Sort(new SortComparer <RezultatEkipnoFinaleKupa>(propDesc, sortDir));

            float prevTotal = -1f;
            short prevRank  = 0;

            for (int i = 0; i < rezultati.Count; i++)
            {
                rezultati[i].KvalStatus = KvalifikacioniStatus.None;
                rezultati[i].RedBroj    = (short)(i + 1);

                if (rezultati[i].Total == null)
                {
                    rezultati[i].Rank = null;
                }
                else
                {
                    if (rezultati[i].Total != prevTotal)
                    {
                        rezultati[i].Rank = (short)(i + 1);
                    }
                    else
                    {
                        rezultati[i].Rank = prevRank;
                    }

                    prevTotal = rezultati[i].Total.Value;
                    prevRank  = rezultati[i].Rank.Value;
                }
            }
            updateKvalStatus(propozicije);
        }
Esempio n. 12
0
        public override bool Equals(object other)
        {
            if (object.ReferenceEquals(this, other))
            {
                return(true);
            }
            if (!(other is Propozicije))
            {
                return(false);
            }
            Propozicije that = (Propozicije)other;

            return(this.PostojiTak2 == that.PostojiTak2 &&
                   this.OdvojenoTak2 == that.OdvojenoTak2 &&
                   this.ZaPreskokVisebojRacunajBoljuOcenu == that.ZaPreskokVisebojRacunajBoljuOcenu &&
                   this.NeogranicenBrojTakmicaraIzKlubaTak2 == that.NeogranicenBrojTakmicaraIzKlubaTak2 &&
                   this.MaxBrojTakmicaraIzKlubaTak2 == that.MaxBrojTakmicaraIzKlubaTak2 &&
                   this.MaxBrojTakmicaraTak2VaziZaDrzavu == that.MaxBrojTakmicaraTak2VaziZaDrzavu &&
                   this.BrojFinalistaTak2 == that.BrojFinalistaTak2 &&
                   this.BrojRezerviTak2 == that.BrojRezerviTak2

                   && this.PostojiTak3 == that.PostojiTak3 &&
                   this.OdvojenoTak3 == that.OdvojenoTak3 &&
                   this.NeogranicenBrojTakmicaraIzKlubaTak3 == that.NeogranicenBrojTakmicaraIzKlubaTak3 &&
                   this.MaxBrojTakmicaraIzKlubaTak3 == that.MaxBrojTakmicaraIzKlubaTak3 &&
                   this.MaxBrojTakmicaraTak3VaziZaDrzavu == that.MaxBrojTakmicaraTak3VaziZaDrzavu &&
                   this.BrojFinalistaTak3 == that.BrojFinalistaTak3 &&
                   this.BrojRezerviTak3 == that.BrojRezerviTak3 &&
                   this.Tak1PreskokNaOsnovuObaPreskoka == that.Tak1PreskokNaOsnovuObaPreskoka &&
                   this.Tak3PreskokNaOsnovuObaPreskoka == that.Tak3PreskokNaOsnovuObaPreskoka &&
                   this.VecaEOcenaImaPrednost == that.VecaEOcenaImaPrednost

                   && this.PostojiTak4 == that.PostojiTak4 &&
                   this.OdvojenoTak4 == that.OdvojenoTak4 &&
                   this.BrojRezultataKojiSeBodujuZaEkipu == that.BrojRezultataKojiSeBodujuZaEkipu &&
                   this.BrojEkipaUFinalu == that.BrojEkipaUFinalu &&
                   this.JednoTak4ZaSveKategorije == that.JednoTak4ZaSveKategorije

                   && this.NacinRacunanjaOceneFinaleKupaTak2 == that.NacinRacunanjaOceneFinaleKupaTak2 &&
                   this.NacinRacunanjaOceneFinaleKupaTak3 == that.NacinRacunanjaOceneFinaleKupaTak3 &&
                   this.NacinRacunanjaOceneFinaleKupaTak4 == that.NacinRacunanjaOceneFinaleKupaTak4);
        }
Esempio n. 13
0
        public virtual void rankRezultati(Propozicije propozicije)
        {
            if (!propozicije.racunajObaPreskoka(DeoTakmicenjaKod))
            {
                List <RezultatPreskok> rezultati = new List <RezultatPreskok>(Rezultati);
                rankByPrviPreskok(rezultati, propozicije.VecaEOcenaImaPrednost, 0);
            }
            else
            {
                List <RezultatPreskok> rezultatiObaPreskoka = new List <RezultatPreskok>();
                List <RezultatPreskok> rezultatiPrviPreskok = new List <RezultatPreskok>();
                foreach (RezultatPreskok r in Rezultati)
                {
                    if (r.TotalObeOcene != null)
                    {
                        rezultatiObaPreskoka.Add(r);
                    }
                    else
                    {
                        rezultatiPrviPreskok.Add(r);
                    }
                }

                // Ovakav nacin rangiranja rezultata (da se prvo rangiraju takmicari sa dva preskoka pa zatim sa jednim)
                // obezbedjuje da i u situaciji kada je u propozicijama navedeno da se preskok racuna na osnovu obe ocene,
                // a zatim se kod unosenja ocena unese samo prva ocena za sve takmicare, da ce i tada takmicari biti
                // ispravno rangirani (rezultatiObaPreskoka ce tada biti prazni)
                rankByObaPreskoka(rezultatiObaPreskoka, propozicije.VecaEOcenaImaPrednost);
                rankByPrviPreskok(rezultatiPrviPreskok, propozicije.VecaEOcenaImaPrednost, rezultatiObaPreskoka.Count);
            }

            // NOTE: Deo "!obaPreskoka && x.Total == null" obezbedjuje da se kvalifikanti racunaju na osnovu prvog skoka
            // u situacijama kada je u propozicijama stavljeno da se kvalifikanti racunaju na osnovu oba skoka, a u
            // takmicenju 1 je unesen samo prvi skok. (Inace nijedan gimnasticar ne bi bio oznacen sa Q).

            bool obaPreskoka = postojeObaPreskoka();

            PoredakSprava.updateKvalStatus <RezultatPreskok>(propozicije, Rezultati, deoTakKod,
                                                             x => !propozicije.Tak1PreskokNaOsnovuObaPreskoka && x.Total == null ||
                                                             propozicije.Tak1PreskokNaOsnovuObaPreskoka &&
                                                             (obaPreskoka && x.TotalObeOcene == null || !obaPreskoka && x.Total == null));
        }
Esempio n. 14
0
        public virtual void dumpRezultati(StreamWriter streamWriter, Propozicije propozicije)
        {
            string header = DeoTakmicenjaKod == DeoTakmicenjaKod.Takmicenje1 ? "PRESKOK" : "PRESKOK - FINALE";

            streamWriter.WriteLine(header);
            foreach (RezultatPreskok r in getRezultati())
            {
                float?total;
                if (!propozicije.racunajObaPreskoka(DeoTakmicenjaKod) || r.TotalObeOcene == null)
                {
                    total = r.Total;
                }
                else
                {
                    total = r.TotalObeOcene;
                }
                string line = r.Rank + ". " + r.Gimnasticar.ImeSrednjeImePrezimeDatumRodjenja + "   " + total;
                streamWriter.WriteLine(line);
            }
        }
Esempio n. 15
0
        public virtual void rankRezultati(Propozicije propozicije, bool finaleMemorijala = false,
                                          int maxBrojTakmicaraIzKluba = 0, bool maxBrojTakmicaraVaziZaDrzavu = false)
        {
            List <RezultatUkupno> rezultati = new List <RezultatUkupno>(Rezultati);

            PropertyDescriptor[] propDesc = new PropertyDescriptor[] {
                TypeDescriptor.GetProperties(typeof(RezultatUkupno))["Total"],
                TypeDescriptor.GetProperties(typeof(RezultatUkupno))["PrezimeIme"]
            };
            ListSortDirection[] sortDir = new ListSortDirection[] {
                ListSortDirection.Descending,
                ListSortDirection.Ascending
            };
            rezultati.Sort(new SortComparer <RezultatUkupno>(propDesc, sortDir));

            float prevTotal = -1f;
            short prevRank  = 0;

            for (int i = 0; i < rezultati.Count; i++)
            {
                rezultati[i].KvalStatus = KvalifikacioniStatus.None;
                rezultati[i].RedBroj    = (short)(i + 1);

                if (rezultati[i].Total == null)
                {
                    rezultati[i].Rank = null;
                }
                else
                {
                    if (rezultati[i].Total != prevTotal)
                    {
                        rezultati[i].Rank = (short)(i + 1);
                    }
                    else
                    {
                        rezultati[i].Rank = prevRank;
                    }

                    prevTotal = rezultati[i].Total.Value;
                    prevRank  = rezultati[i].Rank.Value;
                }
            }
            if (!finaleMemorijala)
            {
                updateKvalStatus(propozicije.odvojenoTak2(), propozicije.BrojFinalistaTak2, propozicije.BrojRezerviTak2,
                                 propozicije.NeogranicenBrojTakmicaraIzKlubaTak2, propozicije.MaxBrojTakmicaraIzKlubaTak2,
                                 propozicije.MaxBrojTakmicaraTak2VaziZaDrzavu);
            }
            else
            {
                updateKvalStatus(true, 1000, 0,
                                 false, maxBrojTakmicaraIzKluba,
                                 maxBrojTakmicaraVaziZaDrzavu);
                for (int i = Rezultati.Count - 1; i >= 0; --i)
                {
                    if (Rezultati[i].KvalStatus != KvalifikacioniStatus.Q)
                    {
                        Rezultati.RemoveAt(i);
                    }
                }
                // Ponovi rangiraj gimnasticare, nakon sto smo izbacili suvisne.
                rankRezultati(propozicije);
            }
        }
Esempio n. 16
0
        public static void updateKvalStatus <T>(Propozicije propozicije, IList <T> rezultatiList,
                                                DeoTakmicenjaKod deoTakKod, IsTotalNull <T> isTotalNull) where T : RezultatSprava
        {
            foreach (T r in rezultatiList)
            {
                r.KvalStatus = KvalifikacioniStatus.None;
            }

            if (deoTakKod != DeoTakmicenjaKod.Takmicenje1 || !propozicije.odvojenoTak3())
            {
                return;
            }

            List <T>           rezultati = new List <T>(rezultatiList);
            PropertyDescriptor propDesc  = TypeDescriptor.GetProperties(typeof(T))["RedBroj"];

            rezultati.Sort(new SortComparer <T>(propDesc, ListSortDirection.Ascending));

            // moram da koristim dve mape zato sto je moguca situacija da klub i
            // drzava imaju isti id
            IDictionary <int, int> brojTakmicaraKlubMap   = new Dictionary <int, int>();
            IDictionary <int, int> brojTakmicaraDrzavaMap = new Dictionary <int, int>();
            IDictionary <int, int> brojTakmicaraMap       = null;
            int id = -1;

            int         finCount        = 0;
            int         rezCount        = 0;
            T           prevFinRezultat = null;
            List <bool> porediDrzavu    = new List <bool>();

            for (int i = 0; i < rezultati.Count; i++)
            {
                T rezultat = rezultati[i];
                if (isTotalNull(rezultat))
                {
                    rezultat.KvalStatus = KvalifikacioniStatus.None;
                    continue;
                }

                if (!propozicije.NeogranicenBrojTakmicaraIzKlubaTak3)
                {
                    porediDrzavu.Add(false);
                    if (propozicije.MaxBrojTakmicaraTak3VaziZaDrzavu)
                    {
                        if (rezultat.Gimnasticar.DrzavaUcesnik != null)
                        {
                            porediDrzavu[i] = true;
                            id = rezultat.Gimnasticar.DrzavaUcesnik.Id;
                            brojTakmicaraMap = brojTakmicaraDrzavaMap;
                        }
                        else
                        {
                            id = rezultat.Gimnasticar.KlubUcesnik.Id;
                            brojTakmicaraMap = brojTakmicaraKlubMap;
                        }
                    }
                    else
                    {
                        if (rezultat.Gimnasticar.KlubUcesnik != null)
                        {
                            id = rezultat.Gimnasticar.KlubUcesnik.Id;
                            brojTakmicaraMap = brojTakmicaraKlubMap;
                        }
                        else
                        {
                            porediDrzavu[i] = true;
                            id = rezultat.Gimnasticar.DrzavaUcesnik.Id;
                            brojTakmicaraMap = brojTakmicaraDrzavaMap;
                        }
                    }
                    if (!brojTakmicaraMap.ContainsKey(id))
                    {
                        brojTakmicaraMap.Add(id, 0);
                    }
                }

                if (finCount < propozicije.BrojFinalistaTak3 || rezultat.Rank == prevFinRezultat.Rank)
                {
                    if (propozicije.NeogranicenBrojTakmicaraIzKlubaTak3 ||
                        brojTakmicaraMap[id] < propozicije.MaxBrojTakmicaraIzKlubaTak3 ||
                        postojiIstiKvalRezultatIzKluba <T>(rezultat, rezultati, porediDrzavu))
                    {
                        // Poslednji uslov u if naredbi znaci da je dostignut limit broja takmicara iz kluba, a medju
                        // finalistima se nalazi i gimnasticar iz istog kluba koji ima istu ocenu. U tom slucaju moramo
                        // da dodamo i ovog finalistu. TODO4: Da li u ovom slucaju treba da povecavamo finCount? (i kod
                        // rezultata viseboja isto).

                        finCount++;
                        rezultat.KvalStatus = KvalifikacioniStatus.Q;
                        prevFinRezultat     = rezultat;
                        if (!propozicije.NeogranicenBrojTakmicaraIzKlubaTak3)
                        {
                            brojTakmicaraMap[id]++;
                        }
                    }
                    else if (rezCount < propozicije.BrojRezerviTak3 && Opcije.Instance.UzimajPrvuSlobodnuRezervu)
                    {
                        rezCount++;
                        rezultat.KvalStatus = KvalifikacioniStatus.R;
                    }
                    else
                    {
                        rezultat.KvalStatus = KvalifikacioniStatus.None;
                    }
                }
                else if (rezCount < propozicije.BrojRezerviTak3)
                {
                    if (propozicije.NeogranicenBrojTakmicaraIzKlubaTak3 ||
                        brojTakmicaraMap[id] < propozicije.MaxBrojTakmicaraIzKlubaTak3)
                    {
                        rezCount++;
                        rezultat.KvalStatus = KvalifikacioniStatus.R;
                        if (!propozicije.NeogranicenBrojTakmicaraIzKlubaTak3)
                        {
                            brojTakmicaraMap[id]++;
                        }
                    }
                    else if (Opcije.Instance.UzimajPrvuSlobodnuRezervu)
                    {
                        rezCount++;
                        rezultat.KvalStatus = KvalifikacioniStatus.R;
                    }
                    else
                    {
                        rezultat.KvalStatus = KvalifikacioniStatus.None;
                    }
                }
                else
                {
                    // TODO: Uradi i za rezerve razresavanje situacije kada postoji vise rezervi sa identicnim
                    // rezultatom (isto i za rezultate viseboj).
                    rezultat.KvalStatus = KvalifikacioniStatus.None;
                }
            }
        }
Esempio n. 17
0
        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);
        }
Esempio n. 18
0
        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();
            }
        }
Esempio n. 19
0
        public virtual void loadFromDump(StringReader reader, IdMap map)
        {
            RedBroj              = byte.Parse(reader.ReadLine());
            Gimnastika           = (Gimnastika)Enum.Parse(typeof(Gimnastika), reader.ReadLine());
            ImaEkipnoTakmicenje  = bool.Parse(reader.ReadLine());
            KombinovanoEkipnoTak = bool.Parse(reader.ReadLine());

            Takmicenje            = map.takmicenjeMap[int.Parse(reader.ReadLine())];
            Kategorija            = map.kategorijeMap[int.Parse(reader.ReadLine())];
            TakmicenjeDescription = map.descriptionsMap[int.Parse(reader.ReadLine())];

            string      id = reader.ReadLine();
            Propozicije p  = null;

            if (id != NULL)
            {
                p = new Propozicije();
                p.loadFromDump(reader);
            }
            Propozicije = p;

            id = reader.ReadLine();
            Takmicenje1 t1 = null;

            if (id != NULL)
            {
                t1 = new Takmicenje1();
                t1.loadFromDump(reader, map);
            }
            Takmicenje1 = t1;

            id = reader.ReadLine();
            Takmicenje2 t2 = null;

            if (id != NULL)
            {
                t2 = new Takmicenje2();
                t2.loadFromDump(reader, map);
            }
            Takmicenje2 = t2;

            id = reader.ReadLine();
            Takmicenje3 t3 = null;

            if (id != NULL)
            {
                t3 = new Takmicenje3();
                t3.loadFromDump(reader, map);
            }
            Takmicenje3 = t3;

            id = reader.ReadLine();
            Takmicenje4 t4 = null;

            if (id != NULL)
            {
                t4 = new Takmicenje4();
                t4.loadFromDump(reader, map);
            }
            Takmicenje4 = t4;
        }
Esempio n. 20
0
        private void updateKvalStatus(Propozicije propozicije)
        {
            if (deoTakKod != DeoTakmicenjaKod.Takmicenje1)
                return;
            if (!propozicije.PostojiTak4)
                return;

            doUpdateKvalStatus(propozicije.OdvojenoTak4, propozicije.BrojEkipaUFinalu, 0);
        }
Esempio n. 21
0
 public virtual bool odvojenoTak2()
 {
     return(Propozicije.odvojenoTak2());
 }
Esempio n. 22
0
        private void clonePropozicije(Propozicije propozicije, Propozicije from)
        {
            // TODO3: Dodaj ono sto fali
            // TODO3: Probaj da koristis refleksiju za ovo (ili da ona izvrsi kopiranje, ili samo da te obavesti da li je
            // u medjuvremenu u klasi Propozicije dodato neko novo svojstvo, i ako jeste da generise izuzetak. Mogao bi i
            // da generisem jednostavan test suite koji bi proveravao ovo)
            // TODO3: Uvedi komentar TODO9 za ono sto mora uvek da se proverava kada se menja program (kao naprimer ovde sto
            // mora da se proverava da li sam u medjuvremenu dodao novo svojstvo u klasu Propozicije.)
            propozicije.MaxBrojTakmicaraIzKlubaTak1 = from.MaxBrojTakmicaraIzKlubaTak1;
            propozicije.PostojiTak2 = from.PostojiTak2;
            propozicije.OdvojenoTak2 = from.OdvojenoTak2;
            propozicije.NeogranicenBrojTakmicaraIzKlubaTak2 = from.NeogranicenBrojTakmicaraIzKlubaTak2;
            propozicije.MaxBrojTakmicaraIzKlubaTak2 = from.MaxBrojTakmicaraIzKlubaTak2;
            propozicije.BrojFinalistaTak2 = from.BrojFinalistaTak2;
            propozicije.BrojRezerviTak2 = from.BrojRezerviTak2;
            propozicije.PostojiTak3 = from.PostojiTak3;
            propozicije.OdvojenoTak3 = from.OdvojenoTak3;
            propozicije.NeogranicenBrojTakmicaraIzKlubaTak3 = from.NeogranicenBrojTakmicaraIzKlubaTak3;
            propozicije.MaxBrojTakmicaraIzKlubaTak3 = from.MaxBrojTakmicaraIzKlubaTak3;
            propozicije.MaxBrojTakmicaraTak3VaziZaDrzavu = from.MaxBrojTakmicaraTak3VaziZaDrzavu;
            propozicije.BrojFinalistaTak3 = from.BrojFinalistaTak3;
            propozicije.BrojRezerviTak3 = from.BrojRezerviTak3;
            propozicije.KvalifikantiTak3PreskokNaOsnovuObaPreskoka = from.KvalifikantiTak3PreskokNaOsnovuObaPreskoka;
            propozicije.PoredakTak3PreskokNaOsnovuObaPreskoka = from.PoredakTak3PreskokNaOsnovuObaPreskoka;
            propozicije.PostojiTak4 = from.PostojiTak4;
            propozicije.OdvojenoTak4 = from.OdvojenoTak4;
            propozicije.BrojRezultataKojiSeBodujuZaEkipu = from.BrojRezultataKojiSeBodujuZaEkipu;
            propozicije.BrojEkipaUFinalu = from.BrojEkipaUFinalu;
            propozicije.JednoTak4ZaSveKategorije = from.JednoTak4ZaSveKategorije;

            propozicije.Tak2FinalnaOcenaJeZbirObaKola = from.Tak2FinalnaOcenaJeZbirObaKola;
            propozicije.Tak2FinalnaOcenaJeMaxObaKola = from.Tak2FinalnaOcenaJeMaxObaKola;
            propozicije.Tak2FinalnaOcenaJeProsekObaKola = from.Tak2FinalnaOcenaJeProsekObaKola;
            propozicije.Tak2NeRacunajProsekAkoNemaOceneIzObaKola = from.Tak2NeRacunajProsekAkoNemaOceneIzObaKola;

            propozicije.Tak4FinalnaOcenaJeZbirObaKola = from.Tak4FinalnaOcenaJeZbirObaKola;
            propozicije.Tak4FinalnaOcenaJeMaxObaKola = from.Tak4FinalnaOcenaJeMaxObaKola;
            propozicije.Tak4FinalnaOcenaJeProsekObaKola = from.Tak4FinalnaOcenaJeProsekObaKola;
            propozicije.Tak4NeRacunajProsekAkoNemaOceneIzObaKola = from.Tak4NeRacunajProsekAkoNemaOceneIzObaKola;
        }
Esempio n. 23
0
        private void updateKvalStatus(Propozicije propozicije)
        {
            if (!propozicije.odvojenoTak2())
            {
                foreach (RezultatUkupnoFinaleKupa r in Rezultati)
                {
                    r.KvalStatus = KvalifikacioniStatus.None;
                }
                return;
            }

            List <RezultatUkupnoFinaleKupa> rezultati = new List <RezultatUkupnoFinaleKupa>(Rezultati);
            PropertyDescriptor propDesc =
                TypeDescriptor.GetProperties(typeof(RezultatUkupnoFinaleKupa))["RedBroj"];

            rezultati.Sort(new SortComparer <RezultatUkupnoFinaleKupa>(propDesc,
                                                                       ListSortDirection.Ascending));

            // moram da koristim dve mape zato sto je moguca situacija da klub i
            // drzava imaju isti id
            IDictionary <int, int> brojTakmicaraKlubMap   = new Dictionary <int, int>();
            IDictionary <int, int> brojTakmicaraDrzavaMap = new Dictionary <int, int>();

            int finCount = 0;
            int rezCount = 0;

            for (int i = 0; i < rezultati.Count; i++)
            {
                RezultatUkupnoFinaleKupa rezultat = rezultati[i];
                if (rezultat.Total == null)
                {
                    rezultat.KvalStatus = KvalifikacioniStatus.None;
                    continue;
                }

                int id;
                IDictionary <int, int> brojTakmicaraMap;

                if (rezultat.Gimnasticar.KlubUcesnik != null)
                {
                    id = rezultat.Gimnasticar.KlubUcesnik.Id;
                    brojTakmicaraMap = brojTakmicaraKlubMap;
                }
                else
                {
                    id = rezultat.Gimnasticar.DrzavaUcesnik.Id;
                    brojTakmicaraMap = brojTakmicaraDrzavaMap;
                }

                if (!brojTakmicaraMap.ContainsKey(id))
                {
                    brojTakmicaraMap.Add(id, 0);
                }

                if (finCount < propozicije.BrojFinalistaTak2)
                {
                    if (propozicije.NeogranicenBrojTakmicaraIzKlubaTak2)
                    {
                        finCount++;
                        rezultat.KvalStatus = KvalifikacioniStatus.Q;
                    }
                    else
                    {
                        if (brojTakmicaraMap[id] < propozicije.MaxBrojTakmicaraIzKlubaTak2)
                        {
                            finCount++;
                            brojTakmicaraMap[id]++;
                            rezultat.KvalStatus = KvalifikacioniStatus.Q;
                        }
                        else
                        {
                            if (Opcije.Instance.UzimajPrvuSlobodnuRezervu &&
                                rezCount < propozicije.BrojRezerviTak2)
                            {
                                rezCount++;
                                rezultat.KvalStatus = KvalifikacioniStatus.R;
                            }
                            else
                            {
                                rezultat.KvalStatus = KvalifikacioniStatus.None;
                            }
                        }
                    }
                }
                else if (rezCount < propozicije.BrojRezerviTak2)
                {
                    if (propozicije.NeogranicenBrojTakmicaraIzKlubaTak2)
                    {
                        rezCount++;
                        rezultat.KvalStatus = KvalifikacioniStatus.R;
                    }
                    else
                    {
                        if (brojTakmicaraMap[id] < propozicije.MaxBrojTakmicaraIzKlubaTak2)
                        {
                            rezCount++;
                            brojTakmicaraMap[id]++;
                            rezultat.KvalStatus = KvalifikacioniStatus.R;
                        }
                        else
                        {
                            if (Opcije.Instance.UzimajPrvuSlobodnuRezervu &&
                                rezCount < propozicije.BrojRezerviTak2)
                            {
                                rezCount++;
                                rezultat.KvalStatus = KvalifikacioniStatus.R;
                            }
                            else
                            {
                                rezultat.KvalStatus = KvalifikacioniStatus.None;
                            }
                        }
                    }
                }
                else
                {
                    rezultat.KvalStatus = KvalifikacioniStatus.None;
                }
            }
        }
Esempio n. 24
0
        private void updateKvalStatus(Propozicije propozicije)
        {
            if (deoTakKod != DeoTakmicenjaKod.Takmicenje1)
                return;
            if (!propozicije.PostojiTak2)
                return;

            doUpdateKvalStatus(propozicije.OdvojenoTak2,
                propozicije.BrojFinalistaTak2,
                propozicije.NeogranicenBrojTakmicaraIzKlubaTak2,
                propozicije.MaxBrojTakmicaraIzKlubaTak2,
                propozicije.BrojRezerviTak2);
        }
Esempio n. 25
0
        private void updateKvalStatus(Propozicije propozicije)
        {
            if (deoTakKod != DeoTakmicenjaKod.Takmicenje1)
                return;
            if (!propozicije.PostojiTak3)
                return;

            doUpdateKvalStatus(propozicije.OdvojenoTak3,
                propozicije.BrojFinalistaTak3,
                propozicije.NeogranicenBrojTakmicaraIzKlubaTak3,
                propozicije.MaxBrojTakmicaraIzKlubaTak3,
                propozicije.MaxBrojTakmicaraTak3VaziZaDrzavu,
                propozicije.BrojRezerviTak3, propozicije.KvalifikantiTak3PreskokNaOsnovuObaPreskoka);
        }