public static void initRezultatiUkupnoZaEkipe(DataGridViewUserControl dgw, Takmicenje takmicenje) { dgw.DataGridView.Columns.Clear(); dgw.AddColumn("Ime", "PrezimeIme", 170); dgw.AddColumn("Klub/Drzava", "KlubDrzava", 130); Sprava[] sprave = Sprave.getSprave(takmicenje.Gimnastika); foreach (Sprava sprava in sprave) { string columnName = Sprave.toString(sprava); string propName = columnName; int width = 50; if (sprava == Sprava.Konj) { width = 70; propName = "Konj"; } else if (sprava == Sprava.DvovisinskiRazboj) { width = 70; propName = "DvovisinskiRazboj"; } dgw.AddColumn(columnName, propName, width, "{0:F" + takmicenje.BrojDecimalaTotal + "}"); } dgw.AddColumn("Ukupno", "Total", 50, "{0:F" + takmicenje.BrojDecimalaTotal + "}"); }
private void createUI() { Text = "Sudijske funkcije - " + Sprave.toString(odbor.Sprava); List <SudijskaUloga> uloge = new List <SudijskaUloga>(SudijskeUloge.getSveUloge()); int x = 12; int y = 12; int tabIndex = 0; this.SuspendLayout(); foreach (SudijskaUloga u in uloge) { this.Controls.Add(createCheckBox( u, new Point(x, y), tabIndex, odbor.hasFunction(u))); y += 23; tabIndex++; } y += 12; btnOK.Location = new Point(btnOK.Location.X, y); btnOK.TabIndex = tabIndex; btnCancel.Location = new Point(btnCancel.Location.X, y); btnCancel.TabIndex = tabIndex + 1; this.ClientSize = new Size(ClientSize.Width, btnOK.Bottom + 23); this.ResumeLayout(false); this.PerformLayout(); }
public SelectSpravaForm(Sprava[] sprave, Sprava sprava) { InitializeComponent(); Text = "Sprava"; cmbSprava.DropDownStyle = ComboBoxStyle.DropDownList; foreach (Sprava s in sprave) { cmbSprava.Items.Add(Sprave.toString(s)); } if (sprava == Sprava.Undefined) { cmbSprava.SelectedIndex = 0; } else { List <Sprava> sprave2 = new List <Sprava>(sprave); int selectedIndex = sprave2.IndexOf(sprava); if (selectedIndex < 0) { // Ovo se desava kada je sprava pauza, a moze da se bira samo izmedju sprava koje nisu pauze. // Tada selektujem prvu spravu. selectedIndex = 0; } cmbSprava.SelectedIndex = selectedIndex; } }
private void btnAdd_Click(object sender, EventArgs e) { DialogResult dlgResult = DialogResult.None; SelectGimnasticarUcesnikForm form = null; try { form = new SelectGimnasticarUcesnikForm(takmicenjeId, gimnastika, null); dlgResult = form.ShowDialog(); } catch (InfrastructureException ex) { MessageDialogs.showError(ex.Message, this.Text); return; } if (dlgResult != DialogResult.OK || form.SelectedEntities.Count == 0) { return; } bool added = false; string msg = String.Empty; foreach (GimnasticarUcesnik g in form.SelectedEntities) { StartListaNaSpravi startLista2 = raspored.getStartLista(g, startLista.Grupa, startLista.Rotacija); if (startLista2 != null && startLista2.Sprava != startLista.Sprava) { msg += g.ImeSrednjeImePrezime + " (" + Sprave.toString(startLista2.Sprava) + ")\n"; continue; } if (startLista.addGimnasticar(g)) { added = true; } } if (msg != String.Empty) { MessageDialogs.showMessage("Sledeci gimnsticari nisu dodati jer vec postoje u rotaciji:\n\n" + msg, this.Text); } if (added) { dirty = true; spravaGridUserControl1.setItems(startLista.Nastupi); spravaGridUserControl1.clearSelection(); } }
public static void initRezultatiEkipno(DataGridViewUserControl dgw, Takmicenje takmicenje, bool kvalColumn, bool penalty) { dgw.DataGridView.Columns.Clear(); dgw.AddColumn("Rank", "Rank", 40); dgw.AddColumn("Ekipa", "NazivEkipe", 170); Sprava[] sprave = Sprave.getSprave(takmicenje.Gimnastika); foreach (Sprava sprava in sprave) { string columnName = Sprave.toString(sprava); string propName = columnName; int width = 50; if (sprava == Sprava.Konj) { width = 70; propName = "Konj"; } else if (sprava == Sprava.DvovisinskiRazboj) { width = 70; propName = "DvovisinskiRazboj"; } dgw.AddColumn(columnName, propName, width, "{0:F" + takmicenje.BrojDecimalaTotal + "}"); } dgw.AddColumn("Ukupno", "Total", 50, "{0:F" + takmicenje.BrojDecimalaTotal + "}"); if (penalty) { dgw.AddColumn("Pen.", "Penalty", 50, "{0:F" + takmicenje.BrojDecimalaPen + "}"); } if (kvalColumn) { dgw.AddColumn("", "KvalStatus", 30); } }
private void btnPrint_Click(object sender, EventArgs e) { string nazivIzvestaja = ActiveTakmicenje.getNazivIzvestajaSprava(deoTakKod, takmicenje.FinaleKupa, false); HeaderFooterForm form = new HeaderFooterForm(deoTakKod, false, true, true, false, false, false, false); if (!Opcije.Instance.HeaderFooterInitialized) { FormUtil.initHeaderFooterFormFromOpcije(form); string mestoDatum = takmicenje.Mesto + " " + takmicenje.Datum.ToShortDateString(); form.Header1Text = ActiveTakmicenje.TakmicenjeDescription.Naziv; form.Header2Text = mestoDatum; form.Header3Text = ActiveTakmicenje.Kategorija.Naziv; form.Header4Text = nazivIzvestaja; form.FooterText = mestoDatum; } else { FormUtil.initHeaderFooterFormFromOpcije(form); form.Header1Text = ActiveTakmicenje.TakmicenjeDescription.Naziv; form.Header3Text = ActiveTakmicenje.Kategorija.Naziv; form.Header4Text = nazivIzvestaja; } if (form.ShowDialog() != DialogResult.OK) { return; } FormUtil.initHeaderFooterFromForm(form); Opcije.Instance.HeaderFooterInitialized = true; Cursor.Current = Cursors.WaitCursor; Cursor.Show(); try { string documentName; if (form.StampajSveSprave) { documentName = nazivIzvestaja + " - " + ActiveTakmicenje.Kategorija.Naziv; } else { documentName = nazivIzvestaja + " - " + Sprave.toString(ActiveSprava) + " - " + ActiveTakmicenje.Kategorija.Naziv; } bool obaPreskoka = ActiveTakmicenje.Propozicije.racunajObaPreskoka(deoTakKod); PreviewDialog p = new PreviewDialog(); if (form.StampajSveSprave) { List <List <RezultatSprava> > rezultatiSprave = new List <List <RezultatSprava> >(); List <RezultatPreskok> rezultatiPreskok = null; foreach (Sprava s in Sprave.getSprave(ActiveTakmicenje.Gimnastika)) { if (s != Sprava.Preskok) { rezultatiSprave.Add(ActiveTakmicenje.getPoredakSprava(deoTakKod, s).getRezultati()); } else { rezultatiPreskok = ActiveTakmicenje.getPoredakPreskok(deoTakKod).getRezultati(); } } p.setIzvestaj(new SpravaIzvestaj(rezultatiSprave, rezultatiPreskok, obaPreskoka, ActiveTakmicenje.Gimnastika, kvalColumnVisible(), documentName, form.BrojSpravaPoStrani, form.PrikaziPenalSprave, spravaGridUserControl1.DataGridViewUserControl.DataGridView, /*markFirstRows*/ false, /*numRowsToMark*/ 0)); } else { if (ActiveSprava != Sprava.Preskok) { // TODO3: Implementiraj oznacavanje osvajaca medalja i za ostale izvestaje (gde treba). // Takodje, uvedi odgovarajucu opciju u dijalogu za stampanje. List <RezultatSprava> rezultati = ActiveTakmicenje.getPoredakSprava(deoTakKod, ActiveSprava).getRezultati(); p.setIzvestaj(new SpravaIzvestaj(ActiveSprava, rezultati, kvalColumnVisible(), documentName, form.PrikaziPenalSprave, spravaGridUserControl1.DataGridViewUserControl.DataGridView, /*markFirstRows*/ !kvalColumnVisible(), /*numRowsToMark*/ getNumMedalists(rezultati))); } else { List <RezultatPreskok> rezultati = ActiveTakmicenje.getPoredakPreskok(deoTakKod).getRezultati(); p.setIzvestaj(new SpravaIzvestaj(obaPreskoka, rezultati, kvalColumnVisible(), documentName, form.PrikaziPenalSprave, spravaGridUserControl1.DataGridViewUserControl.DataGridView, /*markFirstRows*/ !kvalColumnVisible(), /*numRowsToMark*/ getNumMedalists(rezultati))); } } p.ShowDialog(); // TODO2: U izvestajima za spravu treba da bude i penalizacija, a // slika sprave treba da bude iznad izvestaja. Naziv kolone total // treba da bude "Total" (ili "Ukupno"). // TODO2: U izvestajima treba da postoji i linija za organizatora // takmicenja (recimo Gimnasticki savez srbije), i treba da bude // prva (u vrhu papira) // TODO2: Uvedi opciju da li se zeli stampanje izvestaja sa ili bez // linija } catch (Exception ex) { MessageDialogs.showError(ex.Message, this.Text); } finally { Cursor.Hide(); Cursor.Current = Cursors.Arrow; } }
private void btnStampajKvalifikante_Click(object sender, EventArgs e) { string nazivIzvestaja = "Finale po spravama - kvalifikanti i rezerve"; HeaderFooterForm form = new HeaderFooterForm(deoTakKod, false, true, false, false, false, false, false); if (!Opcije.Instance.HeaderFooterInitialized) { FormUtil.initHeaderFooterFormFromOpcije(form); string mestoDatum = takmicenje.Mesto + " " + takmicenje.Datum.ToShortDateString(); form.Header1Text = ActiveTakmicenje.TakmicenjeDescription.Naziv; form.Header2Text = mestoDatum; form.Header3Text = ActiveTakmicenje.Kategorija.Naziv; form.Header4Text = nazivIzvestaja; form.FooterText = mestoDatum; if (takmicenje.Gimnastika == Gimnastika.ZSG) { form.BrojSpravaPoStrani = 4; } else { form.BrojSpravaPoStrani = 6; } } else { FormUtil.initHeaderFooterFormFromOpcije(form); form.Header1Text = ActiveTakmicenje.TakmicenjeDescription.Naziv; form.Header3Text = ActiveTakmicenje.Kategorija.Naziv; form.Header4Text = nazivIzvestaja; } if (form.ShowDialog() != DialogResult.OK) { return; } FormUtil.initHeaderFooterFromForm(form); Opcije.Instance.HeaderFooterInitialized = true; Cursor.Current = Cursors.WaitCursor; Cursor.Show(); try { PreviewDialog p = new PreviewDialog(); string documentName; if (form.StampajSveSprave) { documentName = nazivIzvestaja + " - " + ActiveTakmicenje.Kategorija.Naziv; } else { documentName = nazivIzvestaja + " - " + Sprave.toString(ActiveSprava) + " - " + ActiveTakmicenje.Kategorija.Naziv; } bool obaPresk = ActiveTakmicenje.Propozicije.Tak1PreskokNaOsnovuObaPreskoka; if (form.StampajSveSprave) { List <List <RezultatSprava> > rezultatiSprave = new List <List <RezultatSprava> >(); List <RezultatPreskok> rezultatiPreskok = null; foreach (Sprava s in Sprave.getSprave(ActiveTakmicenje.Gimnastika)) { if (s != Sprava.Preskok) { rezultatiSprave.Add(ActiveTakmicenje.getPoredakSprava(deoTakKod, s).getKvalifikantiIRezerve()); } else { rezultatiPreskok = ActiveTakmicenje.getPoredakPreskok(deoTakKod).getKvalifikantiIRezerve(obaPresk); } } p.setIzvestaj(new KvalifikantiTak3Izvestaj(rezultatiSprave, rezultatiPreskok, obaPresk, takmicenje.Gimnastika, documentName, form.BrojSpravaPoStrani, spravaGridUserControl1.DataGridViewUserControl.DataGridView)); } else { if (ActiveSprava != Sprava.Preskok) { List <RezultatSprava> rezultati = ActiveTakmicenje.getPoredakSprava(deoTakKod, ActiveSprava).getKvalifikantiIRezerve(); p.setIzvestaj(new KvalifikantiTak3Izvestaj(rezultati, ActiveSprava, documentName, spravaGridUserControl1.DataGridViewUserControl.DataGridView)); } else { List <RezultatPreskok> rezultati = ActiveTakmicenje.getPoredakPreskok(deoTakKod).getKvalifikantiIRezerve(obaPresk); p.setIzvestaj(new KvalifikantiTak3Izvestaj(rezultati, obaPresk, documentName, spravaGridUserControl1.DataGridViewUserControl.DataGridView)); } } p.ShowDialog(); } catch (Exception ex) { MessageDialogs.showError(ex.Message, this.Text); } finally { Cursor.Hide(); Cursor.Current = Cursors.Arrow; } }
private void btnPrint_Click(object sender, EventArgs e) { string nazivIzvestaja = ActiveTakmicenje.getNazivIzvestajaSprava(DeoTakmicenjaKod.Takmicenje1, true, true); HeaderFooterForm form = new HeaderFooterForm(DeoTakmicenjaKod.Takmicenje1, false, true, false, false, false, false, false); if (!Opcije.Instance.HeaderFooterInitialized) { FormUtil.initHeaderFooterFormFromOpcije(form); string mestoDatum = takmicenje.Mesto + " " + takmicenje.Datum.ToShortDateString(); form.Header1Text = ActiveTakmicenje.TakmicenjeDescription.Naziv; form.Header2Text = mestoDatum; form.Header3Text = ActiveTakmicenje.Kategorija.Naziv; form.Header4Text = nazivIzvestaja; form.FooterText = mestoDatum; } else { FormUtil.initHeaderFooterFormFromOpcije(form); form.Header1Text = ActiveTakmicenje.TakmicenjeDescription.Naziv; form.Header3Text = ActiveTakmicenje.Kategorija.Naziv; form.Header4Text = nazivIzvestaja; } if (form.ShowDialog() != DialogResult.OK) { return; } FormUtil.initHeaderFooterFromForm(form); Opcije.Instance.HeaderFooterInitialized = true; Cursor.Current = Cursors.WaitCursor; Cursor.Show(); try { PreviewDialog p = new PreviewDialog(); string documentName; if (form.StampajSveSprave) { documentName = nazivIzvestaja + " - " + ActiveTakmicenje.Kategorija.Naziv; } else { documentName = nazivIzvestaja + " - " + Sprave.toString(ActiveSprava) + " - " + ActiveTakmicenje.Kategorija.Naziv; } if (form.StampajSveSprave) { List <List <RezultatSpravaFinaleKupa> > rezultatiSprave = new List <List <RezultatSpravaFinaleKupa> >(); foreach (Sprava s in Sprave.getSprave(ActiveTakmicenje.Gimnastika)) { rezultatiSprave.Add(ActiveTakmicenje.Takmicenje1.getPoredakSpravaFinaleKupa(s).getRezultati()); } p.setIzvestaj(new SpravaFinaleKupaIzvestaj(rezultatiSprave, ActiveTakmicenje.Gimnastika, kvalColumnVisible(), documentName, form.BrojSpravaPoStrani, spravaGridUserControl1.DataGridViewUserControl.DataGridView)); } else { List <RezultatSpravaFinaleKupa> rezultati = ActiveTakmicenje.Takmicenje1.getPoredakSpravaFinaleKupa(ActiveSprava).getRezultati(); p.setIzvestaj(new SpravaFinaleKupaIzvestaj(ActiveSprava, rezultati, kvalColumnVisible(), documentName, spravaGridUserControl1.DataGridViewUserControl.DataGridView)); } p.ShowDialog(); } catch (Exception ex) { MessageDialogs.showError(ex.Message, this.Text); } finally { Cursor.Hide(); Cursor.Current = Cursors.Arrow; } }
private void btnOK_Click(object sender, EventArgs e) { if (!rbtJednaSprava.Checked && !rbtDveSprave.Checked && !rbtTriSprave.Checked && !rbtCetiriSprave.Checked && !rbtSestSprava.Checked) { MessageDialogs.showMessage("Izaberite broj sprava koje se rotiraju.", this.Text); DialogResult = DialogResult.None; return; } if (getBrojSprava() < aktivneSpraveRot1.Count) { string msg = "Niste izabrali dovoljan broj sprava koje se rotiraju.\n\n" + "Broj sprava koje se rotiraju ne sme biti " + "manji od broja sprava za koje postoje start liste na rotaciji 1."; MessageDialogs.showMessage(msg, this.Text); DialogResult = DialogResult.None; return; } foreach (Panel p in getAktivniPaneli()) { if (getIzabraneSprave(p).Count != getBrojSprava()) { string msg; if (getBrojSprava() != 1) { msg = String.Format("Izaberite {0} sprave po rotaciji.", getBrojSprava()); } else { msg = String.Format("Izaberite jednu spravu po rotaciji."); } MessageDialogs.showMessage(msg, this.Text); DialogResult = DialogResult.None; return; } } if ((gimnastika == Gimnastika.MSG && getBrojSprava() != 6) || gimnastika == Gimnastika.ZSG && getBrojSprava() != 4) { List <Sprava> izabraneSprave = getSveIzabraneSprave(); foreach (Sprava s in Sprave.getSprave(gimnastika)) { if (izabraneSprave.IndexOf(s) == -1) { string msg = String.Format("Niste izabrali sve sprave."); MessageDialogs.showMessage(msg, this.Text); DialogResult = DialogResult.None; return; } } } this.aktivneSprave = new List <List <Sprava> >(); if (gimnastika == Gimnastika.MSG) { if (getBrojSprava() == 1) { this.aktivneSprave.Add(getIzabraneSprave(panel1)); this.aktivneSprave.Add(getIzabraneSprave(panel2)); this.aktivneSprave.Add(getIzabraneSprave(panel3)); this.aktivneSprave.Add(getIzabraneSprave(panel4)); this.aktivneSprave.Add(getIzabraneSprave(panel5)); this.aktivneSprave.Add(getIzabraneSprave(panel6)); } else if (getBrojSprava() == 2) { this.aktivneSprave.Add(getIzabraneSprave(panel1)); this.aktivneSprave.Add(getIzabraneSprave(panel1)); this.aktivneSprave.Add(getIzabraneSprave(panel2)); this.aktivneSprave.Add(getIzabraneSprave(panel2)); this.aktivneSprave.Add(getIzabraneSprave(panel3)); this.aktivneSprave.Add(getIzabraneSprave(panel3)); } else if (getBrojSprava() == 3) { this.aktivneSprave.Add(getIzabraneSprave(panel1)); this.aktivneSprave.Add(getIzabraneSprave(panel1)); this.aktivneSprave.Add(getIzabraneSprave(panel1)); this.aktivneSprave.Add(getIzabraneSprave(panel2)); this.aktivneSprave.Add(getIzabraneSprave(panel2)); this.aktivneSprave.Add(getIzabraneSprave(panel2)); } else if (getBrojSprava() == 6) { this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika))); this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika))); this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika))); this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika))); this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika))); this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika))); } } else { if (getBrojSprava() == 1) { this.aktivneSprave.Add(getIzabraneSprave(panel7)); this.aktivneSprave.Add(getIzabraneSprave(panel8)); this.aktivneSprave.Add(getIzabraneSprave(panel9)); this.aktivneSprave.Add(getIzabraneSprave(panel10)); } else if (getBrojSprava() == 2) { this.aktivneSprave.Add(getIzabraneSprave(panel7)); this.aktivneSprave.Add(getIzabraneSprave(panel7)); this.aktivneSprave.Add(getIzabraneSprave(panel8)); this.aktivneSprave.Add(getIzabraneSprave(panel8)); } else if (getBrojSprava() == 4) { this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika))); this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika))); this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika))); this.aktivneSprave.Add(new List <Sprava>(Sprave.getSprave(gimnastika))); } } // Proveri da li su sve sprave koje su aktivne u rotaciji 1 medju izabranim spravama za rotaciju 1. foreach (Sprava s in aktivneSpraveRot1) { if (this.aktivneSprave[0].IndexOf(s) == -1) { string msg = String.Format("Greska - na rotaciji 1 postoji start lista za spravu {0} koju " + "niste izabrali na rotaciji 1.", Sprave.toString(s)); MessageDialogs.showMessage(msg, "Greska"); this.aktivneSprave.Clear(); DialogResult = DialogResult.None; return; } } }
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); }