예제 #1
0
        private void deleteKategorija(TakmicarskaKategorija k)
        {
            TakmicarskaKategorijaDAO takKatDAO = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO();

            takKatDAO.Attach(k, false);

            IList <RezultatskoTakmicenje> rezTakmicenja = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO()
                                                          .FindByKategorija(k);

            if (rezTakmicenja.Count > 0)
            {
                throw new BusinessException("Morate najpre da izbrisete kategoriju iz svih takmicenja.");
            }

            IList <GimnasticarUcesnik> gimnasticari = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO()
                                                      .FindByKategorija(k);

            if (gimnasticari.Count > 0)
            {
                throw new BusinessException("Morate najpre da izbrisete sve gimnasticare za datu kategoriju.");
            }

            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();
            Takmicenje    t             = takmicenjeDAO.FindById(takmicenjeId);

            t.removeKategorija(SelectedKategorija);

            takKatDAO.Delete(k);
            takmicenjeDAO.Update(t);
        }
예제 #2
0
        private void btnMoveDownKategorija_Click(object sender, EventArgs e)
        {
            TakmicarskaKategorija k = SelectedKategorija;

            if (k == null)
            {
                return;
            }
            if (treeViewTakmicenja.Nodes.Count > 0)
            {
                MessageDialogs.showMessage("Kategorije je moguce pomerati pre nego sto se dodaju takmicenja.", this.Text);
                return;
            }

            ISession session = null;

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);
                        DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().Attach(k, false);
                        TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();
                        Takmicenje    takmicenje    = takmicenjeDAO.FindById(takmicenjeId);
                        if (takmicenje.moveKategorijaDown(k))
                        {
                            takmicenjeDAO.Update(takmicenje);

                            takmicenje.LastModified = DateTime.Now;
                            session.Transaction.Commit();

                            // reload kategorije
                            setKategorije(DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().FindByTakmicenje(takmicenjeId));
                            SelectedKategorija = k;
                        }
                    }
            }
            catch (Exception ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                MessageDialogs.showMessage(ex.Message, this.Text);
                return;
            }
            finally
            {
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }
        }
예제 #3
0
        public static void addTakmicarskaKategorija(TakmicarskaKategorija kat, int takmicenjeId)
        {
            Notification notification = new Notification();

            kat.validate(notification);
            if (!notification.IsValid())
            {
                throw new BusinessException(notification);
            }

            if (DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().existsKategorijaNaziv(kat.Naziv, takmicenjeId))
            {
                notification.RegisterMessage("Naziv", "Kategorija sa datim nazivom vec postoji.");
                throw new BusinessException(notification);
            }

            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();
            Takmicenje    t             = takmicenjeDAO.FindById(takmicenjeId);

            t.addKategorija(kat);
            takmicenjeDAO.Update(t);
        }
예제 #4
0
        private void deleteTakmicenje(RezultatskoTakmicenjeDescription desc)
        {
            RezultatskoTakmicenjeDescriptionDAO rezTakDescDAO
                = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDescriptionDAO();

            rezTakDescDAO.Attach(desc, false);

            RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

            foreach (RezultatskoTakmicenje rt in rezTakDAO.FindByDescription(desc))
            {
                rezTakDAO.Delete(rt);
            }

            // Ne apdejtujem redne brojeve za preostala rez. takmicenja zato sto je redosled nepromenjen

            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();
            Takmicenje    takmicenje    = takmicenjeDAO.FindById(takmicenjeId);

            takmicenje.removeTakmicenjeDescription(desc);
            takmicenjeDAO.Update(takmicenje);

            rezTakDescDAO.Delete(desc);
        }
예제 #5
0
        // Proveri za sva finala kupa i zbir vise kola, da li postoje gimnasticari koji su nastupali u razlicitim
        // kategorijama u prethodnim kolima.
        public void proveriViseKola()
        {
            IList <int> takmicenjaId     = getTakmicenjaId();
            string      takmicenjeHeader = String.Empty;

            for (int j = 0; j < takmicenjaId.Count; ++j)
            {
                ISession session = null;
                try
                {
                    using (session = NHibernateHelper.Instance.OpenSession())
                        using (session.BeginTransaction())
                        {
                            CurrentSessionContext.Bind(session);
                            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();
                            Takmicenje    t             = takmicenjeDAO.FindById(takmicenjaId[j]);
                            if (!t.FinaleKupa && !t.ZbirViseKola)
                            {
                                continue;
                            }

                            takmicenjeHeader = j.ToString() + ". " + t.ToString();
                            if (t.FinaleKupa)
                            {
                                takmicenjeHeader += " - FINALE KUPA";
                            }
                            else
                            {
                                takmicenjeHeader += " - ZBIR VISE KOLA";
                            }
                            takmicenjeHeader += " (" + t.Id + ")";

                            List <Takmicenje> prethodnaKola = new List <Takmicenje>();
                            prethodnaKola.Add(t.PrvoKolo);
                            prethodnaKola.Add(t.DrugoKolo);
                            if (t.TreceKolo != null)
                            {
                                prethodnaKola.Add(t.TreceKolo);
                            }
                            if (t.CetvrtoKolo != null)
                            {
                                prethodnaKola.Add(t.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));
                            }

                            IList <RezultatskoTakmicenje> rezTakmicenja = rezTakDAO.FindByTakmicenje(t.Id);

                            // 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> > >();

                            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
                            {
                                for (int i = 0; i < rezTakmicenjaPrethodnaKola.Count; ++i)
                                {
                                    IList <RezultatskoTakmicenje> rezTakmicenjaPrethKolo = rezTakmicenjaPrethodnaKola[i];
                                    RezultatskoTakmicenje         rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija);
                                    if (rtFrom == null)
                                    {
                                        // Ovo se pojavljuje kod takmicenja ciji je id 226.
                                        continue;
                                    }

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

                                    foreach (GimnasticarUcesnik g in rtFrom.Takmicenje1.Gimnasticari)
                                    {
                                        if (!mapaUcestvovanja.ContainsKey(g))
                                        {
                                            IList <Pair <int, TakmicarskaKategorija> > pairList = new List <Pair <int, TakmicarskaKategorija> >();
                                            pairList.Add(koloKatPair);
                                            mapaUcestvovanja.Add(g, pairList);
                                        }
                                        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;
                                    }
                                }
                                if (!ok)
                                {
                                    MessageBox.Show(takmicenjeHeader + "\n\n" + g.ImeSrednjeImePrezimeDatumRodjenja);
                                }
                            }
                        }
                }
                catch (Exception)
                {
                    if (session != null && session.Transaction != null && session.Transaction.IsActive)
                    {
                        session.Transaction.Rollback();
                    }
                    MessageBox.Show(takmicenjeHeader);
                }
                finally
                {
                    CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
                }
            }
        }
예제 #6
0
        // Proveri da li za svaki rezultat postoji i ocena.
        public void proveriRezultateIOcene()
        {
            StreamWriter log              = File.CreateText("proveri_rezultate_i_ocene.txt");
            IList <int>  takmicenjaId     = getTakmicenjaId();
            string       takmicenjeHeader = String.Empty;

            for (int j = 0; j < takmicenjaId.Count; ++j)
            {
                ISession session = null;
                try
                {
                    using (session = NHibernateHelper.Instance.OpenSession())
                        using (session.BeginTransaction())
                        {
                            CurrentSessionContext.Bind(session);
                            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();
                            Takmicenje    t             = takmicenjeDAO.FindById(takmicenjaId[j]);
                            if (t.ZbirViseKola)
                            {
                                continue;
                            }

                            takmicenjeHeader  = j.ToString() + ". " + t.ToString();
                            takmicenjeHeader += " (" + t.Id + ")";

                            RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

                            IList <RezultatskoTakmicenje> rezTakmicenja = rezTakDAO.FindByTakmicenje(t.Id);

                            OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();

                            // Takmicenje 1
                            IList <Ocena> ocene = ocenaDAO.FindByDeoTakmicenja(t.Id, DeoTakmicenjaKod.Takmicenje1);

                            IDictionary <int, IList <Ocena> > oceneMap = new Dictionary <int, IList <Ocena> >();
                            foreach (Ocena o in ocene)
                            {
                                if (!oceneMap.ContainsKey(o.Gimnasticar.Id))
                                {
                                    oceneMap.Add(o.Gimnasticar.Id, new List <Ocena>());
                                }
                                oceneMap[o.Gimnasticar.Id].Add(o);
                            }

                            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
                            {
                                foreach (PoredakSprava p in rt.Takmicenje1.PoredakSprava)
                                {
                                    foreach (RezultatSprava r in p.Rezultati)
                                    {
                                        if (!oceneMap.ContainsKey(r.Gimnasticar.Id))
                                        {
                                            if (r.Total != null)
                                            {
                                                log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                              " nema nijednu ocenu" + " Takmicenje1");
                                            }
                                            continue;
                                        }
                                        IList <Ocena> oceneList = oceneMap[r.Gimnasticar.Id];
                                        Ocena         o         = null;
                                        foreach (Ocena o2 in oceneList)
                                        {
                                            if (o2.Sprava == p.Sprava)
                                            {
                                                o = o2;
                                                break;
                                            }
                                        }
                                        if (o == null && r.Total != null)
                                        {
                                            log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                          " nema ocenu za " + p.Sprava.ToString() + " Takmicenje1");
                                        }
                                        if (o != null && o.Total != r.Total)
                                        {
                                            log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                          " total se razlikuje " + p.Sprava.ToString() + " Takmicenje1");
                                        }
                                    }
                                }

                                foreach (RezultatPreskok r in rt.Takmicenje1.PoredakPreskok.Rezultati)
                                {
                                    if (!oceneMap.ContainsKey(r.Gimnasticar.Id))
                                    {
                                        if (r.Total != null || r.TotalObeOcene != null)
                                        {
                                            log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                          " nema nijednu ocenu" + " Takmicenje1");
                                        }
                                        continue;
                                    }
                                    IList <Ocena> oceneList = oceneMap[r.Gimnasticar.Id];
                                    Ocena         o         = null;
                                    foreach (Ocena o2 in oceneList)
                                    {
                                        if (o2.Sprava == Sprava.Preskok)
                                        {
                                            o = o2;
                                            break;
                                        }
                                    }
                                    if (o == null && (r.Total != null || r.TotalObeOcene != null))
                                    {
                                        log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                      " nema ocenu za " + Sprava.Preskok.ToString() + " Takmicenje1");
                                    }
                                    if (o != null && (o.Total != r.Total || o.TotalObeOcene != r.TotalObeOcene))
                                    {
                                        log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                      " total se razlikuje " + Sprava.Preskok.ToString() + " Takmicenje1");
                                    }
                                }
                            }

                            // Takmicenje 3
                            ocene = ocenaDAO.FindByDeoTakmicenja(t.Id, DeoTakmicenjaKod.Takmicenje3);

                            oceneMap = new Dictionary <int, IList <Ocena> >();
                            foreach (Ocena o in ocene)
                            {
                                if (!oceneMap.ContainsKey(o.Gimnasticar.Id))
                                {
                                    oceneMap.Add(o.Gimnasticar.Id, new List <Ocena>());
                                }
                                oceneMap[o.Gimnasticar.Id].Add(o);
                            }

                            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
                            {
                                if (rt.Takmicenje3 == null)
                                {
                                    continue;
                                }
                                if (!rt.odvojenoTak3())
                                {
                                    continue;
                                }
                                foreach (PoredakSprava p in rt.Takmicenje3.Poredak)
                                {
                                    foreach (RezultatSprava r in p.Rezultati)
                                    {
                                        if (!oceneMap.ContainsKey(r.Gimnasticar.Id))
                                        {
                                            if (r.Total != null)
                                            {
                                                log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                              " nema nijednu ocenu" + " Takmicenje3");
                                            }
                                            continue;
                                        }
                                        IList <Ocena> oceneList = oceneMap[r.Gimnasticar.Id];
                                        Ocena         o         = null;
                                        foreach (Ocena o2 in oceneList)
                                        {
                                            if (o2.Sprava == p.Sprava)
                                            {
                                                o = o2;
                                                break;
                                            }
                                        }
                                        if (o == null && r.Total != null)
                                        {
                                            log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                          " nema ocenu za " + p.Sprava.ToString() + " Takmicenje3");
                                        }
                                        if (o != null && o.Total != r.Total)
                                        {
                                            log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                          " total se razlikuje " + p.Sprava.ToString() + " Takmicenje3");
                                        }
                                    }
                                }

                                foreach (RezultatPreskok r in rt.Takmicenje3.PoredakPreskok.Rezultati)
                                {
                                    if (!oceneMap.ContainsKey(r.Gimnasticar.Id))
                                    {
                                        if (r.Total != null || r.TotalObeOcene != null)
                                        {
                                            log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                          " nema nijednu ocenu" + " Takmicenje3");
                                        }
                                        continue;
                                    }
                                    IList <Ocena> oceneList = oceneMap[r.Gimnasticar.Id];
                                    Ocena         o         = null;
                                    foreach (Ocena o2 in oceneList)
                                    {
                                        if (o2.Sprava == Sprava.Preskok)
                                        {
                                            o = o2;
                                            break;
                                        }
                                    }
                                    if (o == null && (r.Total != null || r.TotalObeOcene != null))
                                    {
                                        log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                      " nema ocenu za " + Sprava.Preskok.ToString() + " Takmicenje3");
                                    }
                                    if (o != null && (o.Total != r.Total || o.TotalObeOcene != r.TotalObeOcene))
                                    {
                                        log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                      " total se razlikuje " + Sprava.Preskok.ToString() + " Takmicenje3");
                                    }
                                }
                            }
                        }
                }
                catch (Exception)
                {
                    if (session != null && session.Transaction != null && session.Transaction.IsActive)
                    {
                        session.Transaction.Rollback();
                    }
                    log.Close();
                    MessageBox.Show(takmicenjeHeader);
                    throw;
                }
                finally
                {
                    CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
                }
            }
            log.Close();
        }
예제 #7
0
        public static void addGimnasticariToRezTak(IList <GimnasticarUcesnik> gimnasticari, RezultatskoTakmicenje rezTak,
                                                   IList <GimnasticarUcesnik> addedGimnasticari)
        {
            RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

            rezultatskoTakmicenjeDAO.Attach(rezTak, false);

            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();
            Takmicenje    takmicenje    = takmicenjeDAO.FindById(rezTak.Takmicenje.Id);

            RezultatskoTakmicenje rezTak1 = null;
            RezultatskoTakmicenje rezTak2 = null;
            RezultatskoTakmicenje rezTak3 = null;
            RezultatskoTakmicenje rezTak4 = null;

            if (takmicenje.FinaleKupa || takmicenje.ZbirViseKola)
            {
                rezTak1 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari(
                    takmicenje.PrvoKolo.Id, rezTak.Kategorija.Naziv, 0);
                rezTak2 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari(
                    takmicenje.DrugoKolo.Id, rezTak.Kategorija.Naziv, 0);
                if (takmicenje.ZbirViseKola)
                {
                    if (takmicenje.TreceKolo != null)
                    {
                        rezTak3 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari(
                            takmicenje.TreceKolo.Id, rezTak.Kategorija.Naziv, 0);
                    }
                    if (takmicenje.CetvrtoKolo != null)
                    {
                        rezTak4 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari(
                            takmicenje.CetvrtoKolo.Id, rezTak.Kategorija.Naziv, 0);
                    }
                }
            }

            OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();

            foreach (GimnasticarUcesnik g in gimnasticari)
            {
                if (rezTak.Takmicenje1.addGimnasticar(g))
                {
                    IList <Ocena> ocene = ocenaDAO.FindByGimnasticar(g, DeoTakmicenjaKod.Takmicenje1);
                    if (takmicenje.FinaleKupa)
                    {
                        rezTak.Takmicenje1.updateRezultatiOnGimnasticarAdded(g, ocene, rezTak, rezTak1, rezTak2);
                    }
                    else if (takmicenje.ZbirViseKola)
                    {
                        rezTak.Takmicenje1.updateRezultatiOnGimnasticarAdded(g, rezTak, rezTak1, rezTak2, rezTak3, rezTak4);
                    }
                    else
                    {
                        rezTak.Takmicenje1.updateRezultatiOnGimnasticarAdded(g, ocene, rezTak);
                    }

                    foreach (Ocena o in ocene)
                    {
                        ocenaDAO.Evict(o);
                    }

                    addedGimnasticari.Add(g);
                }
            }

            takmicenjeDAO.Evict(takmicenje);
            if (rezTak1 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak1);
            }
            if (rezTak2 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak2);
            }
            if (rezTak3 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak3);
            }
            if (rezTak4 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak4);
            }

            if (addedGimnasticari.Count > 0)
            {
                DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO().Update(rezTak.Takmicenje1);
            }
        }
예제 #8
0
        public static void addEkipaToRezTak(Ekipa ekipa, RezultatskoTakmicenje rezTak)
        {
            RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

            rezultatskoTakmicenjeDAO.Attach(rezTak, false);

            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();
            Takmicenje    takmicenje    = takmicenjeDAO.FindById(rezTak.Takmicenje.Id);

            RezultatskoTakmicenje rezTak1 = null;
            RezultatskoTakmicenje rezTak2 = null;
            RezultatskoTakmicenje rezTak3 = null;
            RezultatskoTakmicenje rezTak4 = null;

            if (takmicenje.FinaleKupa || takmicenje.ZbirViseKola)
            {
                rezTak1 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe(
                    takmicenje.PrvoKolo.Id, rezTak.Kategorija.Naziv, 0);
                rezTak2 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe(
                    takmicenje.DrugoKolo.Id, rezTak.Kategorija.Naziv, 0);
                if (takmicenje.ZbirViseKola)
                {
                    if (takmicenje.TreceKolo != null)
                    {
                        rezTak3 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe(
                            takmicenje.TreceKolo.Id, rezTak.Kategorija.Naziv, 0);
                    }
                    if (takmicenje.CetvrtoKolo != null)
                    {
                        rezTak4 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe(
                            takmicenje.CetvrtoKolo.Id, rezTak.Kategorija.Naziv, 0);
                    }
                }
            }

            foreach (Ekipa e in rezTak.Takmicenje1.Ekipe)
            {
                foreach (GimnasticarUcesnik g in ekipa.Gimnasticari)
                {
                    if (e.Gimnasticari.Contains(g))
                    {
                        throw new BusinessException(String.Format(Strings.GIMNASTICAR_JE_CLAN_DRUGE_EKIPE_ERROR_MSG,
                                                                  g.ImeSrednjeImePrezime, e.Naziv));
                    }
                }
            }

            if (rezTak.Takmicenje1.addEkipa(ekipa, true))
            {
                DAOFactoryFactory.DAOFactory.GetEkipaDAO().Add(ekipa);

                if (takmicenje.FinaleKupa)
                {
                    rezTak.Takmicenje1.updateRezultatiOnEkipaAdded(ekipa,
                                                                   findRezultatiUkupnoForEkipa(takmicenje.Id, ekipa), rezTak, rezTak1, rezTak2);
                }
                else if (takmicenje.ZbirViseKola)
                {
                    rezTak.Takmicenje1.updateRezultatiOnEkipaAdded(ekipa, rezTak, rezTak1, rezTak2, rezTak3, rezTak4);
                }
                else
                {
                    rezTak.Takmicenje1.updateRezultatiOnEkipaAdded(ekipa, rezTak,
                                                                   findRezultatiUkupnoForEkipa(takmicenje.Id, ekipa));
                }

                // snimi ekipe i poredak ekipno
                DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO().Update(rezTak.Takmicenje1);
            }

            takmicenjeDAO.Evict(takmicenje);
            if (rezTak1 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak1);
            }
            if (rezTak2 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak2);
            }
            if (rezTak3 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak3);
            }
            if (rezTak4 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak4);
            }
        }