Exemple #1
0
        private void updateUIFromPropozicije(Propozicije propozicije)
        {
            disableHandlers();
            clearUI();

            ckbPostojiTak2.Checked = propozicije.PostojiTak2;
            if (propozicije.PostojiTak2)
            {
                rbtOdvojenoTak2.Checked = propozicije.OdvojenoTak2;
                rbtNaOsnovuTak1.Checked = !propozicije.OdvojenoTak2;

                rbtPrviPreskok.Checked  = !propozicije.ZaPreskokVisebojRacunajBoljuOcenu;
                rbtBoljiPreskok.Checked = propozicije.ZaPreskokVisebojRacunajBoljuOcenu;

                if (propozicije.OdvojenoTak2)
                {
                    txtBrojFinalista.Text         = propozicije.BrojFinalistaTak2.ToString();
                    txtBrojRezervi.Text           = propozicije.BrojRezerviTak2.ToString();
                    ckbNeogranicenBrojTak.Checked = propozicije.NeogranicenBrojTakmicaraIzKlubaTak2;
                    if (!propozicije.NeogranicenBrojTakmicaraIzKlubaTak2)
                    {
                        txtMaxTak.Text    = propozicije.MaxBrojTakmicaraIzKlubaTak2.ToString();
                        rbtDrzava.Checked = propozicije.MaxBrojTakmicaraTak2VaziZaDrzavu;
                    }
                }
            }

            enableHandlers();
            setEnabled();
        }
Exemple #2
0
 public Takmicenje2Page(Propozicije propozicije,
                        IList <Propozicije> dependentPropozicije)
 {
     InitializeComponent();
     this.propozicije          = propozicije;
     this.dependentPropozicije = dependentPropozicije;
 }
Exemple #3
0
        private void updateUIFromPropozicije(Propozicije propozicije)
        {
            disableHandlers();
            clearUI();

            ckbPostojiTak4.Checked = propozicije.PostojiTak4;
            if (propozicije.PostojiTak4)
            {
                rbtOdvojenoTak4.Checked             = propozicije.OdvojenoTak4;
                rbtNaOsnovuPrvogIDrugogKola.Checked = !propozicije.OdvojenoTak4;

                rbtPostojiTak4ZaSvakuKategoriju.Checked = !propozicije.JednoTak4ZaSveKategorije;
                rbtJednoTak4ZaSveKategorije.Checked     = propozicije.JednoTak4ZaSveKategorije;

                rbtFinalnaOcenaJeMax.Checked
                    = propozicije.NacinRacunanjaOceneFinaleKupaTak4 == NacinRacunanjaOceneFinaleKupa.Max;
                rbtFinalnaOcenaJeZbir.Checked
                    = propozicije.NacinRacunanjaOceneFinaleKupaTak4 == NacinRacunanjaOceneFinaleKupa.Zbir;
                rbtFinalnaOcenaJeProsek.Checked
                    = propozicije.NacinRacunanjaOceneFinaleKupaTak4 == NacinRacunanjaOceneFinaleKupa.ProsekSamoAkoPostojeObeOcene ||
                      propozicije.NacinRacunanjaOceneFinaleKupaTak4 == NacinRacunanjaOceneFinaleKupa.ProsekUvek;
                ckbNeRacunajProsek.Checked = propozicije.NacinRacunanjaOceneFinaleKupaTak4 == NacinRacunanjaOceneFinaleKupa.ProsekSamoAkoPostojeObeOcene;

                if (propozicije.OdvojenoTak4)
                {
                    txtBrojEkipa.Text     = propozicije.BrojEkipaUFinalu.ToString();
                    txtBrojRezultata.Text = propozicije.BrojRezultataKojiSeBodujuZaEkipu.ToString();
                }
            }

            enableHandlers();
            setEnabled();
        }
