示例#1
0
        public static void updateEkipa(Ekipa ekipa, RezultatskoTakmicenje rezTakmicenje)
        {
            RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

            rezultatskoTakmicenjeDAO.Attach(rezTakmicenje, false);

            foreach (Ekipa e in rezTakmicenje.Takmicenje1.Ekipe)
            {
                if (e.Equals(ekipa))
                {
                    continue;
                }
                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));
                    }
                }
            }

            DAOFactoryFactory.DAOFactory.GetEkipaDAO().Update(ekipa);

            rezTakmicenje.Takmicenje1.updateRezultatiOnEkipaUpdated(ekipa, rezTakmicenje,
                                                                    findRezultatiUkupnoForEkipa(rezTakmicenje.Takmicenje.Id, ekipa));

            DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO().Update(rezTakmicenje.Takmicenje1);
        }
示例#2
0
        // Proveri da li za svako finale kupa nijedno od prva dva kola nema odvojeno takmicenje 3.
        public void proveriPrvaDvaKola()
        {
            IList <int> takmicenjaId = getTakmicenjaId();
            ISession    session      = null;

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

                            string takmicenjeHeader = i.ToString() + ". " + t.ToString();
                            if (t.FinaleKupa)
                            {
                                takmicenjeHeader += " - FINALE KUPA";
                            }
                            takmicenjeHeader += " (" + t.Id + ")";

                            RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
                            foreach (RezultatskoTakmicenje rt in rezTakDAO.FindByTakmicenje(t.PrvoKolo.Id))
                            {
                                if (rt.Propozicije.odvojenoTak3() && t.PrvoKolo.ZavrsenoTak1)
                                {
                                    MessageBox.Show("Postoji odvojeno takmicenje 3 u prvom kolu\n\n" + takmicenjeHeader);
                                }
                            }
                            foreach (RezultatskoTakmicenje rt in rezTakDAO.FindByTakmicenje(t.DrugoKolo.Id))
                            {
                                if (rt.Propozicije.odvojenoTak3() && t.DrugoKolo.ZavrsenoTak1)
                                {
                                    MessageBox.Show("Postoji odvojeno takmicenje 3 u drugom kolu\n\n" + takmicenjeHeader);
                                }
                            }
                        }
                    }
            }
            catch (Exception ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                throw new InfrastructureException(ex.Message, ex);
            }
            finally
            {
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }
        }
示例#3
0
        protected override void updateEntity(DomainObject entity)
        {
            RezultatskoTakmicenjeDescription desc = (RezultatskoTakmicenjeDescription)entity;

            DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDescriptionDAO().Update(desc);

            Takmicenje takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenjeId);
            RezultatskoTakmicenjeDAO      rezTakDAO     = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            IList <RezultatskoTakmicenje> rezTakmicenja = rezTakDAO.FindByTakmicenje(takmicenjeId);

            TakmicarskaKategorijaDAO takKatDAO = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO();

            IList <RezultatskoTakmicenje> istaRezTakmicenja = new List <RezultatskoTakmicenje>();
            IList <RezultatskoTakmicenje> vecaRezTakmicenja = new List <RezultatskoTakmicenje>();
            int redBroj = 0;

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                if (rt.TakmicenjeDescription.RedBroj < desc.RedBroj)
                {
                    if (rt.RedBroj > redBroj)
                    {
                        redBroj = rt.RedBroj;
                    }
                }
                else if (rt.TakmicenjeDescription.RedBroj > desc.RedBroj)
                {
                    vecaRezTakmicenja.Add(rt);
                }
            }

            foreach (TakmicarskaKategorija k in sveKategorije)
            {
                if (SelKategorije.Contains(k) && oldKategorije.Contains(k))
                {
                    RezultatskoTakmicenje rt = rezTakDAO.FindByKatDesc(k, desc);
                    rt.RedBroj = (byte)++redBroj;
                    rezTakDAO.Update(rt);
                }
                else if (SelKategorije.Contains(k) && !oldKategorije.Contains(k))
                {
                    takKatDAO.Attach(k, false);
                    rezTakDAO.Add(createRezultatskoTakmicenje(takmicenje, k, desc, ++redBroj));
                }
                else if (!SelKategorije.Contains(k) && oldKategorije.Contains(k))
                {
                    RezultatskoTakmicenje rt = rezTakDAO.FindByKatDesc(k, desc);
                    rezTakDAO.Delete(rt);
                }
            }

            foreach (RezultatskoTakmicenje rt in vecaRezTakmicenja)
            {
                rt.RedBroj = (byte)++redBroj;
                rezTakDAO.Update(rt);
            }
        }
示例#4
0
        public static List <RezultatUkupno> findRezultatiUkupnoForEkipa(int takmicenjeId, Ekipa e)
        {
            List <RezultatUkupno>    result    = new List <RezultatUkupno>();
            RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

            foreach (GimnasticarUcesnik g in e.Gimnasticari)
            {
                result.Add(Takmicenje.getRezultatUkupnoForEkipniRezultat(
                               g, rezTakDAO.FindRezultatiUkupnoForGimnasticar(takmicenjeId, g.Id)));
            }
            return(result);
        }
        private void btnAddTakmicenje_Click(object sender, EventArgs e)
        {
            if (lstKategorije.Items.Count == 0)
            {
                MessageDialogs.showMessage("Morate najpre da unesete kategorije.", this.Text);
                return;
            }

            RezultatskoTakmicenjeDescriptionForm form;

            try
            {
                form = new RezultatskoTakmicenjeDescriptionForm(null, takmicenjeId);
                if (form.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
            }
            catch (InfrastructureException ex)
            {
                MessageDialogs.showError(ex.Message, this.Text);
                return;
            }

            ISession session = null;

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);
                        // reload rez. takmicenja
                        RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
                        setTakmicenja(rezTakDAO.FindByTakmicenje(takmicenjeId));
                        SelectedTakmicenje = (RezultatskoTakmicenjeDescription)form.Entity;
                    }
            }
            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);
            }
        }
示例#6
0
        protected override void addEntity(DomainObject entity)
        {
            RezultatskoTakmicenjeDescription desc = (RezultatskoTakmicenjeDescription)entity;
            Takmicenje takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenjeId);

            takmicenje.addTakmicenjeDescription(desc);
            DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().Update(takmicenje);

            RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            int redBroj = rezTakDAO.FindMaxRedBroj(takmicenjeId) + 1;

            foreach (TakmicarskaKategorija k in SelKategorije)
            {
                rezTakDAO.Add(createRezultatskoTakmicenje(takmicenje, k, desc, redBroj++));
            }
        }
        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);
        }
示例#8
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            IList <Ocena> selItems = getDataGridViewUserControl()
                                     .getSelectedItems <Ocena>();

            if (selItems.Count != 1)
            {
                return;
            }

            Ocena  ocena = selItems[0];
            string msg   = String.Format(
                "Da li zelite da izbrisete ocenu za gimnasticara '{0}', za spravu '{1}'?",
                ocena.Gimnasticar.ImeSrednjeImePrezime, Sprave.toString(ActiveSprava));

            if (!MessageDialogs.queryConfirmation(msg, this.Text))
            {
                return;
            }

            Cursor.Current = Cursors.WaitCursor;
            Cursor.Show();
            ISession session = null;

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);

                        DAOFactoryFactory.DAOFactory.GetOcenaDAO().Delete(ocena);

                        RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
                        Takmicenje1DAO           tak1DAO   = DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO();
                        Takmicenje2DAO           tak2DAO   = DAOFactoryFactory.DAOFactory.GetTakmicenje2DAO();
                        Takmicenje3DAO           tak3DAO   = DAOFactoryFactory.DAOFactory.GetTakmicenje3DAO();
                        Takmicenje4DAO           tak4DAO   = DAOFactoryFactory.DAOFactory.GetTakmicenje4DAO();

                        IList <RezultatskoTakmicenje> rezTakmicenja = rezTakDAO.FindByGimnasticar(ocena.Gimnasticar);
                        foreach (RezultatskoTakmicenje rt in rezTakmicenja)
                        {
                            if (deoTakKod == DeoTakmicenjaKod.Takmicenje1)
                            {
                                rt.Takmicenje1.updateRezultatiOnOcenaDeleted(ocena, rt);
                                tak1DAO.Update(rt.Takmicenje1);
                            }
                            else if (deoTakKod == DeoTakmicenjaKod.Takmicenje2 && rt.odvojenoTak2())
                            {
                                rt.Takmicenje2.ocenaDeleted(ocena, rt);
                                tak2DAO.Update(rt.Takmicenje2);
                            }
                            else if (deoTakKod == DeoTakmicenjaKod.Takmicenje3 && rt.odvojenoTak3())
                            {
                                rt.Takmicenje3.ocenaDeleted(ocena, rt);
                                tak3DAO.Update(rt.Takmicenje3);
                            }
                        }

                        IList <RezultatskoTakmicenje> ekipnaRezTakmicenja = rezTakDAO.FindEkipnaTakmicenja(takmicenje.Id);
                        foreach (RezultatskoTakmicenje rt in ekipnaRezTakmicenja)
                        {
                            Ekipa ekipa = rt.findEkipa(ocena.Gimnasticar, deoTakKod);
                            if (ekipa == null)
                            {
                                continue;
                            }
                            List <RezultatUkupno> rezultati = RezultatskoTakmicenjeService
                                                              .findRezultatiUkupnoForEkipa(takmicenje.Id, ekipa);
                            if (deoTakKod == DeoTakmicenjaKod.Takmicenje1)
                            {
                                rt.Takmicenje1.updateRezultatEkipe(ekipa, rt, rezultati);
                                tak1DAO.Update(rt.Takmicenje1);
                            }
                            else if (deoTakKod == DeoTakmicenjaKod.Takmicenje4 && rt.odvojenoTak4())
                            {
                                rt.Takmicenje4.updateRezultatEkipe(ekipa, rt, rezultati);
                                tak4DAO.Update(rt.Takmicenje4);
                            }
                        }

                        GimnasticarUcesnikDAO gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO();
                        UcesnikTakmicenja2DAO ucTak2DAO     = DAOFactoryFactory.DAOFactory.GetUcesnikTakmicenja2DAO();
                        UcesnikTakmicenja3DAO ucTak3DAO     = DAOFactoryFactory.DAOFactory.GetUcesnikTakmicenja3DAO();

                        ISet <RezultatskoTakmicenje> rezTakSet = new HashSet <RezultatskoTakmicenje>();
                        foreach (RezultatskoTakmicenje rt in rezTakmicenja)
                        {
                            rezTakSet.Add(rt);
                        }
                        foreach (RezultatskoTakmicenje rt in ekipnaRezTakmicenja)
                        {
                            rezTakSet.Add(rt);
                        }

                        foreach (RezultatskoTakmicenje rezTak in rezTakSet)
                        {
                            if (deoTakKod == DeoTakmicenjaKod.Takmicenje1)
                            {
                                foreach (GimnasticarUcesnik g in rezTak.Takmicenje1.Gimnasticari)
                                {
                                    if (gimUcesnikDAO.Contains(g))
                                    {
                                        gimUcesnikDAO.Evict(g);
                                    }
                                }
                            }
                            else if (deoTakKod == DeoTakmicenjaKod.Takmicenje2)
                            {
                                foreach (UcesnikTakmicenja2 u in rezTak.Takmicenje2.Ucesnici)
                                {
                                    if (gimUcesnikDAO.Contains(u.Gimnasticar))
                                    {
                                        gimUcesnikDAO.Evict(u.Gimnasticar);
                                    }
                                    ucTak2DAO.Evict(u);
                                }
                            }
                            else if (deoTakKod == DeoTakmicenjaKod.Takmicenje3)
                            {
                                foreach (UcesnikTakmicenja3 u in rezTak.Takmicenje3.Ucesnici)
                                {
                                    if (gimUcesnikDAO.Contains(u.Gimnasticar))
                                    {
                                        gimUcesnikDAO.Evict(u.Gimnasticar);
                                    }
                                    ucTak3DAO.Evict(u);
                                }
                            }
                        }

                        // NOTE: Ovde nisam mogao da koristim takmicenjeDAO.Update(takmicenje) jer mi prijavljuje gresku
                        // da u sesiji vec postoji drugi objekat sa istim Id-om (verovatno je dobavljen u nekom od metoda
                        // gore). Zato uvek koristim takmicenjeDAO.FindById(takmicenje.Id) kada apdejtujem LastModified da
                        // bih bio siguran da mi se ovakve greske nece pojavljivati.
                        takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenje.Id);
                        takmicenje.LastModified = DateTime.Now;
                        session.Transaction.Commit();
                    }
            }
            catch (Exception ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                MessageDialogs.showError(ex.Message, this.Text);
                Close();
                return;
            }
            finally
            {
                Cursor.Hide();
                Cursor.Current = Cursors.Arrow;
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }

            List <Ocena> activeOcene = ocene[calculateOceneKey(ActiveKategorija, ActiveSprava)];

            activeOcene.Remove(ocena);

            setOcene(activeOcene);
        }
示例#9
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);
                }
            }
        }
示例#10
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();
        }
示例#11
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);
            }
        }
示例#12
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);
            }
        }
示例#13
0
        public static void addTakmicenje(Takmicenje t, IList <KlubUcesnik> klubovi, IList <DrzavaUcesnik> drzave,
                                         IList <GimnasticarUcesnik> gimnasticari, IList <RezultatskoTakmicenje> rezTakmicenja,
                                         IList <SudijaUcesnik> sudije, IList <RasporedSudija> rasporediSudija, IList <RasporedNastupa> rasporediNastupa,
                                         IList <Ocena> ocene)
        {
            // dodaj takmicenje
            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();

            takmicenjeDAO.Add(t);

            // kategorije i descriptions se dodaju pomocu transitive persistance

            // dodaj klubove ucesnike
            KlubUcesnikDAO klubUcesnikDAO = DAOFactoryFactory.DAOFactory.GetKlubUcesnikDAO();

            foreach (KlubUcesnik k in klubovi)
            {
                klubUcesnikDAO.Add(k);
            }

            // dodaj drzave ucesnike
            DrzavaUcesnikDAO drzavaUcesnikDAO = DAOFactoryFactory.DAOFactory.GetDrzavaUcesnikDAO();

            foreach (DrzavaUcesnik d in drzave)
            {
                drzavaUcesnikDAO.Add(d);
            }

            // dodaj gimnasticare ucesnike
            GimnasticarUcesnikDAO gimnasticarUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO();

            foreach (GimnasticarUcesnik g in gimnasticari)
            {
                gimnasticarUcesnikDAO.Add(g);
            }

            // dodaj rezultatska takmicenja i ekipe
            RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO();

            foreach (RezultatskoTakmicenje r in rezTakmicenja)
            {
                foreach (Ekipa e in r.Takmicenje1.Ekipe)
                {
                    ekipaDAO.Add(e);
                }
                rezultatskoTakmicenjeDAO.Add(r);
            }

            // dodaj sudije ucesnike
            if (sudije != null)
            {
                SudijaUcesnikDAO sudijaUcesnikDAO = DAOFactoryFactory.DAOFactory.GetSudijaUcesnikDAO();
                foreach (SudijaUcesnik s in sudije)
                {
                    sudijaUcesnikDAO.Add(s);
                }
            }

            // dodaj rasporede sudija
            if (rasporediSudija != null)
            {
                RasporedSudijaDAO rasporedSudijaDAO = DAOFactoryFactory.DAOFactory.GetRasporedSudijaDAO();
                foreach (RasporedSudija r in rasporediSudija)
                {
                    rasporedSudijaDAO.Add(r);
                }
            }

            // dodaj rasporede nastupa
            if (rasporediNastupa != null)
            {
                RasporedNastupaDAO rasporedNastupaDAO = DAOFactoryFactory.DAOFactory.GetRasporedNastupaDAO();
                foreach (RasporedNastupa r in rasporediNastupa)
                {
                    rasporedNastupaDAO.Add(r);
                }
            }

            // dodaj ocene
            OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();

            foreach (Ocena o in ocene)
            {
                ocenaDAO.Add(o);
            }
        }
        private void btnIzracunaj_Click(object sender, EventArgs e)
        {
            string msg = "Da li zelite da izracunate poredak?";

            if (!MessageDialogs.queryConfirmation(msg, this.Text))
            {
                return;
            }

            Cursor.Current = Cursors.WaitCursor;
            Cursor.Show();
            ISession session = null;

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);
                        RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

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

                        ActiveTakmicenje.Takmicenje1.PoredakEkipnoZbirViseKola.create(ActiveTakmicenje,
                                                                                      rezTak1, rezTak2, rezTak3, rezTak4);

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

                        DAOFactoryFactory.DAOFactory.GetPoredakEkipnoZbirViseKolaDAO()
                        .Update(ActiveTakmicenje.Takmicenje1.PoredakEkipnoZbirViseKola);

                        takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenje.Id);
                        takmicenje.LastModified = DateTime.Now;
                        session.Transaction.Commit();
                    }
            }
            catch (Exception ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                MessageDialogs.showError(ex.Message, this.Text);
                return;
            }
            finally
            {
                Cursor.Hide();
                Cursor.Current = Cursors.Arrow;
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }

            setItems();
        }
示例#15
0
        public static void updateTakmicenjeOnChangedPropozicije(IList <RezultatskoTakmicenje> rezTakmicenja,
                                                                IDictionary <int, Propozicije> origPropozicijeMap, IDictionary <int, Propozicije> origDescPropozicijeMap,
                                                                Takmicenje takmicenje)
        {
            DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().Update(takmicenje); // ovo snima i propozicije za descriptions

            RezultatskoTakmicenjeDAO rezTakDAO      = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            PropozicijeDAO           propozicijeDAO = DAOFactoryFactory.DAOFactory.GetPropozicijeDAO();
            OcenaDAO      ocenaDAO  = DAOFactoryFactory.DAOFactory.GetOcenaDAO();
            IList <Ocena> oceneTak1 = null;

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                if (!rt.Propozicije.Equals(origPropozicijeMap[rt.Id]))
                {
                    rezTakDAO.Update(rt); // ovo snima i propozicije i sve promene rezultata
                }
                else
                {
                    rezTakDAO.Attach(rt, false);  // moram da attachujem (ili da apdejtujem) sva rez. takmicenja zato
                }
                // sto se koriste u izracunavanju ekipnog poretka.
            }

            foreach (RezultatskoTakmicenjeDescription d in takmicenje.TakmicenjeDescriptions)
            {
                if (d.Propozicije.JednoTak4ZaSveKategorije != origDescPropozicijeMap[d.Id].JednoTak4ZaSveKategorije)
                {
                    // Posto je opcija JednoTak4ZaSveKategorije onemogucena u propozicijama za konkretna rez. takmicenja,
                    // moguce je da se promena u propozicijama za description ne prenosi na propozicije na konkretna
                    // rez. takmicenja. Zato ponovo radim Update za sva rez. takmicenja, da bih bio siguran da ce promene
                    // koje ce biti izvrsene u metodu updateImaEkipnoTakmicenje biti snimljene u bazu.
                    foreach (RezultatskoTakmicenje rt in rezTakmicenja)
                    {
                        if (rt.TakmicenjeDescription.Equals(d))
                        {
                            rezTakDAO.Update(rt);
                        }
                    }
                    RezultatskoTakmicenje.updateImaEkipnoTakmicenje(rezTakmicenja, d);
                }
            }

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                if (!rt.Propozicije.Equals(origPropozicijeMap[rt.Id]))
                {
                    if (oceneTak1 == null)
                    {
                        oceneTak1 = ocenaDAO.FindByDeoTakmicenja(takmicenje.Id, DeoTakmicenjaKod.Takmicenje1);
                    }
                    rt.updateRezultatiOnChangedPropozicije(origPropozicijeMap, takmicenje, rezTakmicenja, oceneTak1);
                }
            }

            if (oceneTak1 != null)
            {
                foreach (Ocena o in oceneTak1)
                {
                    ocenaDAO.Evict(o);
                }
            }
        }
示例#16
0
        private void btnIzracunaj_Click(object sender, EventArgs e)
        {
            string msg;

            if (kvalColumnVisible())
            {
                msg = "Da li zelite da izracunate poredak, kvalifikante i rezerve?";
            }
            else
            {
                msg = "Da li zelite da izracunate poredak?";
            }
            if (!MessageDialogs.queryConfirmation(msg, this.Text))
            {
                return;
            }

            Cursor.Current = Cursors.WaitCursor;
            Cursor.Show();
            ISession session = null;

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);
                        RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

                        RezultatskoTakmicenje rezTak1 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari(
                            takmicenje.PrvoKolo.Id, ActiveTakmicenje.Kategorija.Naziv, 0);
                        RezultatskoTakmicenje rezTak2 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari(
                            takmicenje.DrugoKolo.Id, ActiveTakmicenje.Kategorija.Naziv, 0);

                        PoredakSpravaFinaleKupa p = ActiveTakmicenje.Takmicenje1.getPoredakSpravaFinaleKupa(ActiveSprava);
                        p.create(ActiveTakmicenje, rezTak1, rezTak2);

                        rezultatskoTakmicenjeDAO.Evict(rezTak1);
                        rezultatskoTakmicenjeDAO.Evict(rezTak2);

                        DAOFactoryFactory.DAOFactory.GetPoredakSpravaFinaleKupaDAO().Update(p);

                        takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenje.Id);
                        takmicenje.LastModified = DateTime.Now;
                        session.Transaction.Commit();
                    }
            }
            catch (Exception ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                MessageDialogs.showError(ex.Message, this.Text);
                return;
            }
            finally
            {
                Cursor.Hide();
                Cursor.Current = Cursors.Arrow;
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }

            setItems();
        }
示例#17
0
        public static void deleteTakmicenje(Takmicenje t, bool proveriFinala)
        {
            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();

            if (proveriFinala)
            {
                // Proveri da li se neko takmicenje (finale kupa ili zbir vise kola) referise na ovo takmicenje.
                IList <Takmicenje> finala = takmicenjeDAO.FindFinala(t);
                if (finala.Count > 0)
                {
                    string msg = "Takmicenje \"" + t.ToString() + "\" je nemoguce izbrisati jer je ono jedno od kola za " +
                                 "sledeca finala:\n\n";
                    foreach (Takmicenje f in finala)
                    {
                        msg += f.ToString() + "\n";
                    }
                    throw new BusinessException(msg);
                }
            }

            // brisi ocene
            OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();

            foreach (Ocena o in ocenaDAO.FindByTakmicenje(t.Id))
            {
                ocenaDAO.Delete(o);
            }

            // brisi rasporede nastupa
            RasporedNastupaDAO rasporedNastupaDAO = DAOFactoryFactory.DAOFactory.GetRasporedNastupaDAO();

            foreach (RasporedNastupa r in rasporedNastupaDAO.FindByTakmicenje(t.Id))
            {
                rasporedNastupaDAO.Delete(r);
            }

            // brisi rasporede sudija
            RasporedSudijaDAO rasporedSudijaDAO = DAOFactoryFactory.DAOFactory.GetRasporedSudijaDAO();

            foreach (RasporedSudija r in rasporedSudijaDAO.FindByTakmicenje(t.Id))
            {
                rasporedSudijaDAO.Delete(r);
            }

            // brisi sudije ucesnike
            SudijaUcesnikDAO sudijaUcesnikDAO = DAOFactoryFactory.DAOFactory.GetSudijaUcesnikDAO();

            foreach (SudijaUcesnik s in sudijaUcesnikDAO.FindByTakmicenje(t.Id))
            {
                sudijaUcesnikDAO.Delete(s);
            }

            // brisi rezultatska takmicenja i ekipe
            RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO();

            foreach (RezultatskoTakmicenje r in rezultatskoTakmicenjeDAO.FindByTakmicenje(t.Id))
            {
                foreach (Ekipa e in r.Takmicenje1.Ekipe)
                {
                    ekipaDAO.Delete(e);
                }
                rezultatskoTakmicenjeDAO.Delete(r);
            }

            // brisi gimnasticare ucesnike
            GimnasticarUcesnikDAO gimnasticarUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO();

            foreach (GimnasticarUcesnik g in gimnasticarUcesnikDAO.FindByTakmicenje(t.Id))
            {
                gimnasticarUcesnikDAO.Delete(g);
            }

            // brisi klubove ucesnike
            KlubUcesnikDAO klubUcesnikDAO = DAOFactoryFactory.DAOFactory.GetKlubUcesnikDAO();

            foreach (KlubUcesnik k in klubUcesnikDAO.FindByTakmicenje(t.Id))
            {
                klubUcesnikDAO.Delete(k);
            }

            // brisi drzave ucesnike
            DrzavaUcesnikDAO drzavaUcesnikDAO = DAOFactoryFactory.DAOFactory.GetDrzavaUcesnikDAO();

            foreach (DrzavaUcesnik d in drzavaUcesnikDAO.FindByTakmicenje(t.Id))
            {
                drzavaUcesnikDAO.Delete(d);
            }

            // brisi kategorije
            TakmicarskaKategorijaDAO takmicarskaKategorijaDAO = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO();

            foreach (TakmicarskaKategorija k in takmicarskaKategorijaDAO.FindByTakmicenje(t.Id))
            {
                takmicarskaKategorijaDAO.Delete(k);
            }

            // brisi descriptions
            RezultatskoTakmicenjeDescriptionDAO rezTakDescDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDescriptionDAO();

            foreach (RezultatskoTakmicenjeDescription d in rezTakDescDAO.FindByTakmicenje(t.Id))
            {
                rezTakDescDAO.Delete(d);
            }

            // brisi takmicenje
            takmicenjeDAO.Delete(t);
        }
示例#18
0
        private void deleteGimnasticar(GimnasticarUcesnik g)
        {
            Cursor.Current = Cursors.WaitCursor;
            Cursor.Show();
            ISession session = null;

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);

                        GimnasticarUcesnikDAO gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO();
                        gimUcesnikDAO.Attach(g, false);

                        StartListaNaSpraviDAO startListaDAO = DAOFactoryFactory.DAOFactory.GetStartListaNaSpraviDAO();
                        EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO();
                        RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
                        Takmicenje1DAO           tak1DAO   = DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO();
                        Takmicenje3DAO           tak3DAO   = DAOFactoryFactory.DAOFactory.GetTakmicenje3DAO();
                        OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();

                        // Izbaci gimnasticara iz start lista
                        foreach (StartListaNaSpravi s in startListaDAO.FindByGimnasticar(g))
                        {
                            s.removeNastup(g);
                            startListaDAO.Update(s);
                        }

                        // Izbaci gimnasticara iz ekipa
                        foreach (Ekipa e in ekipaDAO.FindByGimnasticar(g))
                        {
                            e.removeGimnasticar(g);
                            ekipaDAO.Update(e);

                            RezultatskoTakmicenje rt = rezTakDAO.FindByEkipa(e);
                            rt.Takmicenje1.updateRezultatiOnEkipaUpdated(e, rt,
                                                                         RezultatskoTakmicenjeService.findRezultatiUkupnoForEkipa(rt.Takmicenje.Id, e));
                            tak1DAO.Update(rt.Takmicenje1);
                        }

                        IList <Ocena> ocene1 = ocenaDAO.FindByGimnasticar(g, DeoTakmicenjaKod.Takmicenje1);
                        IList <Ocena> ocene3 = ocenaDAO.FindByGimnasticar(g, DeoTakmicenjaKod.Takmicenje3);

                        // Izbaci gimnasticara iz takmicenja 1
                        foreach (RezultatskoTakmicenje rt in rezTakDAO.FindByGimnasticar(g))
                        {
                            rt.Takmicenje1.removeGimnasticar(g);

                            // Izbaci gimnasticara iz svih poredaka na kojima je vezbao.
                            rt.Takmicenje1.updateRezultatiOnGimnasticarDeleted(g, ocene1, rt);

                            tak1DAO.Update(rt.Takmicenje1);
                            foreach (GimnasticarUcesnik g2 in rt.Takmicenje1.Gimnasticari)
                            {
                                gimUcesnikDAO.Evict(g2);
                            }
                        }

                        // Izbaci gimnasticara iz takmicenja 3
                        foreach (RezultatskoTakmicenje rt in rezTakDAO.FindByUcesnikTak3(g))
                        {
                            rt.Takmicenje3.clearUcesnik(g);
                            foreach (PoredakSprava p in rt.Takmicenje3.Poredak)
                            {
                                p.deleteGimnasticar(g, rt);
                            }
                            rt.Takmicenje3.PoredakPreskok.deleteGimnasticar(g, rt);

                            tak3DAO.Update(rt.Takmicenje3);
                        }

                        foreach (Ocena o in ocene1)
                        {
                            ocenaDAO.Delete(o);
                        }
                        foreach (Ocena o in ocene3)
                        {
                            ocenaDAO.Delete(o);
                        }

                        // TODO: Brisi takmicara iz takmicenja II i IV.

                        gimUcesnikDAO.Delete(g);

                        takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenje.Id);
                        takmicenje.LastModified = DateTime.Now;
                        session.Transaction.Commit();
                    }
            }
            catch (Exception)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                throw;
            }
            finally
            {
                Cursor.Hide();
                Cursor.Current = Cursors.Arrow;
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }
        }
示例#19
0
        public static void createFromPrevTakmicenje(Takmicenje takmicenje, Takmicenje from,
                                                    IList <RezultatskoTakmicenje> rezTakmicenjaFrom,
                                                    IDictionary <int, List <GimnasticarUcesnik> > rezTakToGimnasticarUcesnikMap)
        {
            const int MAX = 1024;

            TakmicarskaKategorija[] kategorije = new TakmicarskaKategorija[MAX];
            for (int i = 0; i < MAX; ++i)
            {
                kategorije[i] = null;
            }
            foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom)
            {
                if (kategorije[rtFrom.Kategorija.RedBroj] == null)
                {
                    kategorije[rtFrom.Kategorija.RedBroj] = new TakmicarskaKategorija(rtFrom.Kategorija.Naziv);
                }
            }

            PropozicijeDAO propozicijeDAO = DAOFactoryFactory.DAOFactory.GetPropozicijeDAO();

            foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom)
            {
                propozicijeDAO.Attach(rtFrom.TakmicenjeDescription.Propozicije, false);
                propozicijeDAO.Attach(rtFrom.Propozicije, false);
            }

            RezultatskoTakmicenjeDescription[] descriptions = new RezultatskoTakmicenjeDescription[MAX];
            for (int i = 0; i < MAX; ++i)
            {
                descriptions[i] = null;
            }
            foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom)
            {
                if (descriptions[rtFrom.TakmicenjeDescription.RedBroj] == null)
                {
                    RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription();
                    desc.Naziv       = rtFrom.TakmicenjeDescription.Naziv;
                    desc.Propozicije = new Propozicije();

                    // Apdejtujem jedino propozicije za takmicenje 4 zbog kombinovanog ekipnog takmicenja.
                    // Ostale propozicije su na inicijalnim vrednostima.
                    rtFrom.TakmicenjeDescription.Propozicije.copyTakmicenje4To(desc.Propozicije);

                    descriptions[rtFrom.TakmicenjeDescription.RedBroj] = desc;
                }
            }

            takmicenje.Kategorije.Clear();
            for (int i = 0; i < MAX; ++i)
            {
                if (kategorije[i] != null)
                {
                    takmicenje.addKategorija(kategorije[i]);
                }
            }

            takmicenje.TakmicenjeDescriptions.Clear();
            bool first = true;

            for (int i = 0; i < MAX; ++i)
            {
                if (descriptions[i] != null)
                {
                    if (first)
                    {
                        // prvi description je uvek kao naziv takmicenja.
                        RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription();
                        desc.Naziv       = takmicenje.Naziv;
                        desc.Propozicije = descriptions[i].Propozicije;  // klonirane propozicije
                        descriptions[i]  = desc;
                        first            = false;
                    }
                    takmicenje.addTakmicenjeDescription(descriptions[i]);
                }
            }

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

            foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom)
            {
                RezultatskoTakmicenje rt = new RezultatskoTakmicenje(takmicenje,
                                                                     kategorije[rtFrom.Kategorija.RedBroj],
                                                                     descriptions[rtFrom.TakmicenjeDescription.RedBroj],
                                                                     new Propozicije());
                rtFrom.Propozicije.copyTakmicenje4To(rt.Propozicije);
                rezTakmicenja.Add(rt);
            }

            foreach (RezultatskoTakmicenjeDescription d in takmicenje.TakmicenjeDescriptions)
            {
                RezultatskoTakmicenje.updateImaEkipnoTakmicenje(rezTakmicenja, d);
            }

            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();

            takmicenjeDAO.Add(takmicenje);

            IDictionary <int, GimnasticarUcesnik> gimnasticariMap = new Dictionary <int, GimnasticarUcesnik>();

            for (int i = 0; i < rezTakmicenja.Count; ++i)
            {
                RezultatskoTakmicenje rt     = rezTakmicenja[i];
                RezultatskoTakmicenje rtFrom = rezTakmicenjaFrom[i];
                foreach (GimnasticarUcesnik g in rezTakToGimnasticarUcesnikMap[rtFrom.Id])
                {
                    GimnasticarUcesnik g2;
                    if (!gimnasticariMap.ContainsKey(g.Id))
                    {
                        g2 = GimnasticarUcesnikService.createGimnasticarUcesnik(g,
                                                                                kategorije[g.TakmicarskaKategorija.RedBroj]);
                        gimnasticariMap[g.Id] = g2;
                    }
                    else
                    {
                        g2 = gimnasticariMap[g.Id];
                    }
                    rt.Takmicenje1.addGimnasticar(g2);
                    rt.Takmicenje1.updateRezultatiOnGimnasticarAdded(g2, new List <Ocena>(), rt);
                }
            }

            Takmicenje1DAO takmicenje1DAO = DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO();

            for (int i = 0; i < rezTakmicenja.Count; ++i)
            {
                RezultatskoTakmicenje rt     = rezTakmicenja[i];
                RezultatskoTakmicenje rtFrom = rezTakmicenjaFrom[i];
                takmicenje1DAO.Attach(rtFrom.Takmicenje1, false);
                foreach (Ekipa e in rtFrom.Takmicenje1.Ekipe)
                {
                    Ekipa ekipa = new Ekipa();
                    ekipa.Naziv = e.Naziv;
                    ekipa.Kod   = e.Kod;

                    // Ne kopiram clanove ekipe zato sto dodavati clanove ekipe ima smisla jedino ako se znaju
                    // rezultati, a ovaj metod samo pravi pripremu takmicenja i nema nikakvih rezultata.

                    rt.Takmicenje1.addEkipa(ekipa, true);
                }
            }

            RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO();

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                rezultatskoTakmicenjeDAO.Add(rt);
                foreach (Ekipa e in rt.Takmicenje1.Ekipe)
                {
                    ekipaDAO.Add(e);
                }
            }

            GimnasticarUcesnikDAO gimnasticarUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO();

            foreach (GimnasticarUcesnik g in gimnasticariMap.Values)
            {
                gimnasticarUcesnikDAO.Add(g);
            }
        }
示例#20
0
        private void insertGimnasticariAndDrzaveUcesniciAndAddRezTakmicenjaUcesnici(Takmicenje takmicenje)
        {
            TakmicarskaKategorija seniori = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().FindByTakmicenje(takmicenje.Id)[0];

            RezultatskoTakmicenjeDAO rezTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            RezultatskoTakmicenje    rezTak           = rezTakmicenjeDAO.FindByKategorija(seniori)[0];

            string fileName;

            if (gimnastika == Gimnastika.MSG)
            {
                fileName = @"..\..\test\Data\KvalifikantiMuskarci.txt";
            }
            else
            {
                fileName = @"..\..\test\Data\KvalifikantiZene.txt";
            }

            List <Drzava>        drzave         = new List <Drzava>(DAOFactoryFactory.DAOFactory.GetDrzavaDAO().FindAll());
            List <DrzavaUcesnik> drzaveUcesnici = new List <DrzavaUcesnik>();

            GimnasticariParser parser = new GimnasticariParser();

            parser.parse(fileName);

            foreach (object[] o in parser.Gimnasticari)
            {
                int      broj      = (int)o[0];
                string   prezime   = (string)o[1];
                string   ime       = (string)o[2];
                string   kod       = (string)o[3];
                DateTime datumRodj = (DateTime)o[4];

                GimnasticarUcesnik gimnasticarUcesnik = new GimnasticarUcesnik();
                gimnasticarUcesnik.Ime           = ime;
                gimnasticarUcesnik.Prezime       = prezime;
                gimnasticarUcesnik.DatumRodjenja = new Datum(datumRodj);

                DrzavaUcesnik drzavaUcesnik = findDrzavaUcesnik(kod, drzaveUcesnici);
                if (drzavaUcesnik == null)
                {
                    Drzava drzava = findDrzava(kod, drzave);
                    drzavaUcesnik            = new DrzavaUcesnik();
                    drzavaUcesnik.Naziv      = drzava.Naziv;
                    drzavaUcesnik.Kod        = drzava.Kod;
                    drzavaUcesnik.Takmicenje = takmicenje;
                    drzaveUcesnici.Add(drzavaUcesnik);

                    DAOFactoryFactory.DAOFactory.GetDrzavaUcesnikDAO().Add(drzavaUcesnik);
                }
                gimnasticarUcesnik.DrzavaUcesnik = drzavaUcesnik;

                gimnasticarUcesnik.TakmicarskaKategorija = seniori;
                gimnasticarUcesnik.NastupaZaDrzavu       = true;

                DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO().Add(gimnasticarUcesnik);

                rezTak.Takmicenje1.addGimnasticar(gimnasticarUcesnik);
            }

            rezTakmicenjeDAO.Update(rezTak);
        }
示例#21
0
        public static void updateViseKola(Takmicenje takmicenje)
        {
            // Ne apdejtujem kategorije i takmicenja. Dodajem nove gimnasticare i ekipe, i onda ponovo izracunavam
            // sve rezultate. Takodje, ne vodim racuna o tome da li je novi gimnsticar ucestvovao u razlicitim
            // kategorijama u prethodnim kolima (ako je i dodat neki nov gimnasticar, najverovatnije je dodat samo jedan,
            // i onda ce korisnik najverovatnije sam proveriti da li su kategorije u kojima je gimnasticar ucestvovao iste.)

            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();
            GimnasticarUcesnikDAO    gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO();
            EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO();

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

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

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

            IDictionary <GimnasticarUcesnik, GimnasticarUcesnik> gimUcesniciMap
                = new Dictionary <GimnasticarUcesnik, GimnasticarUcesnik>();

            foreach (GimnasticarUcesnik g in gimUcesnikDAO.FindByTakmicenje(takmicenje.Id))
            {
                gimUcesniciMap.Add(g, g);
            }

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

                        GimnasticarUcesnik g2;
                        if (!gimUcesniciMap.ContainsKey(g))
                        {
                            g2 = GimnasticarUcesnikService.createGimnasticarUcesnik(g, rt.Kategorija);
                            gimUcesniciMap.Add(g, g2);
                            gimUcesnikDAO.Add(g2);
                        }
                        else
                        {
                            g2 = gimUcesniciMap[g];
                        }
                        rt.Takmicenje1.addGimnasticar(g2);
                    }
                }
            }

            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);
                    }
                }
            }

            takmicenje.kreirajRezultateViseKola(rezTakmicenja, rezTakmicenjaPrethodnaKola);

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

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                rezTakDAO.Update(rt);
            }
        }
示例#22
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);
            }
        }