public Ocena FindOcena(GimnasticarUcesnik g, DeoTakmicenjaKod deoTakKod, Sprava sprava) { try { IQuery q = Session.CreateQuery(@" select o from Ocena o join o.Gimnasticar g where g.Id = :gimnasticarId and o.DeoTakmicenjaKod = :deoTakKod and o.Sprava = :sprava"); q.SetInt32("gimnasticarId", g.Id); q.SetByte("deoTakKod", (byte)deoTakKod); q.SetByte("sprava", (byte)sprava); IList <Ocena> result = q.List <Ocena>(); if (result.Count > 0) { return(result[0]); } return(null); } catch (HibernateException ex) { throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } }
protected override void updateUIFromEntity(DomainObject entity) { GimnasticarUcesnik gimnasticar = (GimnasticarUcesnik)entity; txtIme.Text = gimnasticar.Ime; txtSrednjeIme.Text = gimnasticar.SrednjeIme; txtPrezime.Text = gimnasticar.Prezime; txtDatumRodj.Text = String.Empty; if (gimnasticar.DatumRodjenja != null) { txtDatumRodj.Text = gimnasticar.DatumRodjenja.ToString("d"); } SelectedKlub = gimnasticar.KlubUcesnik; SelectedDrzava = gimnasticar.DrzavaUcesnik; txtTakKategorija.Text = kategorija.ToString(); IList <RezultatskoTakmicenje> rezTakmicenja = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO().FindByGimnasticar(gimnasticar); foreach (RezultatskoTakmicenje rt in rezTakmicenja) { lstTakmicenja.Items.Add(rt.Naziv); } rbtDrzava.Checked = gimnasticar.NastupaZaDrzavu; }
public UcesnikTakmicenja3(GimnasticarUcesnik gimnasticar, Sprava sprava, Nullable<short> qualOrder, Nullable<float> qualScore, Nullable<short> qualRank, KvalifikacioniStatus kvalStatus) : base(qualOrder, qualScore, qualRank, kvalStatus) { _gimnasticar = gimnasticar; _sprava = sprava; }
protected override void checkBusinessRulesOnUpdate(DomainObject entity) { GimnasticarUcesnik g = (GimnasticarUcesnik)entity; if (!hasImeSrednjeImePrezimeDatumRodjenjaChanged(g)) { return; } GimnasticarDAO gimnasticarDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarDAO(); if (gimnasticarDAO.existsGimnasticarImePrezimeSrednjeImeDatumRodjenja(oldIme, oldPrezime, oldSrednjeIme, oldDatumRodjenja)) { if (!gimnasticarDAO.existsGimnasticarImePrezimeSrednjeImeDatumRodjenja(g.Ime, g.Prezime, g.SrednjeIme, g.DatumRodjenja)) { // Staro ime postoji u registru, novo ime ne postoji u registru. // Menjaj staro ime u registru sa novim Gimnasticar gim = gimnasticarDAO.FindGimnasticar(oldIme, oldPrezime, oldDatumRodjenja.Dan, oldDatumRodjenja.Mesec, oldDatumRodjenja.Godina, gimnastika); if (gim != null) { gim.Ime = g.Ime; gim.Prezime = g.Prezime; gim.SrednjeIme = g.SrednjeIme; gim.DatumRodjenja = g.DatumRodjenja; gimnasticarDAO.Update(gim); } else { throw new BusinessException("Greska u programu"); } } else { // Staro ime postoji u registru, novo ime postoji u registru. // TODO4: Ne menjaj nista u registru; trazi potvrdu za nastavak throw new BusinessException("Greska u programu - neuspesna promena imena gimnasticara2"); } } else { if (!gimnasticarDAO.existsGimnasticarImePrezimeSrednjeImeDatumRodjenja(g.Ime, g.Prezime, g.SrednjeIme, g.DatumRodjenja)) { // Staro ime ne postoji u registru, novo ime ne postoji u registru. // TODO4: Dodaj novog gimnasticara u registru sa novim imenom throw new BusinessException("Greska u programu - neuspesna promena imena gimnasticara3"); } else { // Staro ime ne postoji u registru, novo ime postoji u registru. // TODO4: Ne menjaj nista u registru; trazi potvrdu za nastavak throw new BusinessException("Greska u programu - neuspesna promena imena gimnasticara4"); } } }
public virtual void addGimnasticar(GimnasticarUcesnik g) { if (gimnasticarExists(g)) throw new BusinessException( String.Format("Gimnasticar {0} je vec na start listi.", g)); NastupNaSpravi nastup = new NastupNaSpravi(g, 0); addNastup(nastup); }
protected override void saveOriginalData(DomainObject entity) { GimnasticarUcesnik gimnasticar = (GimnasticarUcesnik)entity; oldIme = gimnasticar.Ime; oldSrednjeIme = gimnasticar.SrednjeIme; oldPrezime = gimnasticar.Prezime; oldDatumRodjenja = gimnasticar.DatumRodjenja; }
//private string sqlGetId = "SELECT @@IDENTITY"; public void insert(GimnasticarUcesnik gimnasticar, RezultatskoTakmicenje rezTak, Sprava sprava, KvalifikacioniStatus newKvalStatus) { SqlCeConnection conn = new SqlCeConnection(ConfigurationParameters.ConnectionString); SqlCeCommand cmd = new SqlCeCommand(insertSQL, conn); cmd.Parameters.Add("@rez_takmicenje_id", SqlDbType.Int).Value = rezTak.Id; cmd.Parameters.Add("@gimnasticar_id", SqlDbType.Int).Value = gimnasticar.Id; cmd.Parameters.Add("@sprava", SqlDbType.TinyInt).Value = sprava; cmd.Parameters.Add("@kval_status", SqlDbType.TinyInt).Value = newKvalStatus; SqlCeTransaction tr = null; try { conn.Open(); tr = conn.BeginTransaction(); cmd.Transaction = tr; int recordsAffected = cmd.ExecuteNonQuery(); if (recordsAffected != 1) { throw new InfrastructureException(Strings.DatabaseAccessExceptionMessage); } /*SqlCeCommand cmd2 = new SqlCeCommand(sqlGetId, conn, tr); object id = cmd2.ExecuteScalar(); if (!Convert.IsDBNull(id)) entity.Id = Convert.ToInt32(id);*/ tr.Commit(); // TODO: this can throw Exception and InvalidOperationException } catch (SqlCeException ex) { // in Open() if (tr != null) tr.Rollback(); // TODO: this can throw Exception and InvalidOperationException throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } catch (InvalidOperationException ex) { // in ExecuteNonQuery(), ExecureScalar() if (tr != null) tr.Rollback(); throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } // za svaki slucaj catch (Exception) { if (tr != null) tr.Rollback(); throw; } finally { conn.Close(); } }
public virtual void addGimnasticar(GimnasticarUcesnik g, Ocena o, RezultatskoTakmicenje rezTak) { RezultatPreskok r = new RezultatPreskok(); r.Gimnasticar = g; r.setOcena(o); Rezultati.Add(r); rankRezultati(); updateKvalStatus(rezTak.Propozicije); }
public virtual UcesnikTakmicenja3 addKvalifikant(GimnasticarUcesnik gimnasticar, Sprava sprava, Nullable<float> qualScore, Nullable<short> qualRank) { if (getUcesnikKvalifikant(gimnasticar, sprava) != null) return null; short qualOrder = (short)(getUcesniciKvalifikanti(sprava).Count + 1); UcesnikTakmicenja3 u = new UcesnikTakmicenja3(gimnasticar, sprava, qualOrder, qualScore, qualRank, KvalifikacioniStatus.Q); Ucesnici.Add(u); return u; }
private bool canAddGimnasticar(GimnasticarUcesnik g, TakmicarskaKategorija kategorija) { foreach (IList <GimnasticarUcesnik> gimList in gimnasticari) { foreach (GimnasticarUcesnik g2 in gimList) { if (g2.Equals(g)) { return(false); } } } return(true); }
private static GimnasticarUcesnik createGimnasticarUcesnik(string ime, string srednjeIme, string prezime, Datum datumRodjenja, TakmicarskaKategorija kategorija, string nazivDrzave, string kodDrzave, string nazivKluba, string kodKluba) { GimnasticarUcesnik result = new GimnasticarUcesnik(); result.Ime = ime; result.SrednjeIme = srednjeIme; result.Prezime = prezime; result.DatumRodjenja = datumRodjenja; result.TakmicarskaKategorija = kategorija; if (String.IsNullOrEmpty(nazivDrzave)) { result.DrzavaUcesnik = null; } else { DrzavaUcesnikDAO drzavaUcesnikDAO = DAOFactoryFactory.DAOFactory.GetDrzavaUcesnikDAO(); DrzavaUcesnik drzavaUcesnik = drzavaUcesnikDAO.FindDrzavaUcesnik(kategorija.Takmicenje.Id, nazivDrzave); if (drzavaUcesnik == null) { drzavaUcesnik = new DrzavaUcesnik(); drzavaUcesnik.Naziv = nazivDrzave; drzavaUcesnik.Kod = kodDrzave; drzavaUcesnik.Takmicenje = kategorija.Takmicenje; drzavaUcesnikDAO.Add(drzavaUcesnik); } result.DrzavaUcesnik = drzavaUcesnik; } if (String.IsNullOrEmpty(nazivKluba)) { result.KlubUcesnik = null; } else { KlubUcesnikDAO klubUcesnikDAO = DAOFactoryFactory.DAOFactory.GetKlubUcesnikDAO(); KlubUcesnik klubUcesnik = klubUcesnikDAO.FindKlubUcesnik(kategorija.Takmicenje.Id, nazivKluba); if (klubUcesnik == null) { klubUcesnik = new KlubUcesnik(); klubUcesnik.Naziv = nazivKluba; klubUcesnik.Kod = kodKluba; klubUcesnik.Takmicenje = kategorija.Takmicenje; klubUcesnikDAO.Add(klubUcesnik); } result.KlubUcesnik = klubUcesnik; } return(result); }
private List <object[]> getTakmicariReportItems(IList <GimnasticarUcesnik> gimnasticari, Gimnastika gim) { List <object[]> result = new List <object[]>(); for (int i = 0; i < gimnasticari.Count; ++i) { GimnasticarUcesnik g = gimnasticari[i]; string klub = (g.KlubUcesnik != null) ? g.KlubUcesnik.Naziv : String.Empty; string drzava = (g.DrzavaUcesnik != null) ? g.DrzavaUcesnik.Kod : string.Empty; string datumRodjenja = (g.DatumRodjenja != null) ? g.DatumRodjenja.ToString("d") : string.Empty; result.Add(new object[] { (i + 1).ToString(), g.Ime, g.Prezime, datumRodjenja, klub, drzava }); } return(result); }
public virtual void addGimnasticar(GimnasticarUcesnik g, IList<Ocena> ocene, RezultatskoTakmicenje rezTak) { RezultatUkupno r = new RezultatUkupno(); r.Gimnasticar = g; if (ocene.Count > 0) { foreach (Ocena o in ocene) r.addOcena(o); } Rezultati.Add(r); rankRezultati(); updateKvalStatus(rezTak.Propozicije); }
public OcenaForm(Nullable<int> ocenaId, GimnasticarUcesnik g, Sprava sprava, DeoTakmicenjaKod deoTakKod, int takmicenjeId) { InitializeComponent(); this.gimnasticar = g; this.sprava = sprava; this.deoTakKod = deoTakKod; this.obeOcene = sprava == Sprava.Preskok; this.showWaitCursor = true; takmicenje = loadTakmicenje(takmicenjeId); initialize(ocenaId, true); izracunato = editMode && !ckbUnosOcene.Checked; }
protected override void updateEntity(DomainObject entity) { GimnasticarUcesnik g = (GimnasticarUcesnik)entity; if (g.KlubUcesnik != null && g.KlubUcesnik.Id == 0) { g.KlubUcesnik.Takmicenje = kategorija.Takmicenje; DAOFactoryFactory.DAOFactory.GetKlubUcesnikDAO().Add(g.KlubUcesnik); } if (g.DrzavaUcesnik != null && g.DrzavaUcesnik.Id == 0) { g.DrzavaUcesnik.Takmicenje = kategorija.Takmicenje; DAOFactoryFactory.DAOFactory.GetDrzavaUcesnikDAO().Add(g.DrzavaUcesnik); } DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO().Update(g); }
public IList <Ekipa> FindByGimnasticar(GimnasticarUcesnik g) { try { IQuery q = Session.CreateQuery(@" select distinct e from Ekipa e join e.Gimnasticari g where g = :g"); q.SetEntity("g", g); return(q.List <Ekipa>()); } catch (HibernateException ex) { throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } }
public IList <StartListaNaSpravi> FindByGimnasticar(GimnasticarUcesnik gim) { try { IQuery q = Session.CreateQuery(@" select distinct s from StartListaNaSpravi s join s.Nastupi n where n.Gimnasticar = :gim"); q.SetEntity("gim", gim); return(q.List <StartListaNaSpravi>()); } catch (HibernateException ex) { throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } }
public NastupNaSpravi(GimnasticarUcesnik gimnasticar, byte ekipa) { this.gimnasticar = gimnasticar; this.ekipa = ekipa; // Svojstvo Kategorija kesiram zato sto sam imao problema na start listama gde nije mogao da ga ocita iz // gimnasticara. if (gimnasticar != null) { try { kategorija = gimnasticar.TakmicarskaKategorija.ToString(); } catch (Exception) { kategorija = String.Empty; } } }
private bool hasImeSrednjeImePrezimeDatumRodjenjaChanged(GimnasticarUcesnik g) { bool equals = g.Ime.ToUpper() == oldIme.ToUpper() && g.Prezime.ToUpper() == oldPrezime.ToUpper(); if (equals) { equals = string.IsNullOrEmpty(g.SrednjeIme) && string.IsNullOrEmpty(oldSrednjeIme) || (!string.IsNullOrEmpty(g.SrednjeIme) && !string.IsNullOrEmpty(oldSrednjeIme) && g.SrednjeIme.ToUpper() == oldSrednjeIme.ToUpper()); } if (equals) { equals = g.DatumRodjenja == oldDatumRodjenja; } return(!equals); }
public IList <RezultatskoTakmicenje> FindByGimnasticar(GimnasticarUcesnik g) { try { IQuery q = Session.CreateQuery(@" select distinct r from RezultatskoTakmicenje r join r.Takmicenje1 t join t.Gimnasticari g where g = :gimnasticar order by r.RedBroj"); q.SetEntity("gimnasticar", g); return(q.List <RezultatskoTakmicenje>()); } catch (HibernateException ex) { throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } }
public IList <Ocena> FindByGimnasticar(GimnasticarUcesnik gim, DeoTakmicenjaKod deoTakKod) { try { IQuery q = Session.CreateQuery(@" select o from Ocena o left join fetch o.Ocena2 join o.Gimnasticar g where g = :gim and o.DeoTakmicenjaKod = :deoTakKod"); q.SetEntity("gim", gim); q.SetByte("deoTakKod", (byte)deoTakKod); return(q.List <Ocena>()); } catch (HibernateException ex) { throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } }
public static GimnasticarUcesnik createGimnasticarUcesnik(GimnasticarUcesnik g, TakmicarskaKategorija kategorija) { string nazivDrzave = null; string kodDrzave = null; if (g.DrzavaUcesnik != null) { nazivDrzave = g.DrzavaUcesnik.Naziv; kodDrzave = g.DrzavaUcesnik.Kod; } string nazivKluba = null; string kodKluba = null; if (g.KlubUcesnik != null) { nazivKluba = g.KlubUcesnik.Naziv; kodKluba = g.KlubUcesnik.Kod; } return(createGimnasticarUcesnik(g.Ime, g.SrednjeIme, g.Prezime, g.DatumRodjenja, kategorija, nazivDrzave, kodDrzave, nazivKluba, kodKluba)); }
protected override void updateEntityFromUI(DomainObject entity) { GimnasticarUcesnik gimnasticar = (GimnasticarUcesnik)entity; gimnasticar.Ime = txtIme.Text.Trim(); if (txtSrednjeIme.Text.Trim() == String.Empty) { gimnasticar.SrednjeIme = null; } else { gimnasticar.SrednjeIme = txtSrednjeIme.Text.Trim(); } gimnasticar.Prezime = txtPrezime.Text.Trim(); if (txtDatumRodj.Text.Trim() == String.Empty) { gimnasticar.DatumRodjenja = null; } else { gimnasticar.DatumRodjenja = Datum.Parse(txtDatumRodj.Text); } gimnasticar.KlubUcesnik = SelectedKlub; if (gimnasticar.KlubUcesnik != null && gimnasticar.KlubUcesnik.Naziv == PRAZNO) { gimnasticar.KlubUcesnik = null; } gimnasticar.DrzavaUcesnik = SelectedDrzava; if (gimnasticar.DrzavaUcesnik != null && gimnasticar.DrzavaUcesnik.Naziv == PRAZNO) { gimnasticar.DrzavaUcesnik = null; } gimnasticar.NastupaZaDrzavu = rbtDrzava.Checked; }
private void editCmd() { IList <GimnasticarUcesnik> selItems = getActiveDataGridViewUserControl() .getSelectedItems <GimnasticarUcesnik>(); if (selItems.Count != 1) { return; } GimnasticarUcesnik selectedItem = selItems[0]; List <GimnasticarUcesnik> activeGimnasticari = gimnasticari[tabControl1.SelectedIndex]; int index = activeGimnasticari.IndexOf(selectedItem); try { GimnasticarUcesnikForm form = new GimnasticarUcesnikForm(selectedItem.Id, ActiveKategorija, takmicenje.Gimnastika); if (form.ShowDialog() == DialogResult.OK) { GimnasticarUcesnik editedItem = (GimnasticarUcesnik)form.Entity; activeGimnasticari[index] = editedItem; setGimnasticari(activeGimnasticari); if (!getActiveDataGridViewUserControl().isSorted()) { getActiveDataGridViewUserControl().refreshItems(); } getActiveDataGridViewUserControl() .setSelectedItem <GimnasticarUcesnik>(editedItem); } } catch (InfrastructureException ex) { MessageDialogs.showError(ex.Message, this.Text); } }
private void btnDelete_Click(object sender, EventArgs e) { GimnasticarUcesnik selClan = dgwUserControlClanovi.getSelectedItem <GimnasticarUcesnik>(); if (selClan == null) { return; } string msgFmt = "Da li zelite da izbrisete clana ekipe \"{0}\"?"; if (!MessageDialogs.queryConfirmation(String.Format(msgFmt, selClan), this.Text)) { return; } Ekipa ekipa = (Ekipa)entity; // TODO: Check business rules ekipa.removeGimnasticar(selClan); setClanovi(ekipa.Gimnasticari); }
private RezultatPreskok getRezultat(GimnasticarUcesnik g) { foreach (RezultatPreskok r in Rezultati) { if (r.Gimnasticar.Equals(g)) return r; } return null; }
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); } }
public virtual bool canAddGimnasticar(GimnasticarUcesnik g) { return !gimnasticarExists(g); }
private bool hasOcene(GimnasticarUcesnik g) { IDataContext dataContext = null; try { DataAccessProviderFactory factory = new DataAccessProviderFactory(); dataContext = factory.GetDataContext(); dataContext.BeginTransaction(); IList<Ocena> result = dataContext.ExecuteNamedQuery<Ocena>( "FindAllOceneForGimnasticar", new string[] { "gim" }, new object[] { g }); return result.Count > 0; } catch (Exception ex) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); throw new InfrastructureException( Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } finally { if (dataContext != null) dataContext.Dispose(); dataContext = null; } }
// TODO: Nije moguce izbrisati takmicara zato sto se uvek vodi kao ucesnik takmicenja II, cak i ako ne postoji // odvojeno takmicenje II, verovatno zbog greske koja postoji u tom slucaju da kada ne postoji odvojeno // takmicenje II svi gimnasticari se oznace kao kvalifikovani. Ispravi ovo, tj. kada ne postoji odvojeno // takmicenje II verovatno ne bi niko trebalo da bude oznacen kao kvalifikovan. // Druga mogucnost je da nije moguce brisati takmicara zato sto postoje njegovi rezultati u takmicenju II, cak i // ako ne postoji odvojeno takmicenje II. // Mozda bi najbolje bilo da se ne dozvoli brisanje takmicara koji je ucesnik takmicenja II i III (zato sam gore // stavio da se prvo ispituje da li je gimnasticar ucesnik takmicenja II ili III) private bool ucesnikTakmicenja2(GimnasticarUcesnik g) { IDataContext dataContext = null; try { DataAccessProviderFactory factory = new DataAccessProviderFactory(); dataContext = factory.GetDataContext(); dataContext.BeginTransaction(); string query = @"select count(*) from Takmicenje2 t join t.Ucesnici u where u.Gimnasticar.Id = :id"; IList result = dataContext. ExecuteQuery(QueryLanguageType.HQL, query, new string[] { "id" }, new object[] { g.Id }); return (long)result[0] > 0; } catch (Exception ex) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); throw new InfrastructureException( Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } finally { if (dataContext != null) dataContext.Dispose(); dataContext = null; } }
private bool gimnasticarExists(GimnasticarUcesnik g) { foreach (GimnasticarUcesnik g2 in Gimnasticari) { if (g2.Id == g.Id) return true; } return false; }
private void btnAdd_Click(object sender, EventArgs e) { SelectGimnasticarUcesnikForm form = null; try { form = new SelectGimnasticarUcesnikForm(ActiveKategorija.Takmicenje.Id, takmicenje.Gimnastika, ActiveKategorija); form.MultiSelect = false; if (form.ShowDialog() != DialogResult.OK || form.SelectedEntities.Count != 1) { return; } } catch (InfrastructureException ex) { MessageDialogs.showError(ex.Message, this.Text); return; } GimnasticarUcesnik g = (GimnasticarUcesnik)form.SelectedEntities[0]; if (!ucestvuje(g, deoTakKod)) { string msg = String.Format( "Gimnasticar '{0}' ne ucestvuje u {1}.", g.ImeSrednjeImePrezime, DeoTakmicenjaKodovi.toString(deoTakKod)); MessageDialogs.showMessage(msg, this.Text); return; } Ocena ocena = null; ISession session = null; try { using (session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); ocena = DAOFactoryFactory.DAOFactory.GetOcenaDAO().FindOcena(g, deoTakKod, ActiveSprava); } } catch (Exception ex) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } MessageDialogs.showError(ex.Message, this.Text); Close(); return; } finally { CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } bool edit; OcenaForm f; if (ocena != null) { edit = true; f = new OcenaForm(ocena.Id, g, ActiveSprava, deoTakKod, takmicenje.Id); } else { edit = false; f = new OcenaForm(null, g, ActiveSprava, deoTakKod, takmicenje.Id); } try { if (f.ShowDialog() != DialogResult.OK) { return; } } catch (InfrastructureException ex) { MessageDialogs.showError(ex.Message, this.Text); return; } Cursor.Current = Cursors.WaitCursor; Cursor.Show(); ocena = null; session = null; try { using (session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); ocena = DAOFactoryFactory.DAOFactory.GetOcenaDAO().FindByIdFetch(f.Entity.Id); } } catch (Exception ex) { if (session != null && session.Transaction != null && session.Transaction.IsActive) { session.Transaction.Rollback(); } MessageDialogs.showError(ex.Message, this.Text); Close(); return; } finally { Cursor.Hide(); Cursor.Current = Cursors.Arrow; CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } bool opened = gridOpened(g.TakmicarskaKategorija, ActiveSprava); showGridOcene(g.TakmicarskaKategorija, ActiveSprava); List <Ocena> activeOcene = ocene[calculateOceneKey(g.TakmicarskaKategorija, ActiveSprava)]; if (!edit) { // nova ocena se dodaje u listu activeOcene samo ako je grid vec bio // prikazivan; ako se grid prvi put prikazuje, ocene se ucitavaju i // medju njima se nalazi i ona koja je upravo dodata. if (opened) { activeOcene.Add(ocena); } } else { activeOcene[activeOcene.IndexOf(ocena)] = ocena; } setOcene(activeOcene); selectOcena(ocena); }
private bool canAddGimnasticar(Ekipa ekipa, GimnasticarUcesnik gimnasticar) { // TODO: Najpre proveri da li ekipa vec ima max broj clanova. Takodje, // razmisli da li clan ekipe mora da bude i ucesnik rez. takmicenja // u kome se ekipa takmici. return !ekipa.Gimnasticari.Contains(gimnasticar); }
private void insertOcene(Takmicenje takmicenje) { TakmicarskaKategorija seniori = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO() .FindByTakmicenje(takmicenje.Id)[0]; IList <GimnasticarUcesnik> gimnasticari = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO() .FindByTakmicenje(takmicenje.Id); Dictionary <int, GimnasticarUcesnik> gimnasticariMap = new Dictionary <int, GimnasticarUcesnik>(); //foreach (GimnasticarUcesnik g in gimnasticari) // gimnasticariMap.Add(g.TakmicarskiBroj.Value, g); DeoTakmicenjaKod[] deoTakmicenja = { DeoTakmicenjaKod.Takmicenje1, DeoTakmicenjaKod.Takmicenje2, DeoTakmicenjaKod.Takmicenje3 }; string[] fileNames; if (gimnastika == Gimnastika.MSG) { fileNames = new string[] { @"..\..\test\Data\OceneKvalifikacijeMuskarci.txt", @"..\..\test\Data\OceneVisebojMuskarci.txt", @"..\..\test\Data\OceneSpraveMuskarci.txt" } } ; else { fileNames = new string[] { @"..\..\test\Data\OceneKvalifikacijeZene.txt", @"..\..\test\Data\OceneVisebojZene.txt", @"..\..\test\Data\OceneSpraveZene.txt" } }; for (int i = 0; i < deoTakmicenja.Length; i++) { List <Ocena> ocene = new List <Ocena>(); OceneParser parser = new OceneParser(gimnasticariMap); parser.parse(fileNames[i]); TakmicarskaKategorija kategorija = seniori; int rank; int broj = 0; Ocena ocena = null; foreach (object[] o in parser.Ocene) { Sprava sprava = Sprave.parse((string)o[0]); if ((string)o[1] != "") { rank = Convert.ToInt32(o[1]); } if ((string)o[2] != "") { broj = Convert.ToInt32(o[2]); } Nullable <byte> brojPreskoka = null; if ((string)o[3] != "") { brojPreskoka = Convert.ToByte(o[3]); } Nullable <short> vreme = null; if ((string)o[4] != "") { vreme = parseMinutSecond((string)o[4]); } float D = Convert.ToSingle(replaceDelimiter(o[5])); float E1 = Convert.ToSingle(replaceDelimiter(o[6])); float E2 = Convert.ToSingle(replaceDelimiter(o[7])); float E3 = Convert.ToSingle(replaceDelimiter(o[8])); float E4 = Convert.ToSingle(replaceDelimiter(o[9])); float E5 = Convert.ToSingle(replaceDelimiter(o[10])); float E6 = Convert.ToSingle(replaceDelimiter(o[11])); float E = Convert.ToSingle(replaceDelimiter(o[12])); Nullable <float> pen = null; if ((string)o[13] != "") { pen = Convert.ToSingle(replaceDelimiter(o[13])); } Nullable <float> L = null; if ((string)o[14] != "") { L = Convert.ToSingle(replaceDelimiter(o[14])); } Nullable <float> T = null; if ((string)o[15] != "") { T = Convert.ToSingle(replaceDelimiter(o[15])); } Nullable <float> O = null; if ((string)o[16] != "") { O = Convert.ToSingle(replaceDelimiter(o[16])); } Nullable <float> ocenaPreskok = null; if ((string)o[17] != "") { ocenaPreskok = Convert.ToSingle(replaceDelimiter(o[17])); } Nullable <float> total = null; if ((string)o[18] != "") { total = Convert.ToSingle(replaceDelimiter(o[18])); } if (sprava != Sprava.Preskok || brojPreskoka != 2) { ocena = new Ocena(); ocena.Sprava = sprava; ocena.DeoTakmicenjaKod = deoTakmicenja[i]; //ocena.VremeVezbe = vreme; ocena.D = D; ocena.E1 = E1; ocena.E2 = E2; ocena.E3 = E3; ocena.E4 = E4; ocena.E5 = E5; ocena.E6 = E6; ocena.E = E; ocena.Penalty = pen; //ocena.LinePenalty = L; //ocena.TimePenalty = T; //ocena.OtherPenalty = O; if (sprava != Sprava.Preskok || deoTakmicenja[i] == DeoTakmicenjaKod.Takmicenje2) { // za finale viseboja postoji samo jedna ocena preskoka ocena.Total = total; } else { ocena.Total = ocenaPreskok; } ocena.BrojEOcena = 6; ocena.RucnoUnetaOcena = false; GimnasticarUcesnik gimnasticar = gimnasticariMap[broj]; if (gimnasticar == null) { throw new Exception("Greska prilikom dodavanja rasporeda sudija."); } ocena.Gimnasticar = gimnasticar; ocene.Add(ocena); } else { DrugaOcena ocena2 = new DrugaOcena(); ocena2.D = D; ocena2.E1 = E1; ocena2.E2 = E2; ocena2.E3 = E3; ocena2.E4 = E4; ocena2.E5 = E5; ocena2.E6 = E6; ocena2.E = E; ocena2.Penalty = pen; //ocena2.LinePenalty = L; //ocena2.OtherPenalty = O; ocena2.Total = ocenaPreskok; ocena2.BrojEOcena = 6; ocena2.RucnoUnetaOcena = false; ocena.Ocena2 = ocena2; ocena.TotalObeOcene = ocena.getTotalObeOcene(takmicenje.BrojDecimalaTotal); } } /* dataContext.Evict(takmicenje); * foreach (GimnasticarUcesnik g in gimnasticari) * dataContext.Evict(g); * dataContext.Evict(seniori); */ foreach (Ocena o in ocene) { DAOFactoryFactory.DAOFactory.GetOcenaDAO().Add(o); } } }
public virtual void gimnasticarDeletedFromEkipa(GimnasticarUcesnik g, Ekipa e, IList<Ocena> ocene, RezultatskoTakmicenje rezTak) { if (Ekipe.Contains(e)) PoredakEkipno.gimnasticarDeletedFromEkipa(g, e, ocene, rezTak); }
public virtual void gimnasticarAdded(GimnasticarUcesnik g, IList<Ocena> ocene, RezultatskoTakmicenje rezTak) { PoredakUkupno.addGimnasticar(g, ocene, rezTak); foreach (Ocena o in ocene) { if (o.Sprava == Sprava.Preskok) PoredakPreskok.addGimnasticar(g, o, rezTak); else getPoredakSprava(o.Sprava).addGimnasticar(g, o, rezTak); } }
private void insertRezultatSpravaFinaleKupaUpdate(GimnasticarUcesnik gimnasticar, RezultatskoTakmicenje rezTak, Sprava sprava, KvalifikacioniStatus newKvalStatus) { RezultatSpravaFinaleKupaDAO dao = new RezultatSpravaFinaleKupaDAO(); if (!dao.postojiRezultatSpravaFinaleKupaUpdate(gimnasticar, rezTak, sprava)) dao.insert(gimnasticar, rezTak, sprava, newKvalStatus); else dao.update(gimnasticar, rezTak, sprava, newKvalStatus); }
public virtual UcesnikTakmicenja2 getUcesnikKvalifikant(GimnasticarUcesnik g) { foreach (UcesnikTakmicenja2 u in Ucesnici) { if (g.Equals(u.Gimnasticar) && u.KvalStatus == KvalifikacioniStatus.Q) return u; } return null; }
private bool ucestvuje(GimnasticarUcesnik g, DeoTakmicenjaKod deoTakKod) { // TODO2: return(true); }
private Ocena loadOcena(GimnasticarUcesnik g, DeoTakmicenjaKod deoTakKod, Sprava spava) { IList<Ocena> ocene = loadOcene(g, deoTakKod); foreach (Ocena o in ocene) { if (o.Sprava == spava) return o; } return null; }
private void insertStartListe(Takmicenje takmicenje) { TakmicarskaKategorija seniori = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO() .FindByTakmicenje(takmicenje.Id)[0]; IList <GimnasticarUcesnik> gim_uces = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO() .FindByTakmicenje(takmicenje.Id); Dictionary <int, GimnasticarUcesnik> gim_ucesnici = new Dictionary <int, GimnasticarUcesnik>(); //foreach (GimnasticarUcesnik g in gim_uces) // gim_ucesnici.Add(g.TakmicarskiBroj.Value, g); DeoTakmicenjaKod[] deoTakmicenja = { DeoTakmicenjaKod.Takmicenje1, DeoTakmicenjaKod.Takmicenje2, DeoTakmicenjaKod.Takmicenje3 }; string[] fileNames; if (gimnastika == Gimnastika.MSG) { fileNames = new string[] { @"..\..\test\Data\StartListaKvalifikacijeMuskarci.txt", @"..\..\test\Data\StartListaVisebojMuskarci.txt", @"..\..\test\Data\StartListaSpraveMuskarci.txt" } } ; else { fileNames = new string[] { @"..\..\test\Data\StartListaKvalifikacijeZene.txt", @"..\..\test\Data\StartListaVisebojZene.txt", @"..\..\test\Data\StartListaSpraveZene.txt" } }; for (int i = 0; i < deoTakmicenja.Length; i++) { List <TakmicarskaKategorija> list = new List <TakmicarskaKategorija>(); list.Add(seniori); RasporedNastupa raspored = new RasporedNastupa(list, deoTakmicenja[i], gimnastika, 0); StartListaParser parser = new StartListaParser(); parser.parse(fileNames[i]); foreach (object[] o in parser.NastupiNaSpravi) { Sprava sprava = Sprave.parse((string)o[0]); int grupa = (int)o[1]; int rot = (int)o[2]; int broj = (int)o[3]; bool nastupaDvaPuta = (bool)o[4]; GimnasticarUcesnik gimnasticar = gim_ucesnici[broj]; if (gimnasticar == null) { throw new Exception("Greska prilikom dodavanja rasporeda nastupa."); } NastupNaSpravi nastup = new NastupNaSpravi(gimnasticar, 0); while (raspored.getStartLista(sprava, grupa, rot) == null) { raspored.addNewGrupa(gimnastika); } raspored.getStartLista(sprava, grupa, rot).addNastup(nastup); } /* dataContext.Evict(takmicenje); * foreach (GimnasticarUcesnik g in gim_uces) * dataContext.Evict(g); * dataContext.Evict(seniori); */ DAOFactoryFactory.DAOFactory.GetRasporedNastupaDAO().Add(raspored); } }
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 Ocena findOcena(GimnasticarUcesnik g, DeoTakmicenjaKod deoTakKod, Sprava sprava) { IList<Ocena> result = dataContext. ExecuteNamedQuery<Ocena>("FindOcena", new string[] { "gimnasticarId", "deoTakKod", "sprava" }, new object[] { g.Id, deoTakKod, sprava }); if (result.Count > 0) return result[0]; else return null; }
private IList<RezultatskoTakmicenje> loadRezTakmicenja(GimnasticarUcesnik g) { return dataContext.ExecuteNamedQuery<RezultatskoTakmicenje>( "FindRezTakmicenjaForGimnasticar", new string[] { "gimnasticar" }, new object[] { g }); }
private IList<Ocena> loadOcene(GimnasticarUcesnik g, DeoTakmicenjaKod deoTakKod) { IDataContext dataContext = null; try { DataAccessProviderFactory factory = new DataAccessProviderFactory(); dataContext = factory.GetDataContext(); dataContext.BeginTransaction(); return dataContext.ExecuteNamedQuery<Ocena>( "FindOceneForGimnasticar", new string[] { "gim", "deoTakKod" }, new object[] { g, deoTakKod }); } catch (Exception ex) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); throw new InfrastructureException( Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } finally { if (dataContext != null) dataContext.Dispose(); dataContext = null; } }
public virtual void deleteGimnasticar(GimnasticarUcesnik g, RezultatskoTakmicenje rezTak) { RezultatPreskok r = getRezultat(g); if (r != null) { Rezultati.Remove(r); rankRezultati(); updateKvalStatus(rezTak.Propozicije); } }
private bool hasNastup(GimnasticarUcesnik g) { IDataContext dataContext = null; try { DataAccessProviderFactory factory = new DataAccessProviderFactory(); dataContext = factory.GetDataContext(); dataContext.BeginTransaction(); string query = @"select distinct n from NastupNaSpravi n where n.Gimnasticar = :gim"; IList<NastupNaSpravi> result = dataContext. ExecuteQuery<NastupNaSpravi>(QueryLanguageType.HQL, query, new string[] { "gim" }, new object[] { g }); return result.Count > 0; } catch (Exception ex) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); // TODO: Izgleda da se ovaj izuzetak nigde ne hendluje. throw new InfrastructureException( Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } finally { if (dataContext != null) dataContext.Dispose(); dataContext = null; } }
public virtual void removeKvalifikant(GimnasticarUcesnik gimnasticar, Sprava sprava) { UcesnikTakmicenja3 kvalifikant = getUcesnikKvalifikant(gimnasticar, sprava); if (kvalifikant != null) { foreach (UcesnikTakmicenja3 u in getUcesniciKvalifikanti(sprava)) { if (u.QualOrder > kvalifikant.QualOrder) u.QualOrder--; } Ucesnici.Remove(kvalifikant); } }
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 void update(GimnasticarUcesnik gimnasticar, RezultatskoTakmicenje rezTak, Sprava sprava, KvalifikacioniStatus newKvalStatus) { SqlCeConnection conn = new SqlCeConnection(ConfigurationParameters.ConnectionString); SqlCeCommand cmd = new SqlCeCommand(updateSQL, conn); cmd.Parameters.Add("@rez_takmicenje_id", SqlDbType.Int).Value = rezTak.Id; cmd.Parameters.Add("@gimnasticar_id", SqlDbType.Int).Value = gimnasticar.Id; cmd.Parameters.Add("@sprava", SqlDbType.TinyInt).Value = sprava; cmd.Parameters.Add("@kval_status", SqlDbType.TinyInt).Value = newKvalStatus; SqlCeTransaction tr = null; try { conn.Open(); tr = conn.BeginTransaction(); // zbog updateDependents, inace ne mora cmd.Transaction = tr; int recordsAffected = cmd.ExecuteNonQuery(); if (recordsAffected != 1) { // TODO: Ukoliko se radi optimistic offline lock, ova grana se // ce se izvrsavati ako su podaci u bazi u medjuvremenu promenjeni, // pa bi trebalo izbaciti izuzetak koji bi to signalizirao // (npr. NHibernate ima izuzetak StaleObjectStateException). // Generalno, i kod insert i kod update i kod delete bi // slucajevi gde se komanda izvrsi bez problema ali se // recordsAffected razlikuje od ocekivanog // trebalo da se signaliziraju razlicitim tipom izuzetka throw new InfrastructureException(Strings.DatabaseAccessExceptionMessage); } tr.Commit(); // TODO: this can throw Exception and InvalidOperationException } catch (SqlCeException ex) { // in Open() if (tr != null) tr.Rollback(); // TODO: this can throw Exception and InvalidOperationException throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } catch (InvalidOperationException ex) { // in ExecuteNonQuery(), ExecureScalar() if (tr != null) tr.Rollback(); throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex); } // za svaki slucaj catch (Exception) { if (tr != null) tr.Rollback(); throw; } finally { conn.Close(); } }
public virtual void addGimnasticar(GimnasticarUcesnik gimnasticar) { Gimnasticari.Add(gimnasticar); }
private string deleteConfirmationMessage(GimnasticarUcesnik gimnasticar) { return(String.Format("Da li zelite da izbrisete gimnasticara \"{0}\"?", gimnasticar)); }
public virtual void gimnasticarDeleted(GimnasticarUcesnik g, IList vezbaneSprave, RezultatskoTakmicenje rezTak) { PoredakUkupno.deleteGimnasticar(g, rezTak); foreach (Sprava s in vezbaneSprave) { if (s == Sprava.Preskok) PoredakPreskok.deleteGimnasticar(g, rezTak); else getPoredakSprava(s).deleteGimnasticar(g, rezTak); } }
private void mnSpraveKojeSeBoduju_Click(object sender, EventArgs e) { IList <GimnasticarUcesnik> selItems = getActiveDataGridViewUserControl() .getSelectedItems <GimnasticarUcesnik>(); if (selItems.Count != 1) { return; } GimnasticarUcesnik g = selItems[0]; List <int> checkedItems = new List <int>(); foreach (Sprava s in Sprave.getSprave(ActiveRezTakmicenje.Gimnastika)) { if (g.getSpravaSeBoduje(s)) { checkedItems.Add(Sprave.indexOf(s, ActiveRezTakmicenje.Gimnastika)); } } CheckListForm form = new CheckListForm( new List <string>(Sprave.getSpraveNazivi(ActiveRezTakmicenje.Gimnastika)), checkedItems, "Izaberite sprave koje se boduju", "Sprave koje se boduju", true, "Izaberite sprave", true); if (form.ShowDialog() != DialogResult.OK) { return; } Sprava[] sprave = Sprave.getSprave(ActiveRezTakmicenje.Gimnastika); IList <Sprava> spraveKojeSeBoduju = new List <Sprava>(); g.clearSpraveKojeSeBoduju(); foreach (int i in form.CheckedIndices) { g.setSpravaSeBoduje(sprave[i]); } Cursor.Current = Cursors.WaitCursor; Cursor.Show(); ISession session = null; try { using (session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO().Update(g); PoredakSpravaDAO poredakSpravaDAO = DAOFactoryFactory.DAOFactory.GetPoredakSpravaDAO(); PoredakPreskokDAO poredakPreskokDAO = DAOFactoryFactory.DAOFactory.GetPoredakPreskokDAO(); OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO(); IList <Ocena> ocene = ocenaDAO.FindByDeoTakmicenja(takmicenje.Id, DeoTakmicenjaKod.Takmicenje1); foreach (Sprava s in Sprave.getSprave(ActiveRezTakmicenje.Gimnastika)) { if (s != Sprava.Preskok) { PoredakSprava p = ActiveRezTakmicenje.getPoredakSprava(DeoTakmicenjaKod.Takmicenje1, s); poredakSpravaDAO.Attach(p, false); p.create(ActiveRezTakmicenje, ocene); poredakSpravaDAO.Update(p); } else { PoredakPreskok p = ActiveRezTakmicenje.getPoredakPreskok(DeoTakmicenjaKod.Takmicenje1); poredakPreskokDAO.Attach(p, false); p.create(ActiveRezTakmicenje, ocene); poredakPreskokDAO.Update(p); } } foreach (Ocena o in ocene) { ocenaDAO.Evict(o); } 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); Close(); return; } finally { Cursor.Hide(); Cursor.Current = Cursors.Arrow; CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } }
public virtual void removeGimnasticar(GimnasticarUcesnik gimnasticar) { Gimnasticari.Remove(gimnasticar); }
// 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); } } }
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); } }
// can throw InfrastructureException public bool postojiRezultatSpravaFinaleKupaUpdate(GimnasticarUcesnik gimnasticar, RezultatskoTakmicenje rezTak, Sprava sprava) { SqlCeCommand cmd = new SqlCeCommand(findSQL); cmd.Parameters.Add("@rez_takmicenje_id", SqlDbType.Int).Value = rezTak.Id; cmd.Parameters.Add("@gimnasticar_id", SqlDbType.Int).Value = gimnasticar.Id; cmd.Parameters.Add("@sprava", SqlDbType.TinyInt).Value = sprava; SqlCeDataReader rdr = Database.executeReader(cmd, Strings.DatabaseAccessExceptionMessage); bool result = false; if (rdr.Read()) result = true; rdr.Close(); return result; }