Exemple #4
0
        private void updatePropozicijeFromUI(Propozicije propozicije)
        {
            propozicije.PostojiTak4 = ckbPostojiTak4.Checked;
            if (propozicije.PostojiTak4)
            {
                propozicije.OdvojenoTak4             = rbtOdvojenoTak4.Checked;
                propozicije.JednoTak4ZaSveKategorije = rbtJednoTak4ZaSveKategorije.Checked;

                if (rbtFinalnaOcenaJeMax.Checked)
                {
                    propozicije.NacinRacunanjaOceneFinaleKupaTak4 = NacinRacunanjaOceneFinaleKupa.Max;
                }
                else if (rbtFinalnaOcenaJeZbir.Checked)
                {
                    propozicije.NacinRacunanjaOceneFinaleKupaTak4 = NacinRacunanjaOceneFinaleKupa.Zbir;
                }
                else if (rbtFinalnaOcenaJeProsek.Checked)
                {
                    if (ckbNeRacunajProsek.Checked)
                    {
                        propozicije.NacinRacunanjaOceneFinaleKupaTak4 = NacinRacunanjaOceneFinaleKupa.ProsekSamoAkoPostojeObeOcene;
                    }
                    else
                    {
                        propozicije.NacinRacunanjaOceneFinaleKupaTak4 = NacinRacunanjaOceneFinaleKupa.ProsekUvek;
                    }
                }

                if (propozicije.OdvojenoTak4)
                {
                    propozicije.BrojEkipaUFinalu = byte.Parse(txtBrojEkipa.Text);
                    propozicije.BrojRezultataKojiSeBodujuZaEkipu = byte.Parse(txtBrojRezultata.Text);
                }
            }
        }
Exemple #5
0
        private Propozicije createPropozicije()
        {
            Propozicije result = new Propozicije();

            result.PostojiTak2  = true;
            result.OdvojenoTak2 = true;
            result.NeogranicenBrojTakmicaraIzKlubaTak2 = false;
            result.MaxBrojTakmicaraIzKlubaTak2         = 2;
            result.MaxBrojTakmicaraTak2VaziZaDrzavu    = true;
            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.Tak1PreskokNaOsnovuObaPreskoka = true;
            result.Tak3PreskokNaOsnovuObaPreskoka = true;

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

            return(result);
        }
Exemple #6
0
        private void updatePropozicijeFromUI(Propozicije propozicije)
        {
            propozicije.PostojiTak3 = ckbPostojiTak3.Checked;
            if (!propozicije.PostojiTak3)
            {
                // NOTE: Cak i ako se izabere da ne postoji takmicenje 3, rezultati ce se prikazivati. Proizvoljno sam
                // izabrao da se tada preskok racuna na osnovu prvog preskoka
                propozicije.Tak1PreskokNaOsnovuObaPreskoka = false;
            }
            else
            {
                propozicije.OdvojenoTak3          = rbtOdvojenoTak3.Checked;
                propozicije.VecaEOcenaImaPrednost = rbtPrednostImaVecaEOcena.Checked;

                if (!propozicije.OdvojenoTak3)
                {
                    propozicije.Tak1PreskokNaOsnovuObaPreskoka = rbtKvalPreskok2.Checked;
                }
                else
                {
                    propozicije.BrojFinalistaTak3 = byte.Parse(txtBrojFinalista.Text);
                    propozicije.BrojRezerviTak3   = byte.Parse(txtBrojRezervi.Text);

                    propozicije.NeogranicenBrojTakmicaraIzKlubaTak3 = ckbNeogranicenBrojTak.Checked;
                    if (!propozicije.NeogranicenBrojTakmicaraIzKlubaTak3)
                    {
                        propozicije.MaxBrojTakmicaraIzKlubaTak3      = byte.Parse(txtMaxTak.Text);
                        propozicije.MaxBrojTakmicaraTak3VaziZaDrzavu = rbtDrzava.Checked;
                    }
                    propozicije.Tak1PreskokNaOsnovuObaPreskoka = rbtKvalPreskok2.Checked;
                    propozicije.Tak3PreskokNaOsnovuObaPreskoka = rbtPoredakPreskok2.Checked;
                }
            }
        }
Exemple #7
0
        private void updatePropozicijeFromUI(Propozicije propozicije)
        {
            propozicije.PostojiTak4 = ckbPostojiTak4.Checked;
            if (propozicije.PostojiTak4)
            {
                propozicije.OdvojenoTak4             = rbtOdvojenoTak4.Checked;
                propozicije.JednoTak4ZaSveKategorije = rbtJednoTak4ZaSveKategorije.Checked;

                propozicije.BrojRezultataKojiSeBodujuZaEkipu = byte.Parse(txtBrojRezultata.Text);
                if (propozicije.OdvojenoTak4)
                {
                    propozicije.BrojEkipaUFinalu = byte.Parse(txtBrojEkipa.Text);
                }
            }
        }
Exemple #8
0
        private void updateUIFromPropozicije(Propozicije propozicije)
        {
            disableHandlers();
            clearUI();

            ckbPostojiTak3.Checked = propozicije.PostojiTak3;

            // Nek ovo bude uvek selektovano
            rbtGimnasticariDelePlasman.Checked = !propozicije.VecaEOcenaImaPrednost;
            rbtPrednostImaVecaEOcena.Checked   = propozicije.VecaEOcenaImaPrednost;

            if (propozicije.PostojiTak3)
            {
                rbtOdvojenoTak3.Checked             = propozicije.OdvojenoTak3;
                rbtNaOsnovuPrvogIDrugogKola.Checked = !propozicije.OdvojenoTak3;

                rbtFinalnaOcenaJeMax.Checked
                    = propozicije.NacinRacunanjaOceneFinaleKupaTak3 == NacinRacunanjaOceneFinaleKupa.Max;
                rbtFinalnaOcenaJeZbir.Checked
                    = propozicije.NacinRacunanjaOceneFinaleKupaTak3 == NacinRacunanjaOceneFinaleKupa.Zbir;
                rbtFinalnaOcenaJeProsek.Checked
                    = propozicije.NacinRacunanjaOceneFinaleKupaTak3 == NacinRacunanjaOceneFinaleKupa.ProsekSamoAkoPostojeObeOcene ||
                      propozicije.NacinRacunanjaOceneFinaleKupaTak3 == NacinRacunanjaOceneFinaleKupa.ProsekUvek;
                ckbNeRacunajProsek.Checked
                    = propozicije.NacinRacunanjaOceneFinaleKupaTak3 == NacinRacunanjaOceneFinaleKupa.ProsekSamoAkoPostojeObeOcene;

                if (propozicije.OdvojenoTak3)
                {
                    txtBrojFinalista.Text = propozicije.BrojFinalistaTak3.ToString();
                    txtBrojRezervi.Text   = propozicije.BrojRezerviTak3.ToString();

                    ckbNeogranicenBrojTak.Checked = propozicije.NeogranicenBrojTakmicaraIzKlubaTak3;
                    if (!propozicije.NeogranicenBrojTakmicaraIzKlubaTak3)
                    {
                        txtMaxTak.Text    = propozicije.MaxBrojTakmicaraIzKlubaTak3.ToString();
                        rbtDrzava.Checked = propozicije.MaxBrojTakmicaraTak3VaziZaDrzavu;
                    }

                    rbtPoredakPreskok1.Checked = !propozicije.Tak1PreskokNaOsnovuObaPreskoka;
                    rbtPoredakPreskok2.Checked = propozicije.Tak1PreskokNaOsnovuObaPreskoka;
                }
            }

            enableHandlers();
            setEnabled();
        }
Exemple #9
0
        // TODO: Postoji dosta slicnosti u unosenju propozicija izmedju takmicenja 2, 3 i 4 (kako obicno takmicenje tako i
        // finale kupa). Probaj da nekako generalizujes. Npr. u requiredFieldsAndFormatValidation ima dosta ponavljanja.

        private void updatePropozicijeFromUI(Propozicije propozicije)
        {
            propozicije.PostojiTak3 = ckbPostojiTak3.Checked;
            if (propozicije.PostojiTak3)
            {
                propozicije.OdvojenoTak3 = rbtOdvojenoTak3.Checked;

                if (rbtFinalnaOcenaJeMax.Checked)
                {
                    propozicije.NacinRacunanjaOceneFinaleKupaTak3 = NacinRacunanjaOceneFinaleKupa.Max;
                }
                else if (rbtFinalnaOcenaJeZbir.Checked)
                {
                    propozicije.NacinRacunanjaOceneFinaleKupaTak3 = NacinRacunanjaOceneFinaleKupa.Zbir;
                }
                else if (rbtFinalnaOcenaJeProsek.Checked)
                {
                    if (ckbNeRacunajProsek.Checked)
                    {
                        propozicije.NacinRacunanjaOceneFinaleKupaTak3 = NacinRacunanjaOceneFinaleKupa.ProsekSamoAkoPostojeObeOcene;
                    }
                    else
                    {
                        propozicije.NacinRacunanjaOceneFinaleKupaTak3 = NacinRacunanjaOceneFinaleKupa.ProsekUvek;
                    }
                }

                if (propozicije.OdvojenoTak3)
                {
                    propozicije.BrojFinalistaTak3 = byte.Parse(txtBrojFinalista.Text);
                    propozicije.BrojRezerviTak3   = byte.Parse(txtBrojRezervi.Text);

                    propozicije.NeogranicenBrojTakmicaraIzKlubaTak3 = ckbNeogranicenBrojTak.Checked;
                    if (!propozicije.NeogranicenBrojTakmicaraIzKlubaTak3)
                    {
                        propozicije.MaxBrojTakmicaraIzKlubaTak3      = byte.Parse(txtMaxTak.Text);
                        propozicije.MaxBrojTakmicaraTak3VaziZaDrzavu = rbtDrzava.Checked;
                    }

                    propozicije.Tak1PreskokNaOsnovuObaPreskoka = rbtPoredakPreskok2.Checked;
                    propozicije.VecaEOcenaImaPrednost          = rbtPrednostImaVecaEOcena.Checked;
                }
            }
        }
Exemple #10
0
        private void updateUIFromPropozicije(Propozicije propozicije)
        {
            disableHandlers();
            clearUI();

            ckbPostojiTak3.Checked = propozicije.PostojiTak3;

            // Nek ovo bude uvek selektovano
            rbtGimnasticariDelePlasman.Checked = !propozicije.VecaEOcenaImaPrednost;
            rbtPrednostImaVecaEOcena.Checked   = propozicije.VecaEOcenaImaPrednost;

            if (propozicije.PostojiTak3)
            {
                rbtOdvojenoTak3.Checked = propozicije.OdvojenoTak3;
                rbtNaOsnovuTak1.Checked = !propozicije.OdvojenoTak3;

                if (!propozicije.OdvojenoTak3)
                {
                    rbtKvalPreskok1.Checked = !propozicije.Tak1PreskokNaOsnovuObaPreskoka;
                    rbtKvalPreskok2.Checked = propozicije.Tak1PreskokNaOsnovuObaPreskoka;
                }
                else
                {
                    txtBrojFinalista.Text = propozicije.BrojFinalistaTak3.ToString();
                    txtBrojRezervi.Text   = propozicije.BrojRezerviTak3.ToString();

                    ckbNeogranicenBrojTak.Checked = propozicije.NeogranicenBrojTakmicaraIzKlubaTak3;
                    if (!propozicije.NeogranicenBrojTakmicaraIzKlubaTak3)
                    {
                        txtMaxTak.Text    = propozicije.MaxBrojTakmicaraIzKlubaTak3.ToString();
                        rbtDrzava.Checked = propozicije.MaxBrojTakmicaraTak3VaziZaDrzavu;
                    }

                    rbtKvalPreskok1.Checked = !propozicije.Tak1PreskokNaOsnovuObaPreskoka;
                    rbtKvalPreskok2.Checked = propozicije.Tak1PreskokNaOsnovuObaPreskoka;

                    rbtPoredakPreskok1.Checked = !propozicije.Tak3PreskokNaOsnovuObaPreskoka;
                    rbtPoredakPreskok2.Checked = propozicije.Tak3PreskokNaOsnovuObaPreskoka;
                }
            }

            enableHandlers();
            setEnabled();
        }
Exemple #11
0
 private void updatePropozicijeFromUI(Propozicije propozicije)
 {
     propozicije.PostojiTak2 = ckbPostojiTak2.Checked;
     if (propozicije.PostojiTak2)
     {
         propozicije.OdvojenoTak2 = rbtOdvojenoTak2.Checked;
         propozicije.ZaPreskokVisebojRacunajBoljuOcenu = rbtBoljiPreskok.Checked;
         if (propozicije.OdvojenoTak2)
         {
             propozicije.BrojFinalistaTak2 = byte.Parse(txtBrojFinalista.Text);
             propozicije.BrojRezerviTak2   = byte.Parse(txtBrojRezervi.Text);
             propozicije.NeogranicenBrojTakmicaraIzKlubaTak2 = ckbNeogranicenBrojTak.Checked;
             if (!propozicije.NeogranicenBrojTakmicaraIzKlubaTak2)
             {
                 propozicije.MaxBrojTakmicaraIzKlubaTak2      = byte.Parse(txtMaxTak.Text);
                 propozicije.MaxBrojTakmicaraTak2VaziZaDrzavu = rbtDrzava.Checked;
             }
         }
     }
 }
Exemple #12
0
        private void updatePropozicijeFromUI(Propozicije propozicije)
        {
            propozicije.PostojiTak2 = ckbPostojiTak2.Checked;
            if (propozicije.PostojiTak2)
            {
                propozicije.OdvojenoTak2 = rbtOdvojenoTak2.Checked;

                if (rbtFinalnaOcenaJeMax.Checked)
                {
                    propozicije.NacinRacunanjaOceneFinaleKupaTak2 = NacinRacunanjaOceneFinaleKupa.Max;
                }
                else if (rbtFinalnaOcenaJeZbir.Checked)
                {
                    propozicije.NacinRacunanjaOceneFinaleKupaTak2 = NacinRacunanjaOceneFinaleKupa.Zbir;
                }
                else if (rbtFinalnaOcenaJeProsek.Checked)
                {
                    if (ckbNeRacunajProsek.Checked)
                    {
                        propozicije.NacinRacunanjaOceneFinaleKupaTak2 = NacinRacunanjaOceneFinaleKupa.ProsekSamoAkoPostojeObeOcene;
                    }
                    else
                    {
                        propozicije.NacinRacunanjaOceneFinaleKupaTak2 = NacinRacunanjaOceneFinaleKupa.ProsekUvek;
                    }
                }

                if (propozicije.OdvojenoTak2)
                {
                    propozicije.BrojFinalistaTak2 = byte.Parse(txtBrojFinalista.Text);
                    propozicije.BrojRezerviTak2   = byte.Parse(txtBrojRezervi.Text);
                    propozicije.NeogranicenBrojTakmicaraIzKlubaTak2 = ckbNeogranicenBrojTak.Checked;
                    if (!propozicije.NeogranicenBrojTakmicaraIzKlubaTak2)
                    {
                        propozicije.MaxBrojTakmicaraIzKlubaTak2 = byte.Parse(txtMaxTak.Text);
                    }
                }
            }
        }
Exemple #13
0
        private void updateUIFromPropozicije(Propozicije propozicije)
        {
            disableHandlers();
            clearUI();

            ckbPostojiTak2.Checked = propozicije.PostojiTak2;
            if (propozicije.PostojiTak2)
            {
                rbtOdvojenoTak2.Checked             = propozicije.OdvojenoTak2;
                rbtNaOsnovuPrvogIDrugogKola.Checked = !propozicije.OdvojenoTak2;

                rbtFinalnaOcenaJeMax.Checked
                    = propozicije.NacinRacunanjaOceneFinaleKupaTak2 == NacinRacunanjaOceneFinaleKupa.Max;
                rbtFinalnaOcenaJeZbir.Checked
                    = propozicije.NacinRacunanjaOceneFinaleKupaTak2 == NacinRacunanjaOceneFinaleKupa.Zbir;
                rbtFinalnaOcenaJeProsek.Checked
                    = propozicije.NacinRacunanjaOceneFinaleKupaTak2 == NacinRacunanjaOceneFinaleKupa.ProsekSamoAkoPostojeObeOcene ||
                      propozicije.NacinRacunanjaOceneFinaleKupaTak2 == NacinRacunanjaOceneFinaleKupa.ProsekUvek;
                ckbNeRacunajProsek.Checked
                    = propozicije.NacinRacunanjaOceneFinaleKupaTak2 == NacinRacunanjaOceneFinaleKupa.ProsekSamoAkoPostojeObeOcene;

                if (propozicije.OdvojenoTak2)
                {
                    txtBrojFinalista.Text         = propozicije.BrojFinalistaTak2.ToString();
                    txtBrojRezervi.Text           = propozicije.BrojRezerviTak2.ToString();
                    ckbNeogranicenBrojTak.Checked = propozicije.NeogranicenBrojTakmicaraIzKlubaTak2;
                    if (!propozicije.NeogranicenBrojTakmicaraIzKlubaTak2)
                    {
                        txtMaxTak.Text = propozicije.MaxBrojTakmicaraIzKlubaTak2.ToString();
                    }
                }
            }

            enableHandlers();
            setEnabled();
        }
Exemple #14
0
        private void updateUIFromPropozicije(Propozicije propozicije)
        {
            disableHandlers();
            clearUI();

            ckbPostojiTak4.Checked = propozicije.PostojiTak4;
            if (propozicije.PostojiTak4)
            {
                rbtOdvojenoTak4.Checked = propozicije.OdvojenoTak4;
                rbtNaOsnovuTak1.Checked = !propozicije.OdvojenoTak4;

                rbtPostojiTak4ZaSvakuKategoriju.Checked = !propozicije.JednoTak4ZaSveKategorije;
                rbtJednoTak4ZaSveKategorije.Checked     = propozicije.JednoTak4ZaSveKategorije;

                txtBrojRezultata.Text = propozicije.BrojRezultataKojiSeBodujuZaEkipu.ToString();
                if (propozicije.OdvojenoTak4)
                {
                    txtBrojEkipa.Text = propozicije.BrojEkipaUFinalu.ToString();
                }
            }

            enableHandlers();
            setEnabled();
        }
Exemple #15
0
        public static void kreirajNaOsnovuViseKola(Takmicenje takmicenje,
                                                   IList <KeyValuePair <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > > razlicitaKola)
        {
            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();

            takmicenjeDAO.Attach(takmicenje, false);

            List <Takmicenje> prethodnaKola = new List <Takmicenje>();

            prethodnaKola.Add(takmicenje.PrvoKolo);
            prethodnaKola.Add(takmicenje.DrugoKolo);
            if (takmicenje.TreceKolo != null)
            {
                prethodnaKola.Add(takmicenje.TreceKolo);
            }
            if (takmicenje.CetvrtoKolo != null)
            {
                prethodnaKola.Add(takmicenje.CetvrtoKolo);
            }

            RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

            List <IList <RezultatskoTakmicenje> > rezTakmicenjaPrethodnaKola = new List <IList <RezultatskoTakmicenje> >();

            foreach (Takmicenje prethKolo in prethodnaKola)
            {
                rezTakmicenjaPrethodnaKola.Add(rezTakDAO.FindByTakmicenje(prethKolo.Id));
            }

            takmicenje.Kategorije.Clear();
            foreach (RezultatskoTakmicenje rt in rezTakmicenjaPrethodnaKola[0])
            {
                // Implementiran je najjednostavniji slucaj, gde se u svakom od prethodnih kola gleda samo prvo
                // takmicenje, i uzimaju se samo one kategorije gde postoji poklapanje. U principu, mogla bi se
                // implementirati i slozenija varijanta gde bi se, u slucaju da ne postoji poklapanje medju kategorijama,
                // otvorio prozor gde bi mogle da se uparuju kategorije, ali onda bi morao da nekako pamtim
                // koja su uparivanja izabrana (da bi ih primenio kod apdejtovanja kada se npr. ocena iz nekog od
                // prethodnih kola promeni).
                if (rt.TakmicenjeDescription.RedBroj != 0)
                {
                    continue;
                }

                bool ok = true;
                foreach (List <RezultatskoTakmicenje> rezTakList in rezTakmicenjaPrethodnaKola)
                {
                    if (Takmicenje.getRezTakmicenje(rezTakList, 0, rt.Kategorija) == null)
                    {
                        ok = false;
                        break;
                    }
                }
                if (ok)
                {
                    takmicenje.addKategorija(new TakmicarskaKategorija(rt.Kategorija.Naziv));
                }
            }
            if (takmicenje.Kategorije.Count == 0)
            {
                throw new BusinessException("Kategorije iz prethodnih kola se ne poklapaju");
            }

            // prvi description je uvek kao naziv takmicenja.
            takmicenje.TakmicenjeDescriptions.Clear();
            RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription();

            desc.Naziv       = takmicenje.Naziv;
            desc.Propozicije = new Propozicije(true, takmicenje.FinaleKupa, true);
            takmicenje.addTakmicenjeDescription(desc);

            // Takmicenje dodajem ovako rano zato sto se takmicenje.Id koristi dole u createGimnasticarUcesnik
            takmicenjeDAO.Add(takmicenje);

            IList <RezultatskoTakmicenje> rezTakmicenja = new List <RezultatskoTakmicenje>();

            foreach (TakmicarskaKategorija k in takmicenje.Kategorije)
            {
                Propozicije           p  = new Propozicije(true, takmicenje.FinaleKupa, true);
                RezultatskoTakmicenje rt = new RezultatskoTakmicenje(takmicenje, k, desc, p);
                rt.ImaEkipnoTakmicenje  = true;
                rt.KombinovanoEkipnoTak = false;
                rezTakmicenja.Add(rt);
            }

            GimnasticarUcesnikDAO gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO();
            EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO();

            // Za svakog gimnasticara, zapamti u kojim kategorijama je ucestvovao u prethodnim kolima
            IDictionary <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > mapaUcestvovanja
                = new Dictionary <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > >();

            IDictionary <TakmicarskaKategorija, RezultatskoTakmicenje> katToRezTakMap
                = new Dictionary <TakmicarskaKategorija, RezultatskoTakmicenje>();

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                katToRezTakMap.Add(rt.Kategorija, rt);
                for (int i = 0; i < rezTakmicenjaPrethodnaKola.Count; ++i)
                {
                    IList <RezultatskoTakmicenje> rezTakmicenjaPrethKolo = rezTakmicenjaPrethodnaKola[i];
                    RezultatskoTakmicenje         rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija);

                    Pair <int, TakmicarskaKategorija> koloKatPair = new Pair <int, TakmicarskaKategorija>(i, rt.Kategorija);

                    foreach (GimnasticarUcesnik g in rtFrom.Takmicenje1.Gimnasticari)
                    {
                        if (!mapaUcestvovanja.ContainsKey(g))
                        {
                            // Koriscenje IDictionary obezbedjuje da je svaki gimnasticar dodat u samo jednu kategoriju.
                            GimnasticarUcesnik g2 = GimnasticarUcesnikService.createGimnasticarUcesnik(g, rt.Kategorija);
                            IList <Pair <int, TakmicarskaKategorija> > pairList = new List <Pair <int, TakmicarskaKategorija> >();
                            pairList.Add(koloKatPair);
                            mapaUcestvovanja.Add(g2, pairList);
                            gimUcesnikDAO.Add(g2);
                        }
                        else
                        {
                            mapaUcestvovanja[g].Add(koloKatPair);
                        }
                    }
                }
            }

            foreach (KeyValuePair <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > entry in mapaUcestvovanja)
            {
                GimnasticarUcesnik    g       = entry.Key;
                TakmicarskaKategorija prevKat = null;
                bool ok = true;
                foreach (Pair <int, TakmicarskaKategorija> koloKatPair in entry.Value)
                {
                    TakmicarskaKategorija kat = koloKatPair.Second;
                    if (prevKat == null)
                    {
                        prevKat = kat;
                    }
                    else if (!kat.Equals(prevKat))
                    {
                        ok = false;
                    }

                    RezultatskoTakmicenje rt = katToRezTakMap[kat];
                    rt.Takmicenje1.addGimnasticar(g);
                }
                if (!ok)
                {
                    razlicitaKola.Add(entry);
                }
            }

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                foreach (List <RezultatskoTakmicenje> rezTakmicenjaPrethKolo in rezTakmicenjaPrethodnaKola)
                {
                    RezultatskoTakmicenje rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija);
                    foreach (Ekipa e in rtFrom.Takmicenje1.Ekipe)
                    {
                        if (rt.Takmicenje1.Ekipe.Contains(e))
                        {
                            continue;
                        }

                        Ekipa ekipa = new Ekipa();
                        ekipa.Naziv = e.Naziv;
                        ekipa.Kod   = e.Kod;
                        rt.Takmicenje1.addEkipa(ekipa, false);
                        ekipaDAO.Add(ekipa);
                    }
                }
            }

            // TODO: Prebaci u domenske klase sto vise koda iz ove funkcije (isto i u funkciji updateViseKola).

            takmicenje.kreirajRezultateViseKola(rezTakmicenja, rezTakmicenjaPrethodnaKola);

            foreach (List <RezultatskoTakmicenje> rezTakmicenjaPrethKolo in rezTakmicenjaPrethodnaKola)
            {
                foreach (RezultatskoTakmicenje rt in rezTakmicenjaPrethKolo)
                {
                    rezTakDAO.Evict(rt);
                }
            }

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                rezTakDAO.Add(rt);
            }
        }