private void mnSpraveKojeSeBoduju_Click(object sender, EventArgs e) { IList <RezultatEkipno> rezultatiEkipe = dataGridViewUserControl1.getSelectedItems <RezultatEkipno>(); if (rezultatiEkipe.Count != 1) { return; } RezultatEkipno rezultat = rezultatiEkipe[0]; List <int> checkedItems = new List <int>(); foreach (Sprava s in Sprave.getSprave(gimnastika)) { if (rezultat.Ekipa.getSpravaSeBoduje(s)) { checkedItems.Add(Sprave.indexOf(s, gimnastika)); } } CheckListForm form = new CheckListForm( new List <string>(Sprave.getSpraveNazivi(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(gimnastika); IList <Sprava> spraveKojeSeBoduju = new List <Sprava>(); rezultat.Ekipa.clearSpraveKojeSeBoduju(); foreach (int i in form.CheckedIndices) { rezultat.Ekipa.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.GetEkipaDAO().Update(rezultat.Ekipa); PoredakEkipnoDAO poredakEkipnoDAO = DAOFactoryFactory.DAOFactory.GetPoredakEkipnoDAO(); PoredakEkipno p = ActiveTakmicenje.getPoredakEkipno(deoTakKod); poredakEkipnoDAO.Attach(p, false); p.recreateRezultat(rezultat.Ekipa, ActiveTakmicenje, RezultatskoTakmicenjeService.findRezultatiUkupnoForEkipa(takmicenje.Id, rezultat.Ekipa)); poredakEkipnoDAO.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); Close(); return; } finally { Cursor.Hide(); Cursor.Current = Cursors.Arrow; CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } dataGridViewUserControl1.setItems <RezultatEkipno>( ActiveTakmicenje.getPoredakEkipno(deoTakKod).getRezultati()); // posto je poredak ponovo kreiran, i rezultat za ekipu je nov objekat pa moram da ga iznova potrazim dataGridViewUserControl1.setSelectedItem <RezultatEkipno>( ActiveTakmicenje.getPoredakEkipno(deoTakKod).getRezultat(rezultat.Ekipa)); }
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); PoredakEkipnoDAO poredakEkipnoDAO = DAOFactoryFactory.DAOFactory.GetPoredakEkipnoDAO(); // TODO4: Mozda bi na svim ovakvim mestima ipak bilo bolje da se ponovo ucitava poredak iz baze. // Ako se, recimo, ocene unose (i poredak azurira) na posebnom tredu, tada ce ovaj objekat za // ekipni poredak sadrzavati zastarele podatke. PoredakEkipno p = ActiveTakmicenje.getPoredakEkipno(deoTakKod); poredakEkipnoDAO.Attach(p, false); p.create(ActiveTakmicenje, ekipaRezultatiUkupnoMap); poredakEkipnoDAO.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); } setEkipe(); }