Пример #1
0
        private bool postojeUneteOcene(int takmicenjeId)
        {
            ISession session = null;

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();
                        ocenaDAO.Session = session;
                        return(ocenaDAO.existsOcene(takmicenjeId));
                    }
            }
            catch (Exception ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                throw new InfrastructureException(ex.Message, ex);
            }
            finally
            {
            }
        }
Пример #2
0
        private void btnStampajSaOgranicenjem_Click(object sender, EventArgs e)
        {
            MaxGimIzKlubaUFinaluForm form = new MaxGimIzKlubaUFinaluForm();

            if (form.ShowDialog() != DialogResult.OK)
            {
                return;
            }

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

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

                        OcenaDAO      ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();
                        IList <Ocena> ocene    = ocenaDAO.FindByDeoTakmicenja(takmicenje.Id, DeoTakmicenjaKod.Takmicenje1);

                        p = new PoredakUkupno(DeoTakmicenjaKod.Takmicenje1);
                        p.create(ActiveTakmicenje, ocene, true, form.MaxBrojTakmicaraIzKluba, form.MaxBrojTakmicaraVaziZaDrzavu);

                        foreach (Ocena o in ocene)
                        {
                            ocenaDAO.Evict(o);
                        }
                    }
            }
            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);
            }

            string nazivIzvestaja = "Finale vi" + Jezik.shMalo + "eboja";

            stampaj(p, nazivIzvestaja);
        }
Пример #3
0
        public static void deleteGimnasticariFromRezTak(IList <GimnasticarUcesnik> gimnasticari, RezultatskoTakmicenje rezTak)
        {
            DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO().Attach(rezTak, false);

            OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();

            foreach (GimnasticarUcesnik g in gimnasticari)
            {
                rezTak.Takmicenje1.removeGimnasticar(g);
                IList <Ocena> ocene = ocenaDAO.FindByGimnasticar(g, DeoTakmicenjaKod.Takmicenje1);
                rezTak.Takmicenje1.updateRezultatiOnGimnasticarDeleted(g, ocene, rezTak);
                foreach (Ocena o in ocene)
                {
                    ocenaDAO.Evict(o);
                }
            }

            DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO().Update(rezTak.Takmicenje1);
        }
Пример #4
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);
            }
        }
Пример #5
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);
        }
Пример #6
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);

                        OcenaDAO      ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();
                        IList <Ocena> ocene    = ocenaDAO.FindByDeoTakmicenja(takmicenje.Id, deoTakKod);
                        if (ActiveSprava != Sprava.Preskok)
                        {
                            PoredakSprava p = ActiveTakmicenje.getPoredakSprava(deoTakKod, ActiveSprava);
                            p.create(ActiveTakmicenje, ocene);
                            DAOFactoryFactory.DAOFactory.GetPoredakSpravaDAO().Update(p);
                        }
                        else
                        {
                            PoredakPreskok p = ActiveTakmicenje.getPoredakPreskok(deoTakKod);
                            p.create(ActiveTakmicenje, ocene);
                            DAOFactoryFactory.DAOFactory.GetPoredakPreskokDAO().Update(p);
                        }
                        foreach (Ocena o in ocene)
                        {
                            ocenaDAO.Evict(o);
                        }

                        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();
        }
Пример #7
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();
        }
Пример #8
0
        private void mnSpraveKojeSeBoduju_Click(object sender, EventArgs e)
        {
            IList <GimnasticarUcesnik> selItems = getActiveDataGridViewUserControl()
                                                  .getSelectedItems <GimnasticarUcesnik>();

            if (selItems.Count != 1)
            {
                return;
            }
            GimnasticarUcesnik g = selItems[0];

            List <int> checkedItems = new List <int>();

            foreach (Sprava s in Sprave.getSprave(ActiveRezTakmicenje.Gimnastika))
            {
                if (g.getSpravaSeBoduje(s))
                {
                    checkedItems.Add(Sprave.indexOf(s, ActiveRezTakmicenje.Gimnastika));
                }
            }

            CheckListForm form = new CheckListForm(
                new List <string>(Sprave.getSpraveNazivi(ActiveRezTakmicenje.Gimnastika)), checkedItems,
                "Izaberite sprave koje se boduju", "Sprave koje se boduju", true, "Izaberite sprave", true);

            if (form.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            Sprava[]       sprave             = Sprave.getSprave(ActiveRezTakmicenje.Gimnastika);
            IList <Sprava> spraveKojeSeBoduju = new List <Sprava>();

            g.clearSpraveKojeSeBoduju();
            foreach (int i in form.CheckedIndices)
            {
                g.setSpravaSeBoduje(sprave[i]);
            }

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

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);
                        DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO().Update(g);

                        PoredakSpravaDAO  poredakSpravaDAO  = DAOFactoryFactory.DAOFactory.GetPoredakSpravaDAO();
                        PoredakPreskokDAO poredakPreskokDAO = DAOFactoryFactory.DAOFactory.GetPoredakPreskokDAO();

                        OcenaDAO      ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();
                        IList <Ocena> ocene    = ocenaDAO.FindByDeoTakmicenja(takmicenje.Id, DeoTakmicenjaKod.Takmicenje1);

                        foreach (Sprava s in Sprave.getSprave(ActiveRezTakmicenje.Gimnastika))
                        {
                            if (s != Sprava.Preskok)
                            {
                                PoredakSprava p = ActiveRezTakmicenje.getPoredakSprava(DeoTakmicenjaKod.Takmicenje1, s);
                                poredakSpravaDAO.Attach(p, false);
                                p.create(ActiveRezTakmicenje, ocene);
                                poredakSpravaDAO.Update(p);
                            }
                            else
                            {
                                PoredakPreskok p = ActiveRezTakmicenje.getPoredakPreskok(DeoTakmicenjaKod.Takmicenje1);
                                poredakPreskokDAO.Attach(p, false);
                                p.create(ActiveRezTakmicenje, ocene);
                                poredakPreskokDAO.Update(p);
                            }
                        }
                        foreach (Ocena o in ocene)
                        {
                            ocenaDAO.Evict(o);
                        }

                        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);
            }
        }
Пример #9
0
        private void btnOk_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            Cursor.Show();
            ISession session = null;

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);
                        RezultatskoTakmicenje origTakmicenje = loadRezTakmicenje(rezTakmicenje.Id);

                        List <UcesnikTakmicenja3> orig    = new List <UcesnikTakmicenja3>(origTakmicenje.Takmicenje3.getUcesniciKvalifikanti(sprava));
                        List <UcesnikTakmicenja3> curr    = new List <UcesnikTakmicenja3>(rezTakmicenje.Takmicenje3.getUcesniciKvalifikanti(sprava));
                        List <UcesnikTakmicenja3> added   = new List <UcesnikTakmicenja3>();
                        List <UcesnikTakmicenja3> updated = new List <UcesnikTakmicenja3>();
                        List <UcesnikTakmicenja3> deleted = new List <UcesnikTakmicenja3>();
                        diff(curr, orig, added, updated, deleted);

                        foreach (UcesnikTakmicenja3 u in updated)
                        {
                            UcesnikTakmicenja3 origUcesnik
                                = origTakmicenje.Takmicenje3.getUcesnikKvalifikant(u.Gimnasticar, sprava);
                            origUcesnik.QualOrder = u.QualOrder;
                        }

                        OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();

                        foreach (UcesnikTakmicenja3 u in added)
                        {
                            origTakmicenje.Takmicenje3.addUcesnik(u);
                            Ocena o = ocenaDAO.FindOcena(u.Gimnasticar, DeoTakmicenjaKod.Takmicenje3, sprava);
                            if (sprava != Sprava.Preskok)
                            {
                                origTakmicenje.Takmicenje3.getPoredak(sprava).addGimnasticar(u.Gimnasticar, o, origTakmicenje);
                            }
                            else
                            {
                                origTakmicenje.Takmicenje3.PoredakPreskok.addGimnasticar(u.Gimnasticar, o, origTakmicenje);
                            }
                        }

                        foreach (UcesnikTakmicenja3 u in deleted)
                        {
                            origTakmicenje.Takmicenje3.removeUcesnik(u);
                            if (sprava == Sprava.Preskok)
                            {
                                origTakmicenje.Takmicenje3.PoredakPreskok.deleteGimnasticar(u.Gimnasticar, origTakmicenje);
                            }
                            else
                            {
                                origTakmicenje.Takmicenje3.getPoredak(sprava).deleteGimnasticar(u.Gimnasticar, origTakmicenje);
                            }
                        }

                        DAOFactoryFactory.DAOFactory.GetTakmicenje3DAO().Update(origTakmicenje.Takmicenje3);

                        Takmicenje t = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenje.Id);
                        t.LastModified = DateTime.Now;
                        session.Transaction.Commit();
                    }
            }
            catch (InfrastructureException ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                MessageDialogs.showError(ex.Message, this.Text);
            }
            catch (Exception ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                MessageDialogs.showError(ex.Message, this.Text);
            }
            finally
            {
                Cursor.Hide();
                Cursor.Current = Cursors.Arrow;
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }
        }
Пример #10
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);
            }
        }
Пример #11
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);
                }
            }
        }
Пример #12
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);
            }
        }