private void initTab(int i, TabPage tabPage, RezultatskoTakmicenje rezTakmicenje) { DataGridViewUserControl dataGridViewUserControl = new DataGridViewUserControl(); dataGridViewUserControl.Anchor = this.dataGridViewUserControl1.Anchor; dataGridViewUserControl.Location = this.dataGridViewUserControl1.Location; dataGridViewUserControl.Size = this.dataGridViewUserControl1.Size; dataGridViewUserControl.TabIndex = this.dataGridViewUserControl1.TabIndex; GridColumnsInitializer.initGimnasticarUcesnik(dataGridViewUserControl); dataGridViewUserControl.GridColumnHeaderMouseClick += new EventHandler <GridColumnHeaderMouseClickEventArgs>(dataGridViewUserControl_GridColumnHeaderMouseClick); dataGridViewUserControl.DataGridView.MouseUp += DataGridView_MouseUp; tabPage.SuspendLayout(); // NOTE: ovo je obavezno, jer bez toga naredba // tabPage.Controls.Add(dataGridViewUserControl) pozicionira // user controlu unutar taba pre nego sto je zavrsena inicijalizacija // taba, i kao rezultat se dobija pogresna pozicija tabPage.Controls.Add(dataGridViewUserControl); tabPage.Location = this.tabPage1.Location; tabPage.Padding = this.tabPage1.Padding; tabPage.Size = this.tabPage1.Size; tabPage.TabIndex = i; tabPage.Text = rezTakmicenje.Naziv; tabPage.UseVisualStyleBackColor = this.tabPage1.UseVisualStyleBackColor; tabPage.ResumeLayout(false); }
public static void updateEkipa(Ekipa ekipa, RezultatskoTakmicenje rezTakmicenje) { RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); rezultatskoTakmicenjeDAO.Attach(rezTakmicenje, false); foreach (Ekipa e in rezTakmicenje.Takmicenje1.Ekipe) { if (e.Equals(ekipa)) { continue; } foreach (GimnasticarUcesnik g in ekipa.Gimnasticari) { if (e.Gimnasticari.Contains(g)) { throw new BusinessException(String.Format(Strings.GIMNASTICAR_JE_CLAN_DRUGE_EKIPE_ERROR_MSG, g.ImeSrednjeImePrezime, e.Naziv)); } } } DAOFactoryFactory.DAOFactory.GetEkipaDAO().Update(ekipa); rezTakmicenje.Takmicenje1.updateRezultatiOnEkipaUpdated(ekipa, rezTakmicenje, findRezultatiUkupnoForEkipa(rezTakmicenje.Takmicenje.Id, ekipa)); DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO().Update(rezTakmicenje.Takmicenje1); }
private Takmicenje insertTakmicenje() { Takmicenje takmicenje = new Takmicenje(); takmicenje.Naziv = "3rd European Artistic Gymnastics Individual Championships"; takmicenje.Datum = DateTime.Parse("02.04.2009"); takmicenje.Mesto = "Milano"; takmicenje.Gimnastika = gimnastika; takmicenje.BrojDecimalaD = 3; takmicenje.BrojDecimalaE1 = 2; takmicenje.BrojDecimalaE = 3; takmicenje.BrojDecimalaPen = 1; takmicenje.BrojDecimalaTotal = 3; takmicenje.ZavrsenoTak1 = true; string naziv = (gimnastika == Gimnastika.MSG) ? "Seniori" : "Seniorke"; TakmicarskaKategorija takKategorija = new TakmicarskaKategorija(naziv); RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription(); desc.Naziv = "European Championships"; desc.Propozicije = createPropozicije(); takmicenje.addKategorija(takKategorija); takmicenje.addTakmicenjeDescription(desc); DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().Add(takmicenje); RezultatskoTakmicenje rezTak = new RezultatskoTakmicenje(takmicenje, takKategorija, desc, createPropozicije()); DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO().Add(rezTak); return(takmicenje); }
private void initUI(RezultatskoTakmicenje startRezTakmicenje) { Text = "Rezultati - " + DeoTakmicenjaKodovi.toString(deoTakKod); this.ClientSize = new Size(1100, 540); cmbTakmicenje.DropDownStyle = ComboBoxStyle.DropDownList; cmbTakmicenje.DataSource = rezTakmicenja; cmbTakmicenje.DisplayMember = "Naziv"; cmbTakmicenje.SelectedIndex = 0; if (startRezTakmicenje != null) { ActiveTakmicenje = startRezTakmicenje; } cmbTakmicenje.SelectedIndexChanged += new EventHandler(cmbTakmicenje_SelectedIndexChanged); dataGridViewUserControl1.DataGridView.MouseUp += new MouseEventHandler(DataGridView_MouseUp); dataGridViewUserControl1.GridColumnHeaderMouseClick += new EventHandler <GridColumnHeaderMouseClickEventArgs>(DataGridViewUserControl_GridColumnHeaderMouseClick); if (forViewingOnly) { btnPrint.Enabled = btnPrint.Visible = false; btnIzracunaj.Enabled = btnIzracunaj.Visible = false; prikaziKlubToolStripMenuItem.Enabled = false; prikaziDrzavuToolStripMenuItem.Enabled = false; btnStampajKvalifikante.Enabled = btnStampajKvalifikante.Visible = false; btnStampajSaOgranicenjem.Enabled = btnStampajSaOgranicenjem.Visible = false; } }
private void initUI(RezultatskoTakmicenje startRezTakmicenje) { Text = "I i II Kolo - rezultati sprave"; this.ClientSize = new Size(930, 540); cmbTakmicenje.DropDownStyle = ComboBoxStyle.DropDownList; cmbTakmicenje.DataSource = rezTakmicenja; cmbTakmicenje.DisplayMember = "Naziv"; cmbTakmicenje.SelectedIndex = 0; if (startRezTakmicenje != null) { ActiveTakmicenje = startRezTakmicenje; } cmbTakmicenje.SelectedIndexChanged += new EventHandler(cmbTakmicenje_SelectedIndexChanged); cmbSprava.DropDownStyle = ComboBoxStyle.DropDownList; List <string> sprave = new List <string>(Sprave.getSpraveNazivi(rezTakmicenja[0].Gimnastika)); cmbSprava.Items.AddRange(sprave.ToArray()); cmbSprava.SelectedIndex = 0; cmbSprava.SelectedIndexChanged += new EventHandler(cmbSprava_SelectedIndexChanged); spravaGridUserControl1.DataGridViewUserControl.GridColumnHeaderMouseClick += new EventHandler <GridColumnHeaderMouseClickEventArgs>(DataGridViewUserControl_GridColumnHeaderMouseClick); spravaGridUserControl1.SpravaGridMouseUp += new EventHandler <SpravaGridMouseUpEventArgs>(spravaGridUserControl1_SpravaGridMouseUp); spravaGridUserControl1.DataGridViewUserControl.DataGridView.MultiSelect = true; if (forViewingOnly) { btnPrint.Enabled = btnPrint.Visible = false; btnIzracunaj.Enabled = btnIzracunaj.Visible = false; } }
private void btnOk_Click(object sender, EventArgs e) { int selItemsCount; if (ActiveSprava != Sprava.Preskok) { selItemsCount = spravaGridUserControl1.DataGridViewUserControl.getSelectedItems <RezultatSprava>().Count; } else { selItemsCount = spravaGridUserControl1.DataGridViewUserControl.getSelectedItems <RezultatPreskok>().Count; } if (selItemsCount != 1) { DialogResult = DialogResult.None; return; } SelectedTakmicenje = ActiveTakmicenje; SelectedSprava = ActiveSprava; if (ActiveSprava != Sprava.Preskok) { SelectedResult = spravaGridUserControl1.DataGridViewUserControl.getSelectedItem <RezultatSprava>(); } else { SelectedResult = spravaGridUserControl1.DataGridViewUserControl.getSelectedItem <RezultatPreskok>(); } }
private RezultatskoTakmicenje createRezultatskoTakmicenje(Takmicenje takmicenje, TakmicarskaKategorija k, RezultatskoTakmicenjeDescription d, int redBroj) { RezultatskoTakmicenje result = new RezultatskoTakmicenje(takmicenje, k, d, new Propozicije()); result.RedBroj = (byte)redBroj; return(result); }
protected override void updateEntity(DomainObject entity) { RezultatskoTakmicenjeDescription desc = (RezultatskoTakmicenjeDescription)entity; DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDescriptionDAO().Update(desc); Takmicenje takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenjeId); RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); IList <RezultatskoTakmicenje> rezTakmicenja = rezTakDAO.FindByTakmicenje(takmicenjeId); TakmicarskaKategorijaDAO takKatDAO = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO(); IList <RezultatskoTakmicenje> istaRezTakmicenja = new List <RezultatskoTakmicenje>(); IList <RezultatskoTakmicenje> vecaRezTakmicenja = new List <RezultatskoTakmicenje>(); int redBroj = 0; foreach (RezultatskoTakmicenje rt in rezTakmicenja) { if (rt.TakmicenjeDescription.RedBroj < desc.RedBroj) { if (rt.RedBroj > redBroj) { redBroj = rt.RedBroj; } } else if (rt.TakmicenjeDescription.RedBroj > desc.RedBroj) { vecaRezTakmicenja.Add(rt); } } foreach (TakmicarskaKategorija k in sveKategorije) { if (SelKategorije.Contains(k) && oldKategorije.Contains(k)) { RezultatskoTakmicenje rt = rezTakDAO.FindByKatDesc(k, desc); rt.RedBroj = (byte)++redBroj; rezTakDAO.Update(rt); } else if (SelKategorije.Contains(k) && !oldKategorije.Contains(k)) { takKatDAO.Attach(k, false); rezTakDAO.Add(createRezultatskoTakmicenje(takmicenje, k, desc, ++redBroj)); } else if (!SelKategorije.Contains(k) && oldKategorije.Contains(k)) { RezultatskoTakmicenje rt = rezTakDAO.FindByKatDesc(k, desc); rezTakDAO.Delete(rt); } } foreach (RezultatskoTakmicenje rt in vecaRezTakmicenja) { rt.RedBroj = (byte)++redBroj; rezTakDAO.Update(rt); } }
private void insertRezultatiSprava(DeoTakmicenjaKod deoTakKod, Takmicenje takmicenje) { TakmicarskaKategorija seniori = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO() .FindByTakmicenje(takmicenje.Id)[0]; RezultatskoTakmicenje rezTak = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO() .FindByKategorija(seniori)[0]; IList <Ocena> ocene = DAOFactoryFactory.DAOFactory.GetOcenaDAO() .FindByDeoTakmicenja(takmicenje.Id, deoTakKod); if (deoTakKod == DeoTakmicenjaKod.Takmicenje1) { foreach (PoredakSprava p in rezTak.Takmicenje1.PoredakSprava) { p.create(rezTak, ocene); } rezTak.Takmicenje1.PoredakPreskok.create(rezTak, ocene); rezTak.Takmicenje3.createUcesnici(rezTak.Takmicenje1, rezTak.Propozicije.Tak1PreskokNaOsnovuObaPreskoka); GimnasticarUcesnikDAO gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO(); if (gimnastika == Gimnastika.MSG) { /*GimnasticarUcesnik KHOROKHORDINSergei = gimUcesnikDAO.FindByTakmicenjeTakBroj(takmicenje, 628); * GimnasticarUcesnik WAMMESJeffrey = gimUcesnikDAO.FindByTakmicenjeTakBroj(takmicenje, 600); * * UcesnikTakmicenja3 ucesnikKHOROKHORDINSergei = * rezTak.Takmicenje3.getUcesnikKvalifikant(KHOROKHORDINSergei, Sprava.Vratilo); * * rezTak.Takmicenje3.removeUcesnik(ucesnikKHOROKHORDINSergei); * rezTak.Takmicenje3.addUcesnik( * new UcesnikTakmicenja3(WAMMESJeffrey, Sprava.Vratilo, 8, 14.600f, 8, * KvalifikacioniStatus.Q)); * * DAOFactoryFactory.DAOFactory.GetUcesnikTakmicenja3DAO().Delete(ucesnikKHOROKHORDINSergei);*/ } } else { foreach (PoredakSprava p in rezTak.Takmicenje3.Poredak) { p.create(rezTak, ocene); } rezTak.Takmicenje3.PoredakPreskok.create(rezTak, ocene); } if (deoTakKod == DeoTakmicenjaKod.Takmicenje1) { DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO().Update(rezTak.Takmicenje1); DAOFactoryFactory.DAOFactory.GetTakmicenje3DAO().Update(rezTak.Takmicenje3); } else { DAOFactoryFactory.DAOFactory.GetTakmicenje3DAO().Update(rezTak.Takmicenje3); } }
public KvalifikantiTak3EditorForm(int takmicenjeId, int rezTakmicenjeId, Sprava sprava) { InitializeComponent(); this.sprava = sprava; ISession session = null; try { using (session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); rezTakmicenje = loadRezTakmicenje(rezTakmicenjeId); if (rezTakmicenje == null) { throw new BusinessException("Greska u programu."); } takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenjeId); NHibernateUtil.Initialize(takmicenje); initUI(); } } catch (BusinessException) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } throw; } catch (InfrastructureException) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } throw; } catch (Exception ex) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } throw new InfrastructureException(ex.Message, ex); } finally { CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } }
private void insertRezultatiUkupno(DeoTakmicenjaKod deoTakKod, Takmicenje takmicenje) { TakmicarskaKategorija seniori = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO() .FindByTakmicenje(takmicenje.Id)[0]; RezultatskoTakmicenje rezTak = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO() .FindByKategorija(seniori)[0]; IList <Ocena> ocene = DAOFactoryFactory.DAOFactory.GetOcenaDAO().FindByDeoTakmicenja(takmicenje.Id, deoTakKod); GimnasticarUcesnikDAO gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO(); if (deoTakKod == DeoTakmicenjaKod.Takmicenje1) { rezTak.Takmicenje1.PoredakUkupno.create(rezTak, ocene); rezTak.Takmicenje2.createUcesnici(rezTak.Takmicenje1); if (gimnastika == Gimnastika.ZSG) { /*GimnasticarUcesnik GORYUNOVAKristina = gimUcesnikDAO.FindByTakmicenjeTakBroj(takmicenje, 172); * GimnasticarUcesnik AFANASEVAKsenia = gimUcesnikDAO.FindByTakmicenjeTakBroj(takmicenje, 170); * * UcesnikTakmicenja2 ucesnikGORYUNOVAKristina = * rezTak.Takmicenje2.getUcesnikKvalifikant(GORYUNOVAKristina); * * rezTak.Takmicenje2.removeUcesnik(ucesnikGORYUNOVAKristina); * rezTak.Takmicenje2.addUcesnik( * new UcesnikTakmicenja2(AFANASEVAKsenia, 19, 54.575f, 20, * KvalifikacioniStatus.Q)); * * // NOTE: Primetiti da moram eksplicitno da obrisem izbacenog * // ucesnika, bez obzira sto je cascade="all-delete-orphan" * // za asocijaciju UcesnikTakmicenja2. Za razliku od ovoga, u * // klasi MainForm u metodu zavisiTakmicenje1 (koji pri kreiranju * // novih ucesnika najpre obrise stare ucesnike) nije neophodno da * // se brisu stari ucesnici, tj. bice automatski izbrisani. * // Ispitati zasto se desava razlicito ponasanje * * DAOFactoryFactory.DAOFactory.GetUcesnikTakmicenja2DAO().Delete(ucesnikGORYUNOVAKristina);*/ } } else { rezTak.Takmicenje2.Poredak.create(rezTak, ocene); } if (deoTakKod == DeoTakmicenjaKod.Takmicenje1) { DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO().Update(rezTak.Takmicenje1); DAOFactoryFactory.DAOFactory.GetTakmicenje2DAO().Update(rezTak.Takmicenje2); } else { DAOFactoryFactory.DAOFactory.GetTakmicenje2DAO().Update(rezTak.Takmicenje2); } }
protected override void loadData() { // NOTE: Iako se prvo ucitava ekipa (tj. entity) pa tek onda rezTakmicenje, // objekat ekipe se nalazi unutar kolekcije Takmicenje1.Ekipe objekta // rezTakmicenje jer se sve obavlja unutar iste sesije. To znaci da u edit // modu rezTakmicenje "vidi" sve promene na ekipi. rezTakmicenje = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO().FindByIdFetch_Ekipe(rezTakmicenjeId); klubovi = new List <KlubUcesnik>( DAOFactoryFactory.DAOFactory.GetKlubUcesnikDAO().FindByTakmicenje(rezTakmicenje.Takmicenje.Id)); drzave = new List <DrzavaUcesnik>( DAOFactoryFactory.DAOFactory.GetDrzavaUcesnikDAO().FindByTakmicenje(rezTakmicenje.Takmicenje.Id)); }
private RezultatskoTakmicenje loadRezTakmicenje(int id) { RezultatskoTakmicenje result = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO() .FindByIdFetch_Tak1_Gimnasticari_PoredakEkipno(id); if (result != null) { NHibernateUtil.Initialize(result.Propozicije); NHibernateUtil.Initialize(result.Takmicenje1.PoredakEkipno.Rezultati); } return(result); }
public static void deleteEkipaFromRezTak(Ekipa e, RezultatskoTakmicenje rezTak) { DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO().Attach(rezTak, false); EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO(); ekipaDAO.Attach(e, false); rezTak.Takmicenje1.removeEkipa(e); rezTak.Takmicenje1.updateRezultatiOnEkipaDeleted(e, rezTak); ekipaDAO.Delete(e); DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO().Update(rezTak.Takmicenje1); }
private RezultatskoTakmicenje loadRezTakmicenje(int rezTakmicenjeId) { RezultatskoTakmicenje result = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO().FindByIdFetchTakmicenje3(rezTakmicenjeId); if (result != null) { NHibernateUtil.Initialize(result.Propozicije); foreach (PoredakSprava p in result.Takmicenje3.Poredak) { NHibernateUtil.Initialize(p.Rezultati); } NHibernateUtil.Initialize(result.Takmicenje3.PoredakPreskok.Rezultati); } return(result); }
private void initTab(int i, TabPage tabPage, RezultatskoTakmicenje rezTakmicenje) { EkipeUserControl ekipeUserControl = new EkipeUserControl(); ekipeUserControl.Anchor = this.ekipeUserControl1.Anchor; ekipeUserControl.Location = this.ekipeUserControl1.Location; ekipeUserControl.Size = this.ekipeUserControl1.Size; ekipeUserControl.TabIndex = this.ekipeUserControl1.TabIndex; ekipeUserControl.EkipeDataGridViewUserControl.DataGridView.CellMouseClick += new DataGridViewCellMouseEventHandler(DataGridView_CellMouseClick); ekipeUserControl.EkipeDataGridViewUserControl.DataGridView.MultiSelect = false; ekipeUserControl.ClanoviDataGridViewUserControl.DataGridView.MultiSelect = false; tabPage.SuspendLayout(); tabPage.Controls.Add(ekipeUserControl); tabPage.Location = this.tabPage1.Location; tabPage.Padding = this.tabPage1.Padding; tabPage.Size = this.tabPage1.Size; tabPage.TabIndex = i; tabPage.Text = rezTakmicenje.NazivEkipnog; tabPage.UseVisualStyleBackColor = this.tabPage1.UseVisualStyleBackColor; tabPage.ResumeLayout(false); }
private void initUI(RezultatskoTakmicenje startRezTakmicenje, bool forViewingOnly) { Text = "I i II Kolo - rezultati viseboj"; this.ClientSize = new Size(ClientSize.Width, 540); cmbTakmicenje.DropDownStyle = ComboBoxStyle.DropDownList; cmbTakmicenje.DataSource = rezTakmicenja; cmbTakmicenje.DisplayMember = "Naziv"; cmbTakmicenje.SelectedIndex = 0; if (startRezTakmicenje != null) { ActiveTakmicenje = startRezTakmicenje; } cmbTakmicenje.SelectedIndexChanged += new EventHandler(cmbTakmicenje_SelectedIndexChanged); dataGridViewUserControl1.GridColumnHeaderMouseClick += new EventHandler <GridColumnHeaderMouseClickEventArgs>(DataGridViewUserControl_GridColumnHeaderMouseClick); if (forViewingOnly) { btnPrint.Enabled = btnPrint.Visible = false; btnIzracunaj.Enabled = btnIzracunaj.Visible = false; } }
public static void createFromPrevTakmicenje(Takmicenje takmicenje, Takmicenje from, IList <RezultatskoTakmicenje> rezTakmicenjaFrom, IDictionary <int, List <GimnasticarUcesnik> > rezTakToGimnasticarUcesnikMap) { const int MAX = 1024; TakmicarskaKategorija[] kategorije = new TakmicarskaKategorija[MAX]; for (int i = 0; i < MAX; ++i) { kategorije[i] = null; } foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom) { if (kategorije[rtFrom.Kategorija.RedBroj] == null) { kategorije[rtFrom.Kategorija.RedBroj] = new TakmicarskaKategorija(rtFrom.Kategorija.Naziv); } } PropozicijeDAO propozicijeDAO = DAOFactoryFactory.DAOFactory.GetPropozicijeDAO(); foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom) { propozicijeDAO.Attach(rtFrom.TakmicenjeDescription.Propozicije, false); propozicijeDAO.Attach(rtFrom.Propozicije, false); } RezultatskoTakmicenjeDescription[] descriptions = new RezultatskoTakmicenjeDescription[MAX]; for (int i = 0; i < MAX; ++i) { descriptions[i] = null; } foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom) { if (descriptions[rtFrom.TakmicenjeDescription.RedBroj] == null) { RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription(); desc.Naziv = rtFrom.TakmicenjeDescription.Naziv; desc.Propozicije = new Propozicije(); // Apdejtujem jedino propozicije za takmicenje 4 zbog kombinovanog ekipnog takmicenja. // Ostale propozicije su na inicijalnim vrednostima. rtFrom.TakmicenjeDescription.Propozicije.copyTakmicenje4To(desc.Propozicije); descriptions[rtFrom.TakmicenjeDescription.RedBroj] = desc; } } takmicenje.Kategorije.Clear(); for (int i = 0; i < MAX; ++i) { if (kategorije[i] != null) { takmicenje.addKategorija(kategorije[i]); } } takmicenje.TakmicenjeDescriptions.Clear(); bool first = true; for (int i = 0; i < MAX; ++i) { if (descriptions[i] != null) { if (first) { // prvi description je uvek kao naziv takmicenja. RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription(); desc.Naziv = takmicenje.Naziv; desc.Propozicije = descriptions[i].Propozicije; // klonirane propozicije descriptions[i] = desc; first = false; } takmicenje.addTakmicenjeDescription(descriptions[i]); } } IList <RezultatskoTakmicenje> rezTakmicenja = new List <RezultatskoTakmicenje>(); foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom) { RezultatskoTakmicenje rt = new RezultatskoTakmicenje(takmicenje, kategorije[rtFrom.Kategorija.RedBroj], descriptions[rtFrom.TakmicenjeDescription.RedBroj], new Propozicije()); rtFrom.Propozicije.copyTakmicenje4To(rt.Propozicije); rezTakmicenja.Add(rt); } foreach (RezultatskoTakmicenjeDescription d in takmicenje.TakmicenjeDescriptions) { RezultatskoTakmicenje.updateImaEkipnoTakmicenje(rezTakmicenja, d); } TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); takmicenjeDAO.Add(takmicenje); IDictionary <int, GimnasticarUcesnik> gimnasticariMap = new Dictionary <int, GimnasticarUcesnik>(); for (int i = 0; i < rezTakmicenja.Count; ++i) { RezultatskoTakmicenje rt = rezTakmicenja[i]; RezultatskoTakmicenje rtFrom = rezTakmicenjaFrom[i]; foreach (GimnasticarUcesnik g in rezTakToGimnasticarUcesnikMap[rtFrom.Id]) { GimnasticarUcesnik g2; if (!gimnasticariMap.ContainsKey(g.Id)) { g2 = GimnasticarUcesnikService.createGimnasticarUcesnik(g, kategorije[g.TakmicarskaKategorija.RedBroj]); gimnasticariMap[g.Id] = g2; } else { g2 = gimnasticariMap[g.Id]; } rt.Takmicenje1.addGimnasticar(g2); rt.Takmicenje1.updateRezultatiOnGimnasticarAdded(g2, new List <Ocena>(), rt); } } Takmicenje1DAO takmicenje1DAO = DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO(); for (int i = 0; i < rezTakmicenja.Count; ++i) { RezultatskoTakmicenje rt = rezTakmicenja[i]; RezultatskoTakmicenje rtFrom = rezTakmicenjaFrom[i]; takmicenje1DAO.Attach(rtFrom.Takmicenje1, false); foreach (Ekipa e in rtFrom.Takmicenje1.Ekipe) { Ekipa ekipa = new Ekipa(); ekipa.Naziv = e.Naziv; ekipa.Kod = e.Kod; // Ne kopiram clanove ekipe zato sto dodavati clanove ekipe ima smisla jedino ako se znaju // rezultati, a ovaj metod samo pravi pripremu takmicenja i nema nikakvih rezultata. rt.Takmicenje1.addEkipa(ekipa, true); } } RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO(); foreach (RezultatskoTakmicenje rt in rezTakmicenja) { rezultatskoTakmicenjeDAO.Add(rt); foreach (Ekipa e in rt.Takmicenje1.Ekipe) { ekipaDAO.Add(e); } } GimnasticarUcesnikDAO gimnasticarUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO(); foreach (GimnasticarUcesnik g in gimnasticariMap.Values) { gimnasticarUcesnikDAO.Add(g); } }
private void loadFromDump(string dump) { IdMap map = new IdMap(); // clear takmicenje = new Takmicenje(); klubovi = new List <KlubUcesnik>(); drzave = new List <DrzavaUcesnik>(); gimnasticari = new List <GimnasticarUcesnik>(); ocene = new List <Ocena>(); rasporediNastupa = new List <RasporedNastupa>(); sudije = new List <SudijaUcesnik>(); rasporediSudija = new List <RasporedSudija>(); rezTakmicenja = new List <RezultatskoTakmicenje>(); using (StringReader reader = new StringReader(dump)) { if (reader.ReadLine() != BILTEN_TAKMICENJE_DUMP) { throw new Exception("Neuspesno ucitavanje takmicenja."); } if (int.Parse(reader.ReadLine()) != Program.VERZIJA_PROGRAMA) { throw new Exception("Neuspesno uvozenje takmicenja.\n\nTakmicenje je izvezeno koristeci verziju " + "programa razlicitu od trenutne, i nije ga moguce uvesti."); } int prvoKoloId, drugoKoloId, treceKoloId, cetvrtoKoloId; int vrhovniSudijaId; // load takmicenje string id = reader.ReadLine(); map.takmicenjeMap.Add(int.Parse(id), takmicenje); takmicenje.loadFromDump(reader, map, out prvoKoloId, out drugoKoloId, out treceKoloId, out cetvrtoKoloId, out vrhovniSudijaId); // TODO4: Ovde moze da se desi da ID koji je postojao u biltenu iz koga se takmicenje izvozilo ne postoji // u biltenu u koji se takmicenje uvozi. takmicenje.PrvoKolo = prvoKoloId == -1 ? null : DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(prvoKoloId); takmicenje.DrugoKolo = drugoKoloId == -1 ? null : DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(drugoKoloId); takmicenje.TreceKolo = treceKoloId == -1 ? null : DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(treceKoloId); takmicenje.CetvrtoKolo = cetvrtoKoloId == -1 ? null : DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(cetvrtoKoloId); // Vrhovnog sudiju ucitavam dole (nakon sto ucitam sve sudije ucesnike). // load klubovi int count = int.Parse(reader.ReadLine()); for (int i = 0; i < count; ++i) { id = reader.ReadLine(); KlubUcesnik k = new KlubUcesnik(); map.kluboviMap.Add(int.Parse(id), k); k.loadFromDump(reader, map); klubovi.Add(k); } // load drzave count = int.Parse(reader.ReadLine()); for (int i = 0; i < count; ++i) { id = reader.ReadLine(); DrzavaUcesnik d = new DrzavaUcesnik(); map.drzaveMap.Add(int.Parse(id), d); d.loadFromDump(reader, map); drzave.Add(d); } // load gimnasticari count = int.Parse(reader.ReadLine()); for (int i = 0; i < count; ++i) { id = reader.ReadLine(); GimnasticarUcesnik g = new GimnasticarUcesnik(); map.gimnasticariMap.Add(int.Parse(id), g); g.loadFromDump(reader, map); gimnasticari.Add(g); } // load ocene count = int.Parse(reader.ReadLine()); for (int i = 0; i < count; ++i) { id = reader.ReadLine(); Ocena o = new Ocena(); o.loadFromDump(reader, map); ocene.Add(o); } // load rasporedi nastupa count = int.Parse(reader.ReadLine()); for (int i = 0; i < count; ++i) { id = reader.ReadLine(); RasporedNastupa r = new RasporedNastupa(); r.loadFromDump(reader, map); rasporediNastupa.Add(r); } // load sudije count = int.Parse(reader.ReadLine()); for (int i = 0; i < count; ++i) { id = reader.ReadLine(); SudijaUcesnik s = new SudijaUcesnik(); map.sudijeMap.Add(int.Parse(id), s); s.loadFromDump(reader, map); sudije.Add(s); } takmicenje.VrhovniSudija = vrhovniSudijaId == -1 ? null : map.sudijeMap[vrhovniSudijaId]; // load rasporedi sudija count = int.Parse(reader.ReadLine()); for (int i = 0; i < count; ++i) { id = reader.ReadLine(); RasporedSudija r = new RasporedSudija(); r.loadFromDump(reader, map); rasporediSudija.Add(r); } // load rezultatska takmicenja count = int.Parse(reader.ReadLine()); for (int i = 0; i < count; ++i) { id = reader.ReadLine(); RezultatskoTakmicenje rt = new RezultatskoTakmicenje(); rt.loadFromDump(reader, map); rezTakmicenja.Add(rt); } } }
public RezultatiSpravaForm(int takmicenjeId, DeoTakmicenjaKod deoTakKod, int startRezTakmicenjeId, Sprava startSprava, bool forViewingOnly, bool select) { InitializeComponent(); this.deoTakKod = deoTakKod; this.forViewingOnly = forViewingOnly; this.select = select; Cursor.Current = Cursors.WaitCursor; Cursor.Show(); ISession session = null; try { using (session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenjeId); NHibernateUtil.Initialize(takmicenje); IList <RezultatskoTakmicenje> svaRezTakmicenja = loadRezTakmicenja(takmicenjeId); if (svaRezTakmicenja.Count == 0) { throw new BusinessException(Strings.NO_KATEGORIJE_I_TAKMICENJA_ERROR_MSG); } rezTakmicenja = takmicenje.getRezTakmicenjaSprava(svaRezTakmicenja, deoTakKod, false); if (rezTakmicenja.Count == 0) { throw new BusinessException("Ne postoji takmicenje III ni za jednu kategoriju."); } RezultatskoTakmicenje startRezTakmicenje = null; if (startRezTakmicenjeId != -1) { startRezTakmicenje = findRezTakmicenje(startRezTakmicenjeId, rezTakmicenja); if (startRezTakmicenje == null) { throw new BusinessException("Ne postoje rezultati sprave za dato takmicenje."); } } initUI(startRezTakmicenje, startSprava); } } catch (BusinessException) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } throw; } catch (InfrastructureException) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } throw; } catch (Exception ex) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } throw new InfrastructureException(ex.Message, ex); } finally { Cursor.Hide(); Cursor.Current = Cursors.Arrow; CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } }
private void btnEdit_Click(object sender, EventArgs e) { DialogResult dlgResult; KvalifikantiTak3EditorForm form; try { form = new KvalifikantiTak3EditorForm(takmicenje.Id, ActiveTakmicenje.Id, ActiveSprava); dlgResult = form.ShowDialog(); } catch (BusinessException ex) { MessageDialogs.showError(ex.Message, this.Text); return; } catch (InfrastructureException ex) { MessageDialogs.showError(ex.Message, this.Text); return; } if (dlgResult != DialogResult.OK) { return; } ISession session = null; try { using (session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); // ponovo ucitaj takmicenje RezultatskoTakmicenje rt = loadRezTakmicenje(ActiveTakmicenje.Id); int index; for (index = 0; index < rezTakmicenja.Count; index++) { if (rezTakmicenja[index].Id == rt.Id) { break; } } rezTakmicenja[index] = rt; } } catch (Exception ex) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } MessageDialogs.showMessage(Strings.getFullDatabaseAccessExceptionMessage(ex), this.Text); Close(); return; } finally { CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } CurrencyManager currencyManager = (CurrencyManager)this.BindingContext[cmbTakmicenje.DataSource]; currencyManager.Refresh(); refreshKvalifikantiIRezerve(); }
private void initUI(RezultatskoTakmicenje startRezTakmicenje, Sprava startSprava) { Text = "Rezultati - " + DeoTakmicenjaKodovi.toString(deoTakKod); this.ClientSize = new Size(ClientSize.Width, 540); cmbTakmicenje.DropDownStyle = ComboBoxStyle.DropDownList; cmbTakmicenje.DataSource = rezTakmicenja; cmbTakmicenje.DisplayMember = "Naziv"; cmbTakmicenje.SelectedIndex = 0; if (startRezTakmicenje != null) { ActiveTakmicenje = startRezTakmicenje; } cmbTakmicenje.SelectedIndexChanged += new EventHandler(cmbTakmicenje_SelectedIndexChanged); cmbSprava.DropDownStyle = ComboBoxStyle.DropDownList; List <string> sprave = new List <string>(Sprave.getSpraveNazivi(rezTakmicenja[0].Gimnastika)); cmbSprava.Items.AddRange(sprave.ToArray()); cmbSprava.SelectedIndex = 0; if (startSprava != Sprava.Undefined) { ActiveSprava = startSprava; } cmbSprava.SelectedIndexChanged += new EventHandler(cmbSprava_SelectedIndexChanged); spravaGridUserControl1.DataGridViewUserControl.GridColumnHeaderMouseClick += new EventHandler <GridColumnHeaderMouseClickEventArgs>(DataGridViewUserControl_GridColumnHeaderMouseClick); if (forViewingOnly) { spravaGridUserControl1.DataGridViewUserControl.DataGridView.MultiSelect = false; } else { spravaGridUserControl1.DataGridViewUserControl.DataGridView.MultiSelect = true; } spravaGridUserControl1.SpravaGridMouseUp += new EventHandler <SpravaGridMouseUpEventArgs>(spravaGridUserControl1_SpravaGridMouseUp); if (forViewingOnly) { btnOk.Enabled = select; btnOk.Visible = select; btnCancel.Enabled = select; btnCancel.Visible = select; btnClose.Enabled = !select; btnClose.Visible = !select; btnPrint.Enabled = btnPrint.Visible = false; btnIzracunaj.Enabled = btnIzracunaj.Visible = false; btnStampajKvalifikante.Enabled = btnStampajKvalifikante.Visible = false; if (!select) { btnClose.Location = new Point(btnCancel.Location.X, btnCancel.Location.Y); } prikaziKlubToolStripMenuItem.Enabled = false; prikaziDrzavuToolStripMenuItem.Enabled = false; } else { btnOk.Enabled = false; btnOk.Visible = false; btnCancel.Enabled = false; btnCancel.Visible = false; btnStampajKvalifikante.Location = new Point(550, btnClose.Location.Y); btnIzracunaj.Enabled = btnIzracunaj.Visible = true; btnIzracunaj.Location = new Point(btnStampajKvalifikante.Location.X + btnStampajKvalifikante.Size.Width + 20, btnCancel.Location.Y); btnClose.Enabled = true; btnClose.Visible = true; btnClose.Location = new Point(btnIzracunaj.Location.X + btnIzracunaj.Size.Width + 20, btnCancel.Location.Y); } }
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); RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); RezultatskoTakmicenje rezTak1 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari( takmicenje.PrvoKolo.Id, ActiveTakmicenje.Kategorija.Naziv, 0); RezultatskoTakmicenje rezTak2 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari( takmicenje.DrugoKolo.Id, ActiveTakmicenje.Kategorija.Naziv, 0); PoredakSpravaFinaleKupa p = ActiveTakmicenje.Takmicenje1.getPoredakSpravaFinaleKupa(ActiveSprava); p.create(ActiveTakmicenje, rezTak1, rezTak2); rezultatskoTakmicenjeDAO.Evict(rezTak1); rezultatskoTakmicenjeDAO.Evict(rezTak2); DAOFactoryFactory.DAOFactory.GetPoredakSpravaFinaleKupaDAO().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); } setItems(); }
private void btnIzracunaj_Click(object sender, EventArgs e) { string 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); RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); RezultatskoTakmicenje rezTak1 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe( takmicenje.PrvoKolo.Id, ActiveTakmicenje.Kategorija.Naziv, 0); RezultatskoTakmicenje rezTak2 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe( takmicenje.DrugoKolo.Id, ActiveTakmicenje.Kategorija.Naziv, 0); RezultatskoTakmicenje rezTak3 = null; if (takmicenje.TreceKolo != null) { rezTak3 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe( takmicenje.TreceKolo.Id, ActiveTakmicenje.Kategorija.Naziv, 0); } RezultatskoTakmicenje rezTak4 = null; if (takmicenje.CetvrtoKolo != null) { rezTak4 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe( takmicenje.CetvrtoKolo.Id, ActiveTakmicenje.Kategorija.Naziv, 0); } ActiveTakmicenje.Takmicenje1.PoredakEkipnoZbirViseKola.create(ActiveTakmicenje, rezTak1, rezTak2, rezTak3, rezTak4); rezultatskoTakmicenjeDAO.Evict(rezTak1); rezultatskoTakmicenjeDAO.Evict(rezTak2); if (rezTak3 != null) { rezultatskoTakmicenjeDAO.Evict(rezTak3); } if (rezTak4 != null) { rezultatskoTakmicenjeDAO.Evict(rezTak4); } DAOFactoryFactory.DAOFactory.GetPoredakEkipnoZbirViseKolaDAO() .Update(ActiveTakmicenje.Takmicenje1.PoredakEkipnoZbirViseKola); 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(); }
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); } }
private void insertGimnasticariAndDrzaveUcesniciAndAddRezTakmicenjaUcesnici(Takmicenje takmicenje) { TakmicarskaKategorija seniori = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().FindByTakmicenje(takmicenje.Id)[0]; RezultatskoTakmicenjeDAO rezTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); RezultatskoTakmicenje rezTak = rezTakmicenjeDAO.FindByKategorija(seniori)[0]; string fileName; if (gimnastika == Gimnastika.MSG) { fileName = @"..\..\test\Data\KvalifikantiMuskarci.txt"; } else { fileName = @"..\..\test\Data\KvalifikantiZene.txt"; } List <Drzava> drzave = new List <Drzava>(DAOFactoryFactory.DAOFactory.GetDrzavaDAO().FindAll()); List <DrzavaUcesnik> drzaveUcesnici = new List <DrzavaUcesnik>(); GimnasticariParser parser = new GimnasticariParser(); parser.parse(fileName); foreach (object[] o in parser.Gimnasticari) { int broj = (int)o[0]; string prezime = (string)o[1]; string ime = (string)o[2]; string kod = (string)o[3]; DateTime datumRodj = (DateTime)o[4]; GimnasticarUcesnik gimnasticarUcesnik = new GimnasticarUcesnik(); gimnasticarUcesnik.Ime = ime; gimnasticarUcesnik.Prezime = prezime; gimnasticarUcesnik.DatumRodjenja = new Datum(datumRodj); DrzavaUcesnik drzavaUcesnik = findDrzavaUcesnik(kod, drzaveUcesnici); if (drzavaUcesnik == null) { Drzava drzava = findDrzava(kod, drzave); drzavaUcesnik = new DrzavaUcesnik(); drzavaUcesnik.Naziv = drzava.Naziv; drzavaUcesnik.Kod = drzava.Kod; drzavaUcesnik.Takmicenje = takmicenje; drzaveUcesnici.Add(drzavaUcesnik); DAOFactoryFactory.DAOFactory.GetDrzavaUcesnikDAO().Add(drzavaUcesnik); } gimnasticarUcesnik.DrzavaUcesnik = drzavaUcesnik; gimnasticarUcesnik.TakmicarskaKategorija = seniori; gimnasticarUcesnik.NastupaZaDrzavu = true; DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO().Add(gimnasticarUcesnik); rezTak.Takmicenje1.addGimnasticar(gimnasticarUcesnik); } rezTakmicenjeDAO.Update(rezTak); }
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); } }
public static void kreirajNaOsnovuViseKola(Takmicenje takmicenje, IList <KeyValuePair <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > > razlicitaKola) { TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); takmicenjeDAO.Attach(takmicenje, false); List <Takmicenje> prethodnaKola = new List <Takmicenje>(); prethodnaKola.Add(takmicenje.PrvoKolo); prethodnaKola.Add(takmicenje.DrugoKolo); if (takmicenje.TreceKolo != null) { prethodnaKola.Add(takmicenje.TreceKolo); } if (takmicenje.CetvrtoKolo != null) { prethodnaKola.Add(takmicenje.CetvrtoKolo); } RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); List <IList <RezultatskoTakmicenje> > rezTakmicenjaPrethodnaKola = new List <IList <RezultatskoTakmicenje> >(); foreach (Takmicenje prethKolo in prethodnaKola) { rezTakmicenjaPrethodnaKola.Add(rezTakDAO.FindByTakmicenje(prethKolo.Id)); } takmicenje.Kategorije.Clear(); foreach (RezultatskoTakmicenje rt in rezTakmicenjaPrethodnaKola[0]) { // Implementiran je najjednostavniji slucaj, gde se u svakom od prethodnih kola gleda samo prvo // takmicenje, i uzimaju se samo one kategorije gde postoji poklapanje. U principu, mogla bi se // implementirati i slozenija varijanta gde bi se, u slucaju da ne postoji poklapanje medju kategorijama, // otvorio prozor gde bi mogle da se uparuju kategorije, ali onda bi morao da nekako pamtim // koja su uparivanja izabrana (da bi ih primenio kod apdejtovanja kada se npr. ocena iz nekog od // prethodnih kola promeni). if (rt.TakmicenjeDescription.RedBroj != 0) { continue; } bool ok = true; foreach (List <RezultatskoTakmicenje> rezTakList in rezTakmicenjaPrethodnaKola) { if (Takmicenje.getRezTakmicenje(rezTakList, 0, rt.Kategorija) == null) { ok = false; break; } } if (ok) { takmicenje.addKategorija(new TakmicarskaKategorija(rt.Kategorija.Naziv)); } } if (takmicenje.Kategorije.Count == 0) { throw new BusinessException("Kategorije iz prethodnih kola se ne poklapaju"); } // prvi description je uvek kao naziv takmicenja. takmicenje.TakmicenjeDescriptions.Clear(); RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription(); desc.Naziv = takmicenje.Naziv; desc.Propozicije = new Propozicije(true, takmicenje.FinaleKupa, true); takmicenje.addTakmicenjeDescription(desc); // Takmicenje dodajem ovako rano zato sto se takmicenje.Id koristi dole u createGimnasticarUcesnik takmicenjeDAO.Add(takmicenje); IList <RezultatskoTakmicenje> rezTakmicenja = new List <RezultatskoTakmicenje>(); foreach (TakmicarskaKategorija k in takmicenje.Kategorije) { Propozicije p = new Propozicije(true, takmicenje.FinaleKupa, true); RezultatskoTakmicenje rt = new RezultatskoTakmicenje(takmicenje, k, desc, p); rt.ImaEkipnoTakmicenje = true; rt.KombinovanoEkipnoTak = false; rezTakmicenja.Add(rt); } GimnasticarUcesnikDAO gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO(); EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO(); // Za svakog gimnasticara, zapamti u kojim kategorijama je ucestvovao u prethodnim kolima IDictionary <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > mapaUcestvovanja = new Dictionary <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > >(); IDictionary <TakmicarskaKategorija, RezultatskoTakmicenje> katToRezTakMap = new Dictionary <TakmicarskaKategorija, RezultatskoTakmicenje>(); foreach (RezultatskoTakmicenje rt in rezTakmicenja) { katToRezTakMap.Add(rt.Kategorija, rt); for (int i = 0; i < rezTakmicenjaPrethodnaKola.Count; ++i) { IList <RezultatskoTakmicenje> rezTakmicenjaPrethKolo = rezTakmicenjaPrethodnaKola[i]; RezultatskoTakmicenje rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija); Pair <int, TakmicarskaKategorija> koloKatPair = new Pair <int, TakmicarskaKategorija>(i, rt.Kategorija); foreach (GimnasticarUcesnik g in rtFrom.Takmicenje1.Gimnasticari) { if (!mapaUcestvovanja.ContainsKey(g)) { // Koriscenje IDictionary obezbedjuje da je svaki gimnasticar dodat u samo jednu kategoriju. GimnasticarUcesnik g2 = GimnasticarUcesnikService.createGimnasticarUcesnik(g, rt.Kategorija); IList <Pair <int, TakmicarskaKategorija> > pairList = new List <Pair <int, TakmicarskaKategorija> >(); pairList.Add(koloKatPair); mapaUcestvovanja.Add(g2, pairList); gimUcesnikDAO.Add(g2); } else { mapaUcestvovanja[g].Add(koloKatPair); } } } } foreach (KeyValuePair <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > entry in mapaUcestvovanja) { GimnasticarUcesnik g = entry.Key; TakmicarskaKategorija prevKat = null; bool ok = true; foreach (Pair <int, TakmicarskaKategorija> koloKatPair in entry.Value) { TakmicarskaKategorija kat = koloKatPair.Second; if (prevKat == null) { prevKat = kat; } else if (!kat.Equals(prevKat)) { ok = false; } RezultatskoTakmicenje rt = katToRezTakMap[kat]; rt.Takmicenje1.addGimnasticar(g); } if (!ok) { razlicitaKola.Add(entry); } } foreach (RezultatskoTakmicenje rt in rezTakmicenja) { foreach (List <RezultatskoTakmicenje> rezTakmicenjaPrethKolo in rezTakmicenjaPrethodnaKola) { RezultatskoTakmicenje rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija); foreach (Ekipa e in rtFrom.Takmicenje1.Ekipe) { if (rt.Takmicenje1.Ekipe.Contains(e)) { continue; } Ekipa ekipa = new Ekipa(); ekipa.Naziv = e.Naziv; ekipa.Kod = e.Kod; rt.Takmicenje1.addEkipa(ekipa, false); ekipaDAO.Add(ekipa); } } } // TODO: Prebaci u domenske klase sto vise koda iz ove funkcije (isto i u funkciji updateViseKola). takmicenje.kreirajRezultateViseKola(rezTakmicenja, rezTakmicenjaPrethodnaKola); foreach (List <RezultatskoTakmicenje> rezTakmicenjaPrethKolo in rezTakmicenjaPrethodnaKola) { foreach (RezultatskoTakmicenje rt in rezTakmicenjaPrethKolo) { rezTakDAO.Evict(rt); } } foreach (RezultatskoTakmicenje rt in rezTakmicenja) { rezTakDAO.Add(rt); } }
public static void updateViseKola(Takmicenje takmicenje) { // Ne apdejtujem kategorije i takmicenja. Dodajem nove gimnasticare i ekipe, i onda ponovo izracunavam // sve rezultate. Takodje, ne vodim racuna o tome da li je novi gimnsticar ucestvovao u razlicitim // kategorijama u prethodnim kolima (ako je i dodat neki nov gimnasticar, najverovatnije je dodat samo jedan, // i onda ce korisnik najverovatnije sam proveriti da li su kategorije u kojima je gimnasticar ucestvovao iste.) TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); takmicenjeDAO.Attach(takmicenje, false); List <Takmicenje> prethodnaKola = new List <Takmicenje>(); prethodnaKola.Add(takmicenje.PrvoKolo); prethodnaKola.Add(takmicenje.DrugoKolo); if (takmicenje.TreceKolo != null) { prethodnaKola.Add(takmicenje.TreceKolo); } if (takmicenje.CetvrtoKolo != null) { prethodnaKola.Add(takmicenje.CetvrtoKolo); } RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); GimnasticarUcesnikDAO gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO(); EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO(); IList <RezultatskoTakmicenje> rezTakmicenja = rezTakDAO.FindByTakmicenje(takmicenje.Id); List <IList <RezultatskoTakmicenje> > rezTakmicenjaPrethodnaKola = new List <IList <RezultatskoTakmicenje> >(); foreach (Takmicenje prethKolo in prethodnaKola) { rezTakmicenjaPrethodnaKola.Add(rezTakDAO.FindByTakmicenje(prethKolo.Id)); } IDictionary <GimnasticarUcesnik, GimnasticarUcesnik> gimUcesniciMap = new Dictionary <GimnasticarUcesnik, GimnasticarUcesnik>(); foreach (GimnasticarUcesnik g in gimUcesnikDAO.FindByTakmicenje(takmicenje.Id)) { gimUcesniciMap.Add(g, g); } foreach (RezultatskoTakmicenje rt in rezTakmicenja) { foreach (List <RezultatskoTakmicenje> rezTakmicenjaPrethKolo in rezTakmicenjaPrethodnaKola) { RezultatskoTakmicenje rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija); foreach (GimnasticarUcesnik g in rtFrom.Takmicenje1.Gimnasticari) { if (rt.Takmicenje1.Gimnasticari.Contains(g)) { continue; } GimnasticarUcesnik g2; if (!gimUcesniciMap.ContainsKey(g)) { g2 = GimnasticarUcesnikService.createGimnasticarUcesnik(g, rt.Kategorija); gimUcesniciMap.Add(g, g2); gimUcesnikDAO.Add(g2); } else { g2 = gimUcesniciMap[g]; } rt.Takmicenje1.addGimnasticar(g2); } } } foreach (RezultatskoTakmicenje rt in rezTakmicenja) { foreach (List <RezultatskoTakmicenje> rezTakmicenjaPrethKolo in rezTakmicenjaPrethodnaKola) { RezultatskoTakmicenje rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija); foreach (Ekipa e in rtFrom.Takmicenje1.Ekipe) { if (rt.Takmicenje1.Ekipe.Contains(e)) { continue; } Ekipa ekipa = new Ekipa(); ekipa.Naziv = e.Naziv; ekipa.Kod = e.Kod; rt.Takmicenje1.addEkipa(ekipa, false); ekipaDAO.Add(ekipa); } } } takmicenje.kreirajRezultateViseKola(rezTakmicenja, rezTakmicenjaPrethodnaKola); foreach (List <RezultatskoTakmicenje> rezTakmicenjaPrethKolo in rezTakmicenjaPrethodnaKola) { foreach (RezultatskoTakmicenje rt in rezTakmicenjaPrethKolo) { rezTakDAO.Evict(rt); } } foreach (RezultatskoTakmicenje rt in rezTakmicenja) { rezTakDAO.Update(rt); } }
// Proveri za sva finala kupa i zbir vise kola, da li postoje gimnasticari koji su nastupali u razlicitim // kategorijama u prethodnim kolima. public void proveriViseKola() { 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.FinaleKupa && !t.ZbirViseKola) { continue; } takmicenjeHeader = j.ToString() + ". " + t.ToString(); if (t.FinaleKupa) { takmicenjeHeader += " - FINALE KUPA"; } else { takmicenjeHeader += " - ZBIR VISE KOLA"; } takmicenjeHeader += " (" + t.Id + ")"; List <Takmicenje> prethodnaKola = new List <Takmicenje>(); prethodnaKola.Add(t.PrvoKolo); prethodnaKola.Add(t.DrugoKolo); if (t.TreceKolo != null) { prethodnaKola.Add(t.TreceKolo); } if (t.CetvrtoKolo != null) { prethodnaKola.Add(t.CetvrtoKolo); } RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); List <IList <RezultatskoTakmicenje> > rezTakmicenjaPrethodnaKola = new List <IList <RezultatskoTakmicenje> >(); foreach (Takmicenje prethKolo in prethodnaKola) { rezTakmicenjaPrethodnaKola.Add(rezTakDAO.FindByTakmicenje(prethKolo.Id)); } IList <RezultatskoTakmicenje> rezTakmicenja = rezTakDAO.FindByTakmicenje(t.Id); // Za svakog gimnasticara, zapamti u kojim kategorijama je ucestvovao u prethodnim kolima IDictionary <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > mapaUcestvovanja = new Dictionary <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > >(); foreach (RezultatskoTakmicenje rt in rezTakmicenja) { for (int i = 0; i < rezTakmicenjaPrethodnaKola.Count; ++i) { IList <RezultatskoTakmicenje> rezTakmicenjaPrethKolo = rezTakmicenjaPrethodnaKola[i]; RezultatskoTakmicenje rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija); if (rtFrom == null) { // Ovo se pojavljuje kod takmicenja ciji je id 226. continue; } Pair <int, TakmicarskaKategorija> koloKatPair = new Pair <int, TakmicarskaKategorija>(i, rt.Kategorija); foreach (GimnasticarUcesnik g in rtFrom.Takmicenje1.Gimnasticari) { if (!mapaUcestvovanja.ContainsKey(g)) { IList <Pair <int, TakmicarskaKategorija> > pairList = new List <Pair <int, TakmicarskaKategorija> >(); pairList.Add(koloKatPair); mapaUcestvovanja.Add(g, pairList); } else { mapaUcestvovanja[g].Add(koloKatPair); } } } } foreach (KeyValuePair <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > entry in mapaUcestvovanja) { GimnasticarUcesnik g = entry.Key; TakmicarskaKategorija prevKat = null; bool ok = true; foreach (Pair <int, TakmicarskaKategorija> koloKatPair in entry.Value) { TakmicarskaKategorija kat = koloKatPair.Second; if (prevKat == null) { prevKat = kat; } else if (!kat.Equals(prevKat)) { ok = false; } } if (!ok) { MessageBox.Show(takmicenjeHeader + "\n\n" + g.ImeSrednjeImePrezimeDatumRodjenja); } } } } catch (Exception) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } MessageBox.Show(takmicenjeHeader); } finally { CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } } }