// Proveri da li za svako finale kupa nijedno od prva dva kola nema odvojeno takmicenje 3. public void proveriPrvaDvaKola() { IList <int> takmicenjaId = getTakmicenjaId(); ISession session = null; try { using (session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); for (int i = 0; i < takmicenjaId.Count; ++i) { Takmicenje t = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenjaId[i]); if (!t.FinaleKupa) { continue; } string takmicenjeHeader = i.ToString() + ". " + t.ToString(); if (t.FinaleKupa) { takmicenjeHeader += " - FINALE KUPA"; } takmicenjeHeader += " (" + t.Id + ")"; RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); foreach (RezultatskoTakmicenje rt in rezTakDAO.FindByTakmicenje(t.PrvoKolo.Id)) { if (rt.Propozicije.odvojenoTak3() && t.PrvoKolo.ZavrsenoTak1) { MessageBox.Show("Postoji odvojeno takmicenje 3 u prvom kolu\n\n" + takmicenjeHeader); } } foreach (RezultatskoTakmicenje rt in rezTakDAO.FindByTakmicenje(t.DrugoKolo.Id)) { if (rt.Propozicije.odvojenoTak3() && t.DrugoKolo.ZavrsenoTak1) { MessageBox.Show("Postoji odvojeno takmicenje 3 u drugom kolu\n\n" + takmicenjeHeader); } } } } } 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); } }
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 btnAddTakmicenje_Click(object sender, EventArgs e) { if (lstKategorije.Items.Count == 0) { MessageDialogs.showMessage("Morate najpre da unesete kategorije.", this.Text); return; } RezultatskoTakmicenjeDescriptionForm form; try { form = new RezultatskoTakmicenjeDescriptionForm(null, takmicenjeId); if (form.ShowDialog() != DialogResult.OK) { return; } } catch (InfrastructureException ex) { MessageDialogs.showError(ex.Message, this.Text); return; } ISession session = null; try { using (session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); // reload rez. takmicenja RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); setTakmicenja(rezTakDAO.FindByTakmicenje(takmicenjeId)); SelectedTakmicenje = (RezultatskoTakmicenjeDescription)form.Entity; } } 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 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); } }
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 deleteTakmicenje(Takmicenje t, bool proveriFinala) { TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO(); if (proveriFinala) { // Proveri da li se neko takmicenje (finale kupa ili zbir vise kola) referise na ovo takmicenje. IList <Takmicenje> finala = takmicenjeDAO.FindFinala(t); if (finala.Count > 0) { string msg = "Takmicenje \"" + t.ToString() + "\" je nemoguce izbrisati jer je ono jedno od kola za " + "sledeca finala:\n\n"; foreach (Takmicenje f in finala) { msg += f.ToString() + "\n"; } throw new BusinessException(msg); } } // brisi ocene OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO(); foreach (Ocena o in ocenaDAO.FindByTakmicenje(t.Id)) { ocenaDAO.Delete(o); } // brisi rasporede nastupa RasporedNastupaDAO rasporedNastupaDAO = DAOFactoryFactory.DAOFactory.GetRasporedNastupaDAO(); foreach (RasporedNastupa r in rasporedNastupaDAO.FindByTakmicenje(t.Id)) { rasporedNastupaDAO.Delete(r); } // brisi rasporede sudija RasporedSudijaDAO rasporedSudijaDAO = DAOFactoryFactory.DAOFactory.GetRasporedSudijaDAO(); foreach (RasporedSudija r in rasporedSudijaDAO.FindByTakmicenje(t.Id)) { rasporedSudijaDAO.Delete(r); } // brisi sudije ucesnike SudijaUcesnikDAO sudijaUcesnikDAO = DAOFactoryFactory.DAOFactory.GetSudijaUcesnikDAO(); foreach (SudijaUcesnik s in sudijaUcesnikDAO.FindByTakmicenje(t.Id)) { sudijaUcesnikDAO.Delete(s); } // brisi rezultatska takmicenja i ekipe RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO(); foreach (RezultatskoTakmicenje r in rezultatskoTakmicenjeDAO.FindByTakmicenje(t.Id)) { foreach (Ekipa e in r.Takmicenje1.Ekipe) { ekipaDAO.Delete(e); } rezultatskoTakmicenjeDAO.Delete(r); } // brisi gimnasticare ucesnike GimnasticarUcesnikDAO gimnasticarUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO(); foreach (GimnasticarUcesnik g in gimnasticarUcesnikDAO.FindByTakmicenje(t.Id)) { gimnasticarUcesnikDAO.Delete(g); } // brisi klubove ucesnike KlubUcesnikDAO klubUcesnikDAO = DAOFactoryFactory.DAOFactory.GetKlubUcesnikDAO(); foreach (KlubUcesnik k in klubUcesnikDAO.FindByTakmicenje(t.Id)) { klubUcesnikDAO.Delete(k); } // brisi drzave ucesnike DrzavaUcesnikDAO drzavaUcesnikDAO = DAOFactoryFactory.DAOFactory.GetDrzavaUcesnikDAO(); foreach (DrzavaUcesnik d in drzavaUcesnikDAO.FindByTakmicenje(t.Id)) { drzavaUcesnikDAO.Delete(d); } // brisi kategorije TakmicarskaKategorijaDAO takmicarskaKategorijaDAO = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO(); foreach (TakmicarskaKategorija k in takmicarskaKategorijaDAO.FindByTakmicenje(t.Id)) { takmicarskaKategorijaDAO.Delete(k); } // brisi descriptions RezultatskoTakmicenjeDescriptionDAO rezTakDescDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDescriptionDAO(); foreach (RezultatskoTakmicenjeDescription d in rezTakDescDAO.FindByTakmicenje(t.Id)) { rezTakDescDAO.Delete(d); } // brisi takmicenje takmicenjeDAO.Delete(t); }
// 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(); }