private void deleteKategorija(TakmicarskaKategorija k) { TakmicarskaKategorijaDAO takKatDAO = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO(); takKatDAO.Attach(k, false); IList <RezultatskoTakmicenje> rezTakmicenja = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO() .FindByKategorija(k); if (rezTakmicenja.Count > 0) { throw new BusinessException("Morate najpre da izbrisete kategoriju iz svih takmicenja."); } IList <GimnasticarUcesnik> gimnasticari = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO() .FindByKategorija(k); if (gimnasticari.Count > 0) { throw new BusinessException("Morate najpre da izbrisete sve gimnasticare za datu kategoriju."); } TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); Takmicenje t = takmicenjeDAO.FindById(takmicenjeId); t.removeKategorija(SelectedKategorija); takKatDAO.Delete(k); takmicenjeDAO.Update(t); }
private void btnMoveDownKategorija_Click(object sender, EventArgs e) { TakmicarskaKategorija k = SelectedKategorija; if (k == null) { return; } if (treeViewTakmicenja.Nodes.Count > 0) { MessageDialogs.showMessage("Kategorije je moguce pomerati pre nego sto se dodaju takmicenja.", this.Text); return; } ISession session = null; try { using (session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().Attach(k, false); TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); Takmicenje takmicenje = takmicenjeDAO.FindById(takmicenjeId); if (takmicenje.moveKategorijaDown(k)) { takmicenjeDAO.Update(takmicenje); takmicenje.LastModified = DateTime.Now; session.Transaction.Commit(); // reload kategorije setKategorije(DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().FindByTakmicenje(takmicenjeId)); SelectedKategorija = k; } } } catch (Exception ex) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } MessageDialogs.showMessage(ex.Message, this.Text); return; } finally { CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } }
public static void addTakmicarskaKategorija(TakmicarskaKategorija kat, int takmicenjeId) { Notification notification = new Notification(); kat.validate(notification); if (!notification.IsValid()) { throw new BusinessException(notification); } if (DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().existsKategorijaNaziv(kat.Naziv, takmicenjeId)) { notification.RegisterMessage("Naziv", "Kategorija sa datim nazivom vec postoji."); throw new BusinessException(notification); } TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); Takmicenje t = takmicenjeDAO.FindById(takmicenjeId); t.addKategorija(kat); takmicenjeDAO.Update(t); }
private void deleteTakmicenje(RezultatskoTakmicenjeDescription desc) { RezultatskoTakmicenjeDescriptionDAO rezTakDescDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDescriptionDAO(); rezTakDescDAO.Attach(desc, false); RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); foreach (RezultatskoTakmicenje rt in rezTakDAO.FindByDescription(desc)) { rezTakDAO.Delete(rt); } // Ne apdejtujem redne brojeve za preostala rez. takmicenja zato sto je redosled nepromenjen TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); Takmicenje takmicenje = takmicenjeDAO.FindById(takmicenjeId); takmicenje.removeTakmicenjeDescription(desc); takmicenjeDAO.Update(takmicenje); rezTakDescDAO.Delete(desc); }
// 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); } } }
// Proveri da li za svaki rezultat postoji i ocena. public void proveriRezultateIOcene() { StreamWriter log = File.CreateText("proveri_rezultate_i_ocene.txt"); 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.ZbirViseKola) { continue; } takmicenjeHeader = j.ToString() + ". " + t.ToString(); takmicenjeHeader += " (" + t.Id + ")"; RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); IList <RezultatskoTakmicenje> rezTakmicenja = rezTakDAO.FindByTakmicenje(t.Id); OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO(); // Takmicenje 1 IList <Ocena> ocene = ocenaDAO.FindByDeoTakmicenja(t.Id, DeoTakmicenjaKod.Takmicenje1); IDictionary <int, IList <Ocena> > oceneMap = new Dictionary <int, IList <Ocena> >(); foreach (Ocena o in ocene) { if (!oceneMap.ContainsKey(o.Gimnasticar.Id)) { oceneMap.Add(o.Gimnasticar.Id, new List <Ocena>()); } oceneMap[o.Gimnasticar.Id].Add(o); } foreach (RezultatskoTakmicenje rt in rezTakmicenja) { foreach (PoredakSprava p in rt.Takmicenje1.PoredakSprava) { foreach (RezultatSprava r in p.Rezultati) { if (!oceneMap.ContainsKey(r.Gimnasticar.Id)) { if (r.Total != null) { log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() + " nema nijednu ocenu" + " Takmicenje1"); } continue; } IList <Ocena> oceneList = oceneMap[r.Gimnasticar.Id]; Ocena o = null; foreach (Ocena o2 in oceneList) { if (o2.Sprava == p.Sprava) { o = o2; break; } } if (o == null && r.Total != null) { log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() + " nema ocenu za " + p.Sprava.ToString() + " Takmicenje1"); } if (o != null && o.Total != r.Total) { log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() + " total se razlikuje " + p.Sprava.ToString() + " Takmicenje1"); } } } foreach (RezultatPreskok r in rt.Takmicenje1.PoredakPreskok.Rezultati) { if (!oceneMap.ContainsKey(r.Gimnasticar.Id)) { if (r.Total != null || r.TotalObeOcene != null) { log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() + " nema nijednu ocenu" + " Takmicenje1"); } continue; } IList <Ocena> oceneList = oceneMap[r.Gimnasticar.Id]; Ocena o = null; foreach (Ocena o2 in oceneList) { if (o2.Sprava == Sprava.Preskok) { o = o2; break; } } if (o == null && (r.Total != null || r.TotalObeOcene != null)) { log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() + " nema ocenu za " + Sprava.Preskok.ToString() + " Takmicenje1"); } if (o != null && (o.Total != r.Total || o.TotalObeOcene != r.TotalObeOcene)) { log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() + " total se razlikuje " + Sprava.Preskok.ToString() + " Takmicenje1"); } } } // Takmicenje 3 ocene = ocenaDAO.FindByDeoTakmicenja(t.Id, DeoTakmicenjaKod.Takmicenje3); oceneMap = new Dictionary <int, IList <Ocena> >(); foreach (Ocena o in ocene) { if (!oceneMap.ContainsKey(o.Gimnasticar.Id)) { oceneMap.Add(o.Gimnasticar.Id, new List <Ocena>()); } oceneMap[o.Gimnasticar.Id].Add(o); } foreach (RezultatskoTakmicenje rt in rezTakmicenja) { if (rt.Takmicenje3 == null) { continue; } if (!rt.odvojenoTak3()) { continue; } foreach (PoredakSprava p in rt.Takmicenje3.Poredak) { foreach (RezultatSprava r in p.Rezultati) { if (!oceneMap.ContainsKey(r.Gimnasticar.Id)) { if (r.Total != null) { log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() + " nema nijednu ocenu" + " Takmicenje3"); } continue; } IList <Ocena> oceneList = oceneMap[r.Gimnasticar.Id]; Ocena o = null; foreach (Ocena o2 in oceneList) { if (o2.Sprava == p.Sprava) { o = o2; break; } } if (o == null && r.Total != null) { log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() + " nema ocenu za " + p.Sprava.ToString() + " Takmicenje3"); } if (o != null && o.Total != r.Total) { log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() + " total se razlikuje " + p.Sprava.ToString() + " Takmicenje3"); } } } foreach (RezultatPreskok r in rt.Takmicenje3.PoredakPreskok.Rezultati) { if (!oceneMap.ContainsKey(r.Gimnasticar.Id)) { if (r.Total != null || r.TotalObeOcene != null) { log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() + " nema nijednu ocenu" + " Takmicenje3"); } continue; } IList <Ocena> oceneList = oceneMap[r.Gimnasticar.Id]; Ocena o = null; foreach (Ocena o2 in oceneList) { if (o2.Sprava == Sprava.Preskok) { o = o2; break; } } if (o == null && (r.Total != null || r.TotalObeOcene != null)) { log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() + " nema ocenu za " + Sprava.Preskok.ToString() + " Takmicenje3"); } if (o != null && (o.Total != r.Total || o.TotalObeOcene != r.TotalObeOcene)) { log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() + " total se razlikuje " + Sprava.Preskok.ToString() + " Takmicenje3"); } } } } } catch (Exception) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } log.Close(); MessageBox.Show(takmicenjeHeader); throw; } finally { CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } } log.Close(); }
public static void addGimnasticariToRezTak(IList <GimnasticarUcesnik> gimnasticari, RezultatskoTakmicenje rezTak, IList <GimnasticarUcesnik> addedGimnasticari) { RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); rezultatskoTakmicenjeDAO.Attach(rezTak, false); TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); Takmicenje takmicenje = takmicenjeDAO.FindById(rezTak.Takmicenje.Id); RezultatskoTakmicenje rezTak1 = null; RezultatskoTakmicenje rezTak2 = null; RezultatskoTakmicenje rezTak3 = null; RezultatskoTakmicenje rezTak4 = null; if (takmicenje.FinaleKupa || takmicenje.ZbirViseKola) { rezTak1 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari( takmicenje.PrvoKolo.Id, rezTak.Kategorija.Naziv, 0); rezTak2 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari( takmicenje.DrugoKolo.Id, rezTak.Kategorija.Naziv, 0); if (takmicenje.ZbirViseKola) { if (takmicenje.TreceKolo != null) { rezTak3 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari( takmicenje.TreceKolo.Id, rezTak.Kategorija.Naziv, 0); } if (takmicenje.CetvrtoKolo != null) { rezTak4 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari( takmicenje.CetvrtoKolo.Id, rezTak.Kategorija.Naziv, 0); } } } OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO(); foreach (GimnasticarUcesnik g in gimnasticari) { if (rezTak.Takmicenje1.addGimnasticar(g)) { IList <Ocena> ocene = ocenaDAO.FindByGimnasticar(g, DeoTakmicenjaKod.Takmicenje1); if (takmicenje.FinaleKupa) { rezTak.Takmicenje1.updateRezultatiOnGimnasticarAdded(g, ocene, rezTak, rezTak1, rezTak2); } else if (takmicenje.ZbirViseKola) { rezTak.Takmicenje1.updateRezultatiOnGimnasticarAdded(g, rezTak, rezTak1, rezTak2, rezTak3, rezTak4); } else { rezTak.Takmicenje1.updateRezultatiOnGimnasticarAdded(g, ocene, rezTak); } foreach (Ocena o in ocene) { ocenaDAO.Evict(o); } addedGimnasticari.Add(g); } } takmicenjeDAO.Evict(takmicenje); if (rezTak1 != null) { rezultatskoTakmicenjeDAO.Evict(rezTak1); } if (rezTak2 != null) { rezultatskoTakmicenjeDAO.Evict(rezTak2); } if (rezTak3 != null) { rezultatskoTakmicenjeDAO.Evict(rezTak3); } if (rezTak4 != null) { rezultatskoTakmicenjeDAO.Evict(rezTak4); } if (addedGimnasticari.Count > 0) { DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO().Update(rezTak.Takmicenje1); } }
public static void addEkipaToRezTak(Ekipa ekipa, RezultatskoTakmicenje rezTak) { RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); rezultatskoTakmicenjeDAO.Attach(rezTak, false); TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); Takmicenje takmicenje = takmicenjeDAO.FindById(rezTak.Takmicenje.Id); RezultatskoTakmicenje rezTak1 = null; RezultatskoTakmicenje rezTak2 = null; RezultatskoTakmicenje rezTak3 = null; RezultatskoTakmicenje rezTak4 = null; if (takmicenje.FinaleKupa || takmicenje.ZbirViseKola) { rezTak1 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe( takmicenje.PrvoKolo.Id, rezTak.Kategorija.Naziv, 0); rezTak2 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe( takmicenje.DrugoKolo.Id, rezTak.Kategorija.Naziv, 0); if (takmicenje.ZbirViseKola) { if (takmicenje.TreceKolo != null) { rezTak3 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe( takmicenje.TreceKolo.Id, rezTak.Kategorija.Naziv, 0); } if (takmicenje.CetvrtoKolo != null) { rezTak4 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe( takmicenje.CetvrtoKolo.Id, rezTak.Kategorija.Naziv, 0); } } } foreach (Ekipa e in rezTak.Takmicenje1.Ekipe) { 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)); } } } if (rezTak.Takmicenje1.addEkipa(ekipa, true)) { DAOFactoryFactory.DAOFactory.GetEkipaDAO().Add(ekipa); if (takmicenje.FinaleKupa) { rezTak.Takmicenje1.updateRezultatiOnEkipaAdded(ekipa, findRezultatiUkupnoForEkipa(takmicenje.Id, ekipa), rezTak, rezTak1, rezTak2); } else if (takmicenje.ZbirViseKola) { rezTak.Takmicenje1.updateRezultatiOnEkipaAdded(ekipa, rezTak, rezTak1, rezTak2, rezTak3, rezTak4); } else { rezTak.Takmicenje1.updateRezultatiOnEkipaAdded(ekipa, rezTak, findRezultatiUkupnoForEkipa(takmicenje.Id, ekipa)); } // snimi ekipe i poredak ekipno DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO().Update(rezTak.Takmicenje1); } takmicenjeDAO.Evict(takmicenje); if (rezTak1 != null) { rezultatskoTakmicenjeDAO.Evict(rezTak1); } if (rezTak2 != null) { rezultatskoTakmicenjeDAO.Evict(rezTak2); } if (rezTak3 != null) { rezultatskoTakmicenjeDAO.Evict(rezTak3); } if (rezTak4 != null) { rezultatskoTakmicenjeDAO.Evict(rezTak4); } }