private void addCmd() { NacinIzboraGimnasticaraForm form2 = new NacinIzboraGimnasticaraForm(); if (form2.ShowDialog() != DialogResult.OK) { return; } List <GimnasticarUcesnik> selGimnasticari = new List <GimnasticarUcesnik>(); DialogResult dlgResult = DialogResult.None; SelectGimnasticariPrethTakmForm form3 = null; SelectGimnasticarForm form = null; if (form2.IzPrethodnogTakmicenja) { try { form3 = new SelectGimnasticariPrethTakmForm(takmicenje.Gimnastika, false); dlgResult = form3.ShowDialog(); } catch (InfrastructureException ex) { MessageDialogs.showError(ex.Message, this.Text); } if (dlgResult != DialogResult.OK || form3.SelectedGimnasticari.Count == 0) { return; } } else { try { form = new SelectGimnasticarForm(takmicenje.Gimnastika); dlgResult = form.ShowDialog(); } catch (InfrastructureException ex) { MessageDialogs.showError(ex.Message, this.Text); } if (dlgResult != DialogResult.OK || form.SelectedEntities.Count == 0) { return; } } bool added = false; List <GimnasticarUcesnik> okGimnasticari = new List <GimnasticarUcesnik>(); List <GimnasticarUcesnik> illegalGimnasticari = new List <GimnasticarUcesnik>(); ISession session = null; try { using (session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); if (form2.IzPrethodnogTakmicenja) { foreach (GimnasticarUcesnik g in form3.SelectedGimnasticari) { selGimnasticari.Add(GimnasticarUcesnikService.createGimnasticarUcesnik(g, ActiveKategorija)); } } else { foreach (Gimnasticar g in form.SelectedEntities) { selGimnasticari.Add(GimnasticarUcesnikService.createGimnasticarUcesnik(g, ActiveKategorija)); } } foreach (GimnasticarUcesnik g in selGimnasticari) { if (canAddGimnasticar(g, ActiveKategorija)) { okGimnasticari.Add(g); } else { illegalGimnasticari.Add(g); } } GimnasticarUcesnikDAO gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO(); foreach (GimnasticarUcesnik g in okGimnasticari) { gimUcesnikDAO.Add(g); } takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenje.Id); takmicenje.LastModified = DateTime.Now; session.Transaction.Commit(); added = true; } } catch (Exception ex) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } MessageDialogs.showMessage(ex.Message, this.Text); } finally { CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } if (!added) { Close(); return; } if (okGimnasticari.Count > 0) { List <GimnasticarUcesnik> activeGimnasticari = gimnasticari[tabControl1.SelectedIndex]; foreach (GimnasticarUcesnik g in okGimnasticari) { activeGimnasticari.Add(g); } setGimnasticari(activeGimnasticari); // NOTE: Ako je DataGridViewUserControl sortiran, tada metod setItems // (koga poziva metod setGimnasticari) osvezava prikaz (poziva // refreshItems). Ako nije sortiran, potrebno je eksplicitno osveziti // prikaz // Dodatni razlog zasto je potrebno osveziti prikaz je cinjenica da // se metod setItems poziva sa parametrom tipa List, a u tom slucaju // DataGridViewUserControl ne kreira novu listu za DataSource i nece // automatski osveziti prikaz. if (!getActiveDataGridViewUserControl().isSorted()) { getActiveDataGridViewUserControl().refreshItems(); } getActiveDataGridViewUserControl().setSelectedItem <GimnasticarUcesnik> (okGimnasticari[okGimnasticari.Count - 1]); updateGimnasticariCount(); } if (illegalGimnasticari.Count > 0) { string msg = "Sledeci gimnasticari vec postoje medju " + "prijavljenim gimansticarima: \n\n"; msg += StringUtil.getListString(illegalGimnasticari.ToArray()); MessageDialogs.showMessage(msg, this.Text); } }
private void addCmd() { NacinIzboraGimnasticaraForm form2 = new NacinIzboraGimnasticaraForm(); if (form2.ShowDialog() != DialogResult.OK) return; List<GimnasticarUcesnik> selGimnasticari = new List<GimnasticarUcesnik>(); DialogResult dlgResult = DialogResult.None; SelectGimnasticariPrethTakmForm form3 = null; SelectGimnasticarForm form = null; if (form2.IzPrethodnogTakmicenja) { try { form3 = new SelectGimnasticariPrethTakmForm(ActiveKategorija.Gimnastika, false); dlgResult = form3.ShowDialog(); } catch (InfrastructureException ex) { MessageDialogs.showError(ex.Message, this.Text); } if (dlgResult != DialogResult.OK || form3.SelectedGimnasticari.Count == 0) return; } else { try { form = new SelectGimnasticarForm(ActiveKategorija.Gimnastika); dlgResult = form.ShowDialog(); } catch (InfrastructureException ex) { MessageDialogs.showError(ex.Message, this.Text); } if (dlgResult != DialogResult.OK || form.SelectedEntities.Count == 0) return; } bool added = false; List<GimnasticarUcesnik> okGimnasticari = new List<GimnasticarUcesnik>(); List<GimnasticarUcesnik> illegalGimnasticari = new List<GimnasticarUcesnik>(); try { DataAccessProviderFactory factory = new DataAccessProviderFactory(); dataContext = factory.GetDataContext(); dataContext.BeginTransaction(); if (form2.IzPrethodnogTakmicenja) { foreach (GimnasticarUcesnik g in form3.SelectedGimnasticari) { selGimnasticari.Add(createGimnasticarUcesnik( g, ActiveKategorija)); } } else { foreach (Gimnasticar g in form.SelectedEntities) { selGimnasticari.Add(createGimnasticarUcesnik( g, ActiveKategorija)); } } foreach (GimnasticarUcesnik g in selGimnasticari) { //GimnasticarUcesnik gimnasticar = createGimnasticarUcesnik( // g, ActiveKategorija); if (canAddGimnasticar(g/*imnasticar*/, ActiveKategorija)) okGimnasticari.Add(g/*imnasticar*/); else illegalGimnasticari.Add(g); } foreach (GimnasticarUcesnik g in okGimnasticari) dataContext.Add(g); dataContext.Commit(); added = true; } catch (Exception ex) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); MessageDialogs.showMessage( Strings.getFullDatabaseAccessExceptionMessage(ex), this.Text); } finally { if (dataContext != null) dataContext.Dispose(); dataContext = null; } if (!added) { Close(); return; } if (okGimnasticari.Count > 0) { List<GimnasticarUcesnik> activeGimnasticari = gimnasticari[tabControl1.SelectedIndex]; foreach (GimnasticarUcesnik g in okGimnasticari) { activeGimnasticari.Add(g); } setGimnasticari(activeGimnasticari); // NOTE: Ako je DataGridViewUserControl sortiran, tada metod setItems // (koga poziva metod setGimnasticari) osvezava prikaz (poziva // refreshItems). Ako nije sortiran, potrebno je eksplicitno osveziti // prikaz // Dodatni razlog zasto je potrebno osveziti prikaz je cinjenica da // se metod setItems poziva sa parametrom tipa List, a u tom slucaju // DataGridViewUserControl ne kreira novu listu za DataSource i nece // automatski osveziti prikaz. if (!getActiveDataGridViewUserControl().isSorted()) getActiveDataGridViewUserControl().refreshItems(); getActiveDataGridViewUserControl().setSelectedItem<GimnasticarUcesnik> (okGimnasticari[okGimnasticari.Count - 1]); updateGimnasticariCount(); } if (illegalGimnasticari.Count > 0) { string msg = "Sledeci gimnasticari vec postoje medju " + "prijavljenim gimansticarima: \n\n"; msg += StringUtil.getListString(illegalGimnasticari.ToArray()); MessageDialogs.showMessage(msg, this.Text); } }