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();
        }
Пример #2
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);
            }
        }