private bool deleteGimnasticar(GimnasticarUcesnik g) { if (!canDeleteGimnasticar(g)) return false; Cursor.Current = Cursors.WaitCursor; Cursor.Show(); try { DataAccessProviderFactory factory = new DataAccessProviderFactory(); dataContext = factory.GetDataContext(); dataContext.BeginTransaction(); dataContext.Attach(g, false); IList<RezultatskoTakmicenje> rezTakmicenja = loadRezTakmicenja(g); foreach (RezultatskoTakmicenje rezTak in rezTakmicenja) { rezTak.Takmicenje1.removeGimnasticar(g); // najpre ucitavam sprave na kojima je gimnasticar vezbao, da bih // azurirao samo te poretke. Inace bi se u metodu // Takmicenje1.gimnasticarDeleted ucitavali svi poretci (da bi se // proverilo u kojima se gimnasticar nalazi) i zatim bi se svi // ponovo snimali u bazu. IList sprave = loadVezbaneSpraveTak1(g); rezTak.Takmicenje1.gimnasticarDeleted(g, sprave, rezTak); dataContext.Save(rezTak.Takmicenje1); foreach (GimnasticarUcesnik g2 in rezTak.Takmicenje1.Gimnasticari) dataContext.Evict(g2); } dataContext.Delete(g); dataContext.Commit(); return true; } catch (Exception ex) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); MessageDialogs.showError( String.Format("{0} \n\n{1}", deleteErrorMessage(), ex.Message), this.Text); return false; } finally { if (dataContext != null) dataContext.Dispose(); dataContext = null; Cursor.Hide(); Cursor.Current = Cursors.Arrow; } }
private void btnAdd_Click(object sender, EventArgs e) { DialogResult dlgResult = DialogResult.None; SelectGimnasticarUcesnikForm form = null; try { form = new SelectGimnasticarUcesnikForm( ActiveRezTakmicenje.Takmicenje.Id, ActiveRezTakmicenje.Pol, ActiveRezTakmicenje.Kategorija); dlgResult = form.ShowDialog(); } catch (InfrastructureException ex) { MessageDialogs.showError(ex.Message, this.Text); return; } if (dlgResult != DialogResult.OK || form.SelectedEntities.Count == 0) return; Cursor.Current = Cursors.WaitCursor; Cursor.Show(); bool added = false; List<GimnasticarUcesnik> illegalGimnasticari = new List<GimnasticarUcesnik>(); try { DataAccessProviderFactory factory = new DataAccessProviderFactory(); dataContext = factory.GetDataContext(); dataContext.BeginTransaction(); dataContext.Attach(ActiveRezTakmicenje, false); foreach (GimnasticarUcesnik g in ActiveRezTakmicenje.Takmicenje1.Gimnasticari) dataContext.Attach(g, false); foreach (GimnasticarUcesnik g in form.SelectedEntities) { if (canAddGimnasticar(ActiveRezTakmicenje, g)) { ActiveRezTakmicenje.Takmicenje1.addGimnasticar(g); IList<Ocena> ocene = loadOceneTak1(g); ActiveRezTakmicenje.Takmicenje1 .gimnasticarAdded(g, ocene, ActiveRezTakmicenje); added = true; } else { illegalGimnasticari.Add(g); } } if (added) { dataContext.Save(ActiveRezTakmicenje.Takmicenje1); foreach (GimnasticarUcesnik g in ActiveRezTakmicenje.Takmicenje1.Gimnasticari) dataContext.Evict(g); dataContext.Commit(); } } catch (InfrastructureException ex) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); MessageDialogs.showError(ex.Message, this.Text); Close(); return; } catch (Exception ex) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); MessageDialogs.showMessage( Strings.getFullDatabaseAccessExceptionMessage(ex), this.Text); Close(); return; } finally { if (dataContext != null) dataContext.Dispose(); dataContext = null; Cursor.Hide(); Cursor.Current = Cursors.Arrow; } if (added) { setGimnasticari(ActiveRezTakmicenje.Takmicenje1.Gimnasticari); updateGimnasticariCount(); } if (illegalGimnasticari.Count > 0) { string msg = "Sledeci gimnasticari nisu dodati: \n\n"; msg += StringUtil.getListString(illegalGimnasticari.ToArray()); // MessageDialogs.showMessage(msg, this.Text); } }
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(); try { try { DataAccessProviderFactory factory = new DataAccessProviderFactory(); dataContext = factory.GetDataContext(); dataContext.BeginTransaction(); dataContext.Delete(ocena); IList<RezultatskoTakmicenje> rezTakmicenja = loadRezTakmicenja(ocena.Gimnasticar); foreach (RezultatskoTakmicenje rezTak in rezTakmicenja) { if (deoTakKod == DeoTakmicenjaKod.Takmicenje1) { rezTak.Takmicenje1.ocenaDeleted(ocena, rezTak); dataContext.Save(rezTak.Takmicenje1); } else if (deoTakKod == DeoTakmicenjaKod.Takmicenje2) { if (rezTak.Propozicije.OdvojenoTak2) { rezTak.Takmicenje2.ocenaDeleted(ocena, rezTak); dataContext.Save(rezTak.Takmicenje2); } } else if (deoTakKod == DeoTakmicenjaKod.Takmicenje3) { if (rezTak.Propozicije.OdvojenoTak3) { rezTak.Takmicenje3.ocenaDeleted(ocena, rezTak); dataContext.Save(rezTak.Takmicenje3); } } else if (deoTakKod == DeoTakmicenjaKod.Takmicenje4) { if (rezTak.Propozicije.OdvojenoTak4) { rezTak.Takmicenje4.ocenaDeleted(ocena, rezTak); dataContext.Save(rezTak.Takmicenje4); } } } foreach (RezultatskoTakmicenje rezTak in rezTakmicenja) { if (deoTakKod == DeoTakmicenjaKod.Takmicenje1) { foreach (GimnasticarUcesnik g in rezTak.Takmicenje1.Gimnasticari) dataContext.Evict(g); } else if (deoTakKod == DeoTakmicenjaKod.Takmicenje2) { foreach (UcesnikTakmicenja2 u in rezTak.Takmicenje2.Ucesnici) { if (dataContext.Contains(u.Gimnasticar)) dataContext.Evict(u.Gimnasticar); dataContext.Evict(u); } } else if (deoTakKod == DeoTakmicenjaKod.Takmicenje3) { foreach (UcesnikTakmicenja3 u in rezTak.Takmicenje3.Ucesnici) { if (dataContext.Contains(u.Gimnasticar)) dataContext.Evict(u.Gimnasticar); dataContext.Evict(u); } } } dataContext.Commit(); } catch (Exception ex) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); MessageDialogs.showError(Strings.getFullDatabaseAccessExceptionMessage(ex), this.Text); Close(); return; } finally { if (dataContext != null) dataContext.Dispose(); dataContext = null; } List<Ocena> activeOcene = ocene[calculateOceneKey(ActiveKategorija, ActiveSprava)]; activeOcene.Remove(ocena); setOcene(activeOcene); } finally { Cursor.Hide(); Cursor.Current = Cursors.Arrow; } }
private void btnDelete_Click(object sender, EventArgs e) { IList<GimnasticarUcesnik> selItems = getActiveDataGridViewUserControl() .getSelectedItems<GimnasticarUcesnik>(); if (selItems == null || selItems.Count == 0) return; bool delete; if (selItems.Count == 1) { delete = MessageDialogs.queryConfirmation( deleteConfirmationMessage(selItems[0]), this.Text); } else { delete = MessageDialogs.queryConfirmation( deleteConfirmationMessage(), this.Text); } if (!delete) return; Cursor.Current = Cursors.WaitCursor; Cursor.Show(); try { DataAccessProviderFactory factory = new DataAccessProviderFactory(); dataContext = factory.GetDataContext(); dataContext.BeginTransaction(); dataContext.Attach(ActiveRezTakmicenje, false); foreach (GimnasticarUcesnik g in ActiveRezTakmicenje.Takmicenje1.Gimnasticari) dataContext.Attach(g, false); foreach (GimnasticarUcesnik g in selItems) { ActiveRezTakmicenje.Takmicenje1.removeGimnasticar(g); // najpre ucitavam sprave na kojima je gimnasticar vezbao, da bih // azurirao samo te poretke. Inace bi se u metodu // Takmicenje1.gimnasticarDeleted ucitavali svi poretci (da bi se // proverilo u kojima se gimnasticar nalazi) i zatim bi se svi // ponovo snimali u bazu. IList sprave = loadVezbaneSpraveTak1(g); ActiveRezTakmicenje.Takmicenje1.gimnasticarDeleted(g, sprave, ActiveRezTakmicenje); } dataContext.Save(ActiveRezTakmicenje.Takmicenje1); foreach (GimnasticarUcesnik g in ActiveRezTakmicenje.Takmicenje1.Gimnasticari) dataContext.Evict(g); dataContext.Commit(); setGimnasticari(ActiveRezTakmicenje.Takmicenje1.Gimnasticari); updateGimnasticariCount(); } catch (Exception ex) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); MessageDialogs.showError( String.Format("{0} \n\n{1}", deleteErrorMessage(), ex.Message), this.Text); } finally { if (dataContext != null) dataContext.Dispose(); dataContext = null; Cursor.Hide(); Cursor.Current = Cursors.Arrow; } }