public virtual void addGimnasticar(GimnasticarUcesnik g, RezultatskoTakmicenje rezTak, RezultatskoTakmicenje rezTak1, RezultatskoTakmicenje rezTak2) { RezultatUkupnoFinaleKupa rezultat = new RezultatUkupnoFinaleKupa(); rezultat.Gimnasticar = g; foreach (RezultatUkupno r in rezTak1.Takmicenje1.PoredakUkupno.Rezultati) { if (r.Gimnasticar.Equals(g)) { rezultat.initPrvoKolo(r); break; } } foreach (RezultatUkupno r in rezTak2.Takmicenje1.PoredakUkupno.Rezultati) { if (r.Gimnasticar.Equals(g)) { rezultat.initDrugoKolo(r); break; } } rezultat.calculateTotal(rezTak.Propozicije.NacinRacunanjaOceneFinaleKupaTak2); Rezultati.Add(rezultat); rankRezultati(rezTak.Propozicije); }
public virtual void create(RezultatskoTakmicenje rezTak, IList<Ocena> ocene) { IList<GimnasticarUcesnik> gimnasticari; if (deoTakKod == DeoTakmicenjaKod.Takmicenje1) gimnasticari = new List<GimnasticarUcesnik>(rezTak.Takmicenje1.Gimnasticari); else gimnasticari = new List<GimnasticarUcesnik>(rezTak.Takmicenje2.getUcesniciGimKvalifikanti()); IDictionary<int, RezultatUkupno> rezultatiMap = new Dictionary<int, RezultatUkupno>(); foreach (GimnasticarUcesnik g in gimnasticari) { RezultatUkupno rezultat = new RezultatUkupno(); rezultat.Gimnasticar = g; rezultatiMap.Add(g.Id, rezultat); } foreach (Ocena o in ocene) { if (rezultatiMap.ContainsKey(o.Gimnasticar.Id)) rezultatiMap[o.Gimnasticar.Id].addOcena(o); } List<RezultatUkupno> rezultati = new List<RezultatUkupno>(rezultatiMap.Values); Rezultati.Clear(); foreach (RezultatUkupno rez in rezultati) Rezultati.Add(rez); rankRezultati(); updateKvalStatus(rezTak.Propozicije); }
public virtual void create(RezultatskoTakmicenje rezTak, RezultatskoTakmicenje rezTak1, RezultatskoTakmicenje rezTak2, RezultatskoTakmicenje rezTak3, RezultatskoTakmicenje rezTak4) { IList <GimnasticarUcesnik> gimnasticari = new List <GimnasticarUcesnik>(rezTak.Takmicenje1.Gimnasticari); // NOTE: Da bi GimnasticarUcesnik mogao da se koristi kao key u Dictionary, mora da implementira // interfejs IEquatable<GimnasticarUcesnik>. IDictionary <GimnasticarUcesnik, RezultatUkupnoZbirViseKola> rezultatiMap = new Dictionary <GimnasticarUcesnik, RezultatUkupnoZbirViseKola>(); foreach (GimnasticarUcesnik g in gimnasticari) { RezultatUkupnoZbirViseKola rezultat = new RezultatUkupnoZbirViseKola(); rezultat.Gimnasticar = g; rezultatiMap.Add(g, rezultat); } foreach (RezultatUkupno r in rezTak1.Takmicenje1.PoredakUkupno.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { rezultatiMap[r.Gimnasticar].initPrvoKolo(r); } } foreach (RezultatUkupno r in rezTak2.Takmicenje1.PoredakUkupno.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { rezultatiMap[r.Gimnasticar].initDrugoKolo(r); } } if (rezTak3 != null) { foreach (RezultatUkupno r in rezTak3.Takmicenje1.PoredakUkupno.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { rezultatiMap[r.Gimnasticar].initTreceKolo(r); } } } if (rezTak4 != null) { foreach (RezultatUkupno r in rezTak4.Takmicenje1.PoredakUkupno.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { rezultatiMap[r.Gimnasticar].initCetvrtoKolo(r); } } } Rezultati.Clear(); foreach (RezultatUkupnoZbirViseKola r in rezultatiMap.Values) { r.calculateTotal(); Rezultati.Add(r); } rankRezultati(); }
public virtual void updateRezultatiOnGimnasticarDeleted(GimnasticarUcesnik g, IList <Ocena> ocene, RezultatskoTakmicenje rezTak) { PoredakUkupno.deleteGimnasticar(g, rezTak); foreach (Ocena o in ocene) { if (o.Sprava == Sprava.Preskok) { PoredakPreskok.deleteGimnasticar(g, rezTak); } else { getPoredakSprava(o.Sprava).deleteGimnasticar(g, rezTak); } } if (PoredakUkupnoFinaleKupa != null) { PoredakUkupnoFinaleKupa.deleteGimnasticar(g, rezTak); } foreach (PoredakSpravaFinaleKupa p in PoredakSpravaFinaleKupa) { p.deleteGimnasticar(g, rezTak); } if (PoredakUkupnoZbirViseKola != null) { PoredakUkupnoZbirViseKola.deleteGimnasticar(g, rezTak); } }
public virtual void addEkipa(Ekipa e, RezultatskoTakmicenje rezTak, RezultatskoTakmicenje rezTak1, RezultatskoTakmicenje rezTak2) { RezultatEkipnoFinaleKupa rezultat = new RezultatEkipnoFinaleKupa(); rezultat.Ekipa = e; foreach (RezultatEkipno r in rezTak1.Takmicenje1.PoredakEkipno.Rezultati) { if (r.Ekipa.Equals(e)) { rezultat.initPrvoKolo(r); break; } } foreach (RezultatEkipno r in rezTak2.Takmicenje1.PoredakEkipno.Rezultati) { if (r.Ekipa.Equals(e)) { rezultat.initDrugoKolo(r); break; } } rezultat.calculateTotal(rezTak.Propozicije.NacinRacunanjaOceneFinaleKupaTak4); Rezultati.Add(rezultat); rankRezultati(rezTak.Propozicije); }
// Za finale kupa public virtual void updateRezultatiOnGimnasticarAdded(GimnasticarUcesnik g, IList <Ocena> ocene, RezultatskoTakmicenje rezTak, RezultatskoTakmicenje rezTak1, RezultatskoTakmicenje rezTak2) { PoredakUkupnoFinaleKupa.addGimnasticar(g, rezTak, rezTak1, rezTak2); foreach (PoredakSpravaFinaleKupa p in PoredakSpravaFinaleKupa) { p.addGimnasticar(g, rezTak, rezTak1, rezTak2); } if (rezTak.odvojenoTak2()) { PoredakUkupno.addGimnasticar(g, ocene, rezTak); } if (rezTak.odvojenoTak3()) { foreach (Ocena o in ocene) { if (o.Sprava == Sprava.Preskok) { PoredakPreskok.addGimnasticar(g, o, rezTak); } else { getPoredakSprava(o.Sprava).addGimnasticar(g, o, rezTak); } } } }
public virtual void updateRezultatEkipe(Ekipa e, RezultatskoTakmicenje rezTak, List <RezultatUkupno> rezultati) { if (rezTak.ImaEkipnoTakmicenje) { PoredakEkipno.recreateRezultat(e, rezTak, rezultati); } }
public static IDictionary <int, List <RezultatUkupno> > getEkipaRezultatiUkupnoMap( RezultatskoTakmicenje rt, IList <RezultatskoTakmicenje> svaRezTakmicenja, DeoTakmicenjaKod deoTakKod) { IList <RezultatskoTakmicenje> list = new List <RezultatskoTakmicenje>(); list.Add(rt); return(getEkipaRezultatiUkupnoMap(list, svaRezTakmicenja, deoTakKod)); }
public virtual void updateRezultatiOnEkipaAdded(Ekipa e, RezultatskoTakmicenje rezTak, List <RezultatUkupno> rezultati) { if (rezTak.ImaEkipnoTakmicenje) { PoredakEkipno.addEkipa(e, rezTak, rezultati); } }
public RezultatiSpravaForm(int takmicenjeId, DeoTakmicenjaKod deoTakKod, bool selectMode, RezultatskoTakmicenje startTakmicenje, Sprava startSprava) { InitializeComponent(); this.deoTakKod = deoTakKod; this.selectMode = selectMode; Cursor.Current = Cursors.WaitCursor; Cursor.Show(); try { DataAccessProviderFactory factory = new DataAccessProviderFactory(); dataContext = factory.GetDataContext(); dataContext.BeginTransaction(); takmicenje = dataContext.GetById<Takmicenje>(takmicenjeId); NHibernateUtil.Initialize(takmicenje); IList<RezultatskoTakmicenje> svaRezTakmicenja = loadRezTakmicenja(takmicenjeId); if (svaRezTakmicenja.Count == 0) throw new BusinessException("Morate najpre da unesete takmicarske kategorije."); rezTakmicenja = takmicenje.getRezTakmicenjaSprava(svaRezTakmicenja, deoTakKod, false); if (rezTakmicenja.Count == 0) throw new BusinessException("Ne postoji takmicenje III ni za jednu kategoriju."); initUI(startTakmicenje, startSprava); rezultatiOpened = new HashSet<int>(); } catch (BusinessException) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); throw; } catch (InfrastructureException) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); throw; } 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; Cursor.Hide(); Cursor.Current = Cursors.Arrow; } }
public virtual void create(RezultatskoTakmicenje rezTak, RezultatskoTakmicenje rezTak1, RezultatskoTakmicenje rezTak2, RezultatskoTakmicenje rezTak3, RezultatskoTakmicenje rezTak4) { // NOTE: Da bi Ekipa mogla da se koristi kao key u Dictionary, mora da implementira // interfejs IEquatable<Ekipa>. IDictionary <Ekipa, RezultatEkipnoZbirViseKola> rezultatiMap = new Dictionary <Ekipa, RezultatEkipnoZbirViseKola>(); foreach (Ekipa e in rezTak.Takmicenje1.Ekipe) { RezultatEkipnoZbirViseKola rezultat = new RezultatEkipnoZbirViseKola(); rezultat.Ekipa = e; rezultatiMap.Add(e, rezultat); } foreach (RezultatEkipno r in rezTak1.Takmicenje1.PoredakEkipno.Rezultati) { if (rezultatiMap.ContainsKey(r.Ekipa)) { rezultatiMap[r.Ekipa].initPrvoKolo(r); } } foreach (RezultatEkipno r in rezTak2.Takmicenje1.PoredakEkipno.Rezultati) { if (rezultatiMap.ContainsKey(r.Ekipa)) { rezultatiMap[r.Ekipa].initDrugoKolo(r); } } if (rezTak3 != null) { foreach (RezultatEkipno r in rezTak3.Takmicenje1.PoredakEkipno.Rezultati) { if (rezultatiMap.ContainsKey(r.Ekipa)) { rezultatiMap[r.Ekipa].initTreceKolo(r); } } } if (rezTak4 != null) { foreach (RezultatEkipno r in rezTak4.Takmicenje1.PoredakEkipno.Rezultati) { if (rezultatiMap.ContainsKey(r.Ekipa)) { rezultatiMap[r.Ekipa].initCetvrtoKolo(r); } } } Rezultati.Clear(); foreach (RezultatEkipnoZbirViseKola r in rezultatiMap.Values) { r.calculateTotal(); Rezultati.Add(r); } rankRezultati(); }
// Za zbir vise kola public virtual void updateRezultatiOnEkipaAdded(Ekipa e, RezultatskoTakmicenje rezTak, RezultatskoTakmicenje rezTak1, RezultatskoTakmicenje rezTak2, RezultatskoTakmicenje rezTak3, RezultatskoTakmicenje rezTak4) { if (rezTak.ImaEkipnoTakmicenje) { PoredakEkipnoZbirViseKola.addEkipa(e, rezTak, rezTak1, rezTak2, rezTak3, rezTak4); } }
//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) { RezultatSprava r = new RezultatSprava(); r.Gimnasticar = g; r.setOcena(o); Rezultati.Add(r); rankRezultati(rezTak.Propozicije); }
public virtual void deleteGimnasticar(GimnasticarUcesnik g, RezultatskoTakmicenje rezTak) { RezultatUkupnoZbirViseKola r = getRezultat(g); if (r != null) { Rezultati.Remove(r); rankRezultati(); } }
public virtual void deleteGimnasticar(GimnasticarUcesnik g, RezultatskoTakmicenje rezTak) { RezultatUkupnoFinaleKupa r = getRezultat(g); if (r != null) { Rezultati.Remove(r); rankRezultati(rezTak.Propozicije); } }
public virtual void editOcena(Ocena o, RezultatskoTakmicenje rezTak) { RezultatSprava r = getRezultat(o.Gimnasticar); if (r != null) { r.setOcena(o); rankRezultati(rezTak.Propozicije); } }
public virtual void addOcena(Ocena o, RezultatskoTakmicenje rezTak) { RezultatUkupno r = getRezultat(o.Gimnasticar); if (r != null) { r.addSprava(o, rezTak.Propozicije.ZaPreskokVisebojRacunajBoljuOcenu); rankRezultati(rezTak.Propozicije); } }
public virtual void deleteEkipa(Ekipa e, RezultatskoTakmicenje rezTak) { RezultatEkipnoFinaleKupa r = getRezultat(e); if (r != null) { Rezultati.Remove(r); rankRezultati(rezTak.Propozicije); } }
public virtual void deleteEkipa(Ekipa e, RezultatskoTakmicenje rezTak) { RezultatEkipnoZbirViseKola r = getRezultat(e); if (r != null) { Rezultati.Remove(r); rankRezultati(); } }
public virtual void addOcena(Ocena o, RezultatskoTakmicenje rezTak) { RezultatUkupno r = getRezultat(o.Gimnasticar); if (r != null) { r.addOcena(o); rankRezultati(); updateKvalStatus(rezTak.Propozicije); } }
public virtual void deleteOcena(Ocena o, RezultatskoTakmicenje rezTak) { RezultatUkupno r = getRezultat(o.Gimnasticar); if (r != null) { r.clearSprava(o.Sprava); rankRezultati(rezTak.Propozicije); } }
public virtual void addGimnasticar(GimnasticarUcesnik g, RezultatskoTakmicenje rezTak, RezultatskoTakmicenje rezTak1, RezultatskoTakmicenje rezTak2) { RezultatSpravaFinaleKupa rezultat = new RezultatSpravaFinaleKupa(); rezultat.Gimnasticar = g; if (Sprava != Sprava.Preskok) { foreach (RezultatSprava r in rezTak1.Takmicenje1.getPoredakSprava(Sprava).Rezultati) { if (r.Gimnasticar.Equals(g)) { rezultat.initPrvoKolo(r); break; } } foreach (RezultatSprava r in rezTak2.Takmicenje1.getPoredakSprava(Sprava).Rezultati) { if (r.Gimnasticar.Equals(g)) { rezultat.initDrugoKolo(r); break; } } } else { bool postojeObaPreskoka = rezTak1.Takmicenje1.PoredakPreskok.postojeObaPreskoka(); foreach (RezultatPreskok r in rezTak1.Takmicenje1.PoredakPreskok.Rezultati) { if (r.Gimnasticar.Equals(g)) { rezultat.initPrvoKolo(r, rezTak1.Propozicije.Tak1PreskokNaOsnovuObaPreskoka, postojeObaPreskoka); break; } } postojeObaPreskoka = rezTak2.Takmicenje1.PoredakPreskok.postojeObaPreskoka(); foreach (RezultatPreskok r in rezTak2.Takmicenje1.PoredakPreskok.Rezultati) { if (r.Gimnasticar.Equals(g)) { rezultat.initDrugoKolo(r, rezTak2.Propozicije.Tak1PreskokNaOsnovuObaPreskoka, postojeObaPreskoka); break; } } } rezultat.calculateTotal(rezTak.Propozicije.NacinRacunanjaOceneFinaleKupaTak3); Rezultati.Add(rezultat); rankRezultati(rezTak.Propozicije); }
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); }
// TODO3: Proveri zasto sam zakomentarisao ovaj i sledece metode. public virtual void addOcena(Ocena o, RezultatskoTakmicenje rezTak) { /* IList<RezultatEkipno> rezultati = getRezultati(o.Gimnasticar); if (rezultati.Count == 0) return; foreach (RezultatEkipno r in rezultati) r.addOcena(o); rankRezultati(); updateKvalStatus(rezTak.Propozicije); */ }
// Za finale kupa public virtual void updateRezultatiOnEkipaAdded(Ekipa e, List <RezultatUkupno> rezultati, RezultatskoTakmicenje rezTak, RezultatskoTakmicenje rezTak1, RezultatskoTakmicenje rezTak2) { if (!rezTak.ImaEkipnoTakmicenje) { return; } PoredakEkipnoFinaleKupa.addEkipa(e, rezTak, rezTak1, rezTak2); if (rezTak.odvojenoTak4()) { PoredakEkipno.addEkipa(e, rezTak, rezultati); } }
public virtual void addGimnasticar(GimnasticarUcesnik g, RezultatskoTakmicenje rezTak, RezultatskoTakmicenje rezTak1, RezultatskoTakmicenje rezTak2, RezultatskoTakmicenje rezTak3, RezultatskoTakmicenje rezTak4) { RezultatUkupnoZbirViseKola rezultat = new RezultatUkupnoZbirViseKola(); rezultat.Gimnasticar = g; foreach (RezultatUkupno r in rezTak1.Takmicenje1.PoredakUkupno.Rezultati) { if (r.Gimnasticar.Equals(g)) { rezultat.initPrvoKolo(r); break; } } foreach (RezultatUkupno r in rezTak2.Takmicenje1.PoredakUkupno.Rezultati) { if (r.Gimnasticar.Equals(g)) { rezultat.initDrugoKolo(r); break; } } if (rezTak3 != null) { foreach (RezultatUkupno r in rezTak3.Takmicenje1.PoredakUkupno.Rezultati) { if (r.Gimnasticar.Equals(g)) { rezultat.initTreceKolo(r); break; } } } if (rezTak4 != null) { foreach (RezultatUkupno r in rezTak4.Takmicenje1.PoredakUkupno.Rezultati) { if (r.Gimnasticar.Equals(g)) { rezultat.initCetvrtoKolo(r); break; } } } rezultat.calculateTotal(); Rezultati.Add(rezultat); rankRezultati(); }
public virtual void recreateRezultat(Ekipa e, RezultatskoTakmicenje rezTak, List <RezultatUkupno> rezultati) { RezultatEkipno r = getRezultat(e); if (r == null) { return; } Rezultati.Remove(r); Rezultati.Add(createRezultatEkipno(e, rezultati, rezTak.Propozicije.BrojRezultataKojiSeBodujuZaEkipu, rezTak.Gimnastika)); rankRezultati(rezTak.Propozicije); }
public virtual void ocenaEdited(Ocena o, RezultatskoTakmicenje rezTak) { if (getUcesnikKvalifikant(o.Gimnasticar, o.Sprava) != null) { if (o.Sprava == Sprava.Preskok) { PoredakPreskok.editOcena(o, rezTak); } else { getPoredak(o.Sprava).editOcena(o, rezTak); } } }
public virtual void addEkipa(Ekipa e, RezultatskoTakmicenje rezTak, RezultatskoTakmicenje rezTak1, RezultatskoTakmicenje rezTak2, RezultatskoTakmicenje rezTak3, RezultatskoTakmicenje rezTak4) { RezultatEkipnoZbirViseKola rezultat = new RezultatEkipnoZbirViseKola(); rezultat.Ekipa = e; foreach (RezultatEkipno r in rezTak1.Takmicenje1.PoredakEkipno.Rezultati) { if (r.Ekipa.Equals(e)) { rezultat.initPrvoKolo(r); break; } } foreach (RezultatEkipno r in rezTak2.Takmicenje1.PoredakEkipno.Rezultati) { if (r.Ekipa.Equals(e)) { rezultat.initDrugoKolo(r); break; } } if (rezTak3 != null) { foreach (RezultatEkipno r in rezTak3.Takmicenje1.PoredakEkipno.Rezultati) { if (r.Ekipa.Equals(e)) { rezultat.initTreceKolo(r); break; } } } if (rezTak4 != null) { foreach (RezultatEkipno r in rezTak4.Takmicenje1.PoredakEkipno.Rezultati) { if (r.Ekipa.Equals(e)) { rezultat.initCetvrtoKolo(r); break; } } } rezultat.calculateTotal(); Rezultati.Add(rezultat); rankRezultati(); }
public virtual void updateRezultatiOnOcenaEdited(Ocena o, RezultatskoTakmicenje rezTak) { if (Gimnasticari.Contains(o.Gimnasticar)) { PoredakUkupno.editOcena(o, rezTak); if (o.Sprava == Sprava.Preskok) { PoredakPreskok.editOcena(o, rezTak); } else { getPoredakSprava(o.Sprava).editOcena(o, rezTak); } } }
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 virtual void updateRezultatiOnEkipaDeleted(Ekipa e, RezultatskoTakmicenje rezTak) { if (!rezTak.ImaEkipnoTakmicenje) { return; } PoredakEkipno.deleteEkipa(e, rezTak); if (PoredakEkipnoFinaleKupa != null) { PoredakEkipnoFinaleKupa.deleteEkipa(e, rezTak); } if (PoredakEkipnoZbirViseKola != null) { PoredakEkipnoZbirViseKola.deleteEkipa(e, rezTak); } }
public virtual void updateRezultatiOnGimnasticarAdded(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); } } }
public virtual void ocenaAdded(Ocena o, RezultatskoTakmicenje rezTak) { // TODO4: Trebalo bi obavestiti korisnika ako se unese ocena za gimnasticara koji nije medju kvalifikantima // da mu rezultat nece biti vidljiv. if (getUcesnikKvalifikant(o.Gimnasticar, o.Sprava) != null) { if (o.Sprava == Sprava.Preskok) { PoredakPreskok.addOcena(o, rezTak, false); } else { getPoredak(o.Sprava).addOcena(o, rezTak, false); } } }
// TODO3: Za sve poretke (ukupno, sprava, ekipno, kako za finale kupa, tako i za obicna takmicenja) specifikuj // pravila razresavanja istih ocena. private void createPreskok(RezultatskoTakmicenje rezTak, RezultatskoTakmicenje rezTak1, RezultatskoTakmicenje rezTak2) { IDictionary <GimnasticarUcesnik, RezultatSpravaFinaleKupa> rezultatiMap = new Dictionary <GimnasticarUcesnik, RezultatSpravaFinaleKupa>(); foreach (GimnasticarUcesnik g in rezTak.Takmicenje1.Gimnasticari) { RezultatSpravaFinaleKupa rezultat = new RezultatSpravaFinaleKupa(); rezultat.Gimnasticar = g; rezultatiMap.Add(g, rezultat); } // TODO4: Razmisli da li treba uvoditi opciju u propozicijama sta da se radi kada u nekom od prethodnih kola // deo takmicara ima obe ocene za preskok a deo ima samo jednu (ili se kao i do sada oslanjati na to kako je // to specifikovano u propozicijama za 1. i 2. kolo, sto mislim da je bolja varijanta) bool postojeObaPreskoka = rezTak1.Takmicenje1.PoredakPreskok.postojeObaPreskoka(); foreach (RezultatPreskok r in rezTak1.Takmicenje1.PoredakPreskok.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { rezultatiMap[r.Gimnasticar].initPrvoKolo(r, rezTak1.Propozicije.Tak1PreskokNaOsnovuObaPreskoka, postojeObaPreskoka); } } postojeObaPreskoka = rezTak2.Takmicenje1.PoredakPreskok.postojeObaPreskoka(); foreach (RezultatPreskok r in rezTak2.Takmicenje1.PoredakPreskok.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { rezultatiMap[r.Gimnasticar].initDrugoKolo(r, rezTak2.Propozicije.Tak1PreskokNaOsnovuObaPreskoka, postojeObaPreskoka); } } Rezultati.Clear(); foreach (RezultatSpravaFinaleKupa r in rezultatiMap.Values) { r.calculateTotal(rezTak.Propozicije.NacinRacunanjaOceneFinaleKupaTak3); Rezultati.Add(r); } rankRezultati(rezTak.Propozicije); }
public virtual void deleteOcena(Ocena o, RezultatskoTakmicenje rezTak, bool removeRezultat) { RezultatSprava r = getRezultat(o.Gimnasticar); if (r != null) { if (removeRezultat) { Rezultati.Remove(r); } else { r.clearOcena(); } rankRezultati(rezTak.Propozicije); } }
public KvalifikantiTak3EditorForm(int takmicenjeId, int rezTakmicenjeId, Sprava sprava) { InitializeComponent(); this.sprava = sprava; try { DataAccessProviderFactory factory = new DataAccessProviderFactory(); dataContext = factory.GetDataContext(); dataContext.BeginTransaction(); rezTakmicenje = loadRezTakmicenje(rezTakmicenjeId); if (rezTakmicenje == null) throw new BusinessException("Greska u programu."); takmicenje = dataContext.GetById<Takmicenje>(takmicenjeId); NHibernateUtil.Initialize(takmicenje); initUI(); } catch (BusinessException) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); throw; } catch (InfrastructureException) { if (dataContext != null && dataContext.IsInTransaction) dataContext.Rollback(); throw; } 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 addEkipa(Ekipa e, IList<Ocena> ocene, RezultatskoTakmicenje rezTak) { /* RezultatEkipno r = new RezultatEkipno(); r.Ekipa = e; Rezultati.Add(r); foreach (Ocena o in ocene) { if (e.Gimnasticari.Contains(o.Gimnasticar)) r.addOcena(o); } rankRezultati(); updateKvalStatus(rezTak.Propozicije); */ }
// can throw InfrastructureException public List<RezultatSpravaFinaleKupaUpdate> findByRezTak(RezultatskoTakmicenje rezTak) { SqlCeCommand cmd = new SqlCeCommand(findByRezTakSQL); cmd.Parameters.Add("@rez_takmicenje_id", SqlDbType.Int).Value = rezTak.Id; SqlCeDataReader rdr = Database.executeReader(cmd, Strings.DatabaseAccessExceptionMessage); List<RezultatSpravaFinaleKupaUpdate> result = new List<RezultatSpravaFinaleKupaUpdate>(); while (rdr.Read()) { RezultatSpravaFinaleKupaUpdate rezultat = new RezultatSpravaFinaleKupaUpdate(); rezultat.RezultatskoTakmicenjeId = (int)rdr["rez_takmicenje_id"]; rezultat.GimnasticarId = (int)rdr["gimnasticar_id"]; rezultat.Sprava = (Sprava)(byte)rdr["sprava"]; rezultat.KvalStatus = (KvalifikacioniStatus)(byte)rdr["kval_status"]; result.Add(rezultat); } rdr.Close(); // obavezno, da bi se zatvorila konekcija otvorena u executeReader return result; }
public virtual void addOcena(Ocena o, RezultatskoTakmicenje rezTak, bool createRezultat) { RezultatSprava rezultat; if (createRezultat) { rezultat = new RezultatSprava(); rezultat.Gimnasticar = o.Gimnasticar; Rezultati.Add(rezultat); } else { rezultat = getRezultat(o.Gimnasticar); } if (rezultat != null) { rezultat.setOcena(o); rankRezultati(); updateKvalStatus(rezTak.Propozicije); } }
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); } }
public virtual void ekipaDeleted(Ekipa e, RezultatskoTakmicenje rezTak) { PoredakEkipno.deleteEkipa(e, rezTak); }
public virtual void ekipaAdded(Ekipa e, IList<Ocena> ocene, RezultatskoTakmicenje rezTak) { PoredakEkipno.addEkipa(e, ocene, 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); }
private int getRezultatiKey(RezultatskoTakmicenje tak, Sprava sprava) { int result = rezTakmicenja.IndexOf(tak) * ((int)Sprava.Max + 1) + (int)sprava; return result; }
// TODO3: Za sve poretke (ukupno, sprava, ekipno, kako za finale kupa, tako i za obicna takmicenja) specifikuj // pravila razresavanja istih ocena. public virtual void create(RezultatskoTakmicenje rezTak, PoredakPreskok poredakPrvoKolo, PoredakPreskok poredakDrugoKolo, bool poredak1NaOsnovuObaPreskoka, bool poredak2NaOsnovuObaPreskoka, List<RezultatSpravaFinaleKupaUpdate> rezultatiUpdate) { IList<GimnasticarUcesnik> gimnasticari = new List<GimnasticarUcesnik>(rezTak.Takmicenje1.Gimnasticari); IDictionary<GimnasticarUcesnik, RezultatSpravaFinaleKupa> rezultatiMap = new Dictionary<GimnasticarUcesnik, RezultatSpravaFinaleKupa>(); foreach (GimnasticarUcesnik g in gimnasticari) { RezultatSpravaFinaleKupa rezultat = new RezultatSpravaFinaleKupa(); rezultat.Gimnasticar = g; rezultatiMap.Add(g, rezultat); } if (poredakPrvoKolo != null) { bool postojiTotalObeOcene = false; foreach (RezultatPreskok r in poredakPrvoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { RezultatSpravaFinaleKupa r2 = rezultatiMap[r.Gimnasticar]; if (!poredak1NaOsnovuObaPreskoka) { r2.D_PrvoKolo = r.D; r2.E_PrvoKolo = r.E; r2.TotalPrvoKolo = r.Total; } else { r2.D_PrvoKolo = null; r2.E_PrvoKolo = null; r2.TotalPrvoKolo = r.TotalObeOcene; postojiTotalObeOcene |= (r.TotalObeOcene != null); } } } if (poredak1NaOsnovuObaPreskoka && !postojiTotalObeOcene) { // U propozicijama za prvo kolo je stavljeno da se preskok racuna na osnovu // oba preskoka, ali ni za jednog gimnasticara ne postoji ocena za oba preskoka. // Ova situacija najverovatnije nastaje kada se u prvom kolu kao prvi preskok // unosila konacna ocena za oba preskoka. // U tom slucaju, za ocenu prvog kola treba uzeti prvu ocenu. foreach (RezultatPreskok r in poredakPrvoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { RezultatSpravaFinaleKupa r2 = rezultatiMap[r.Gimnasticar]; r2.D_PrvoKolo = r.D; r2.E_PrvoKolo = r.E; r2.TotalPrvoKolo = r.Total; } } } } if (poredakDrugoKolo != null) { bool postojiTotalObeOcene = false; foreach (RezultatPreskok r in poredakDrugoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { RezultatSpravaFinaleKupa r2 = rezultatiMap[r.Gimnasticar]; if (!poredak2NaOsnovuObaPreskoka) { r2.D_DrugoKolo = r.D; r2.E_DrugoKolo = r.E; r2.TotalDrugoKolo = r.Total; } else { r2.D_DrugoKolo = null; r2.E_DrugoKolo = null; r2.TotalDrugoKolo = r.TotalObeOcene; postojiTotalObeOcene |= (r.TotalObeOcene != null); } } } if (poredak2NaOsnovuObaPreskoka && !postojiTotalObeOcene) { // Isti komentar kao za prvo kolo. foreach (RezultatPreskok r in poredakDrugoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { RezultatSpravaFinaleKupa r2 = rezultatiMap[r.Gimnasticar]; r2.D_DrugoKolo = r.D; r2.E_DrugoKolo = r.E; r2.TotalDrugoKolo = r.Total; } } } } List<RezultatSpravaFinaleKupa> rezultati = new List<RezultatSpravaFinaleKupa>(rezultatiMap.Values); Rezultati.Clear(); foreach (RezultatSpravaFinaleKupa r in rezultati) Rezultati.Add(r); // Total moze da bude krajnja finalna ocena ili ulazna finalna ocena. U oba slucaja se Total izracunava // na isti nacin. foreach (RezultatSpravaFinaleKupa rez in Rezultati) { if (rez.TotalPrvoKolo == null && rez.TotalDrugoKolo == null) { rez.setTotal(null); continue; } float total1 = rez.TotalPrvoKolo == null ? 0 : rez.TotalPrvoKolo.Value; float total2 = rez.TotalDrugoKolo == null ? 0 : rez.TotalDrugoKolo.Value; float total; if (rezTak.Propozicije.Tak3FinalnaOcenaJeZbirObaKola) total = total1 + total2; else if (rezTak.Propozicije.Tak3FinalnaOcenaJeMaxObaKola) total = total1 > total2 ? total1 : total2; else { // TODO3: Proveri da li ovde treba podesavati broj decimala. total = (total1 + total2) / 2; if (rezTak.Propozicije.Tak3NeRacunajProsekAkoNemaOceneIzObaKola && (rez.TotalPrvoKolo == null || rez.TotalDrugoKolo == null)) { total = total1 + total2; } } rez.setTotal(total); } rankRezultati(); if (rezTak.Propozicije.OdvojenoTak3) { updateKvalStatus(rezTak.Propozicije.BrojFinalistaTak3, rezTak.Propozicije.NeogranicenBrojTakmicaraIzKlubaTak3, rezTak.Propozicije.MaxBrojTakmicaraIzKlubaTak3, rezTak.Propozicije.MaxBrojTakmicaraTak3VaziZaDrzavu, rezTak.Propozicije.BrojRezerviTak3); applyRezultatiUpdate(rezultatiUpdate); } }
public virtual void ocenaAdded(Ocena o, RezultatskoTakmicenje rezTak) { if (Gimnasticari.Contains(o.Gimnasticar)) { PoredakUkupno.addOcena(o, rezTak); if (o.Sprava == Sprava.Preskok) PoredakPreskok.addOcena(o, rezTak, true); else getPoredakSprava(o.Sprava).addOcena(o, rezTak, true); } // Ova naredba treba da bude unutar if izraza ako clanovi ekipe // mogu da budu samo gimnasticari ucesnici istog rez. takmicenja PoredakEkipno.addOcena(o, rezTak); }
protected override void loadData() { // NOTE: Iako se prvo ucitava ekipa (tj. entity) pa tek onda rezTakmicenje, // objekat ekipe se nalazi unutar kolekcije Takmicenje1.Ekipe objekta // rezTakmicenje jer se sve obavlja unutar iste sesije. To znaci da u edit // modu rezTakmicenje "vidi" sve promene na ekipi. rezTakmicenje = loadRezTakmicenje(rezTakmicenjeId); IList<KlubUcesnik> kluboviList = findKluboviUcesnici(rezTakmicenje.Takmicenje.Id); klubovi = new List<KlubUcesnik>(kluboviList); IList<DrzavaUcesnik> drzaveList = findDrzaveUcesnici(rezTakmicenje.Takmicenje.Id); drzave = new List<DrzavaUcesnik>(drzaveList); }
public virtual void create(RezultatskoTakmicenje rezTak, PoredakEkipno poredakPrvoKolo, PoredakEkipno poredakDrugoKolo) { IList<Ekipa> ekipe = new List<Ekipa>(rezTak.Takmicenje1.Ekipe); // NOTE: Da bi Ekipa mogla da se koristi kao key u Dictionary, mora da implementira // interfejs IEquatable<Ekipa>. IDictionary<Ekipa, RezultatEkipnoFinaleKupa> rezultatiMap = new Dictionary<Ekipa, RezultatEkipnoFinaleKupa>(); foreach (Ekipa e in ekipe) { RezultatEkipnoFinaleKupa rezultat = new RezultatEkipnoFinaleKupa(); rezultat.Ekipa = e; rezultatiMap.Add(e, rezultat); } if (poredakPrvoKolo != null) { foreach (RezultatEkipno r in poredakPrvoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Ekipa)) { rezultatiMap[r.Ekipa].ParterPrvoKolo = r.Parter; rezultatiMap[r.Ekipa].KonjPrvoKolo = r.Konj; rezultatiMap[r.Ekipa].KarikePrvoKolo = r.Karike; rezultatiMap[r.Ekipa].PreskokPrvoKolo = r.Preskok; rezultatiMap[r.Ekipa].RazbojPrvoKolo = r.Razboj; rezultatiMap[r.Ekipa].VratiloPrvoKolo = r.Vratilo; rezultatiMap[r.Ekipa].DvovisinskiRazbojPrvoKolo = r.DvovisinskiRazboj; rezultatiMap[r.Ekipa].GredaPrvoKolo = r.Greda; rezultatiMap[r.Ekipa].TotalPrvoKolo = r.Total; } } } if (poredakDrugoKolo != null) { foreach (RezultatEkipno r in poredakDrugoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Ekipa)) { rezultatiMap[r.Ekipa].ParterDrugoKolo = r.Parter; rezultatiMap[r.Ekipa].KonjDrugoKolo = r.Konj; rezultatiMap[r.Ekipa].KarikeDrugoKolo = r.Karike; rezultatiMap[r.Ekipa].PreskokDrugoKolo = r.Preskok; rezultatiMap[r.Ekipa].RazbojDrugoKolo = r.Razboj; rezultatiMap[r.Ekipa].VratiloDrugoKolo = r.Vratilo; rezultatiMap[r.Ekipa].DvovisinskiRazbojDrugoKolo = r.DvovisinskiRazboj; rezultatiMap[r.Ekipa].GredaDrugoKolo = r.Greda; rezultatiMap[r.Ekipa].TotalDrugoKolo = r.Total; } } } List<RezultatEkipnoFinaleKupa> rezultati = new List<RezultatEkipnoFinaleKupa>(rezultatiMap.Values); Rezultati.Clear(); foreach (RezultatEkipnoFinaleKupa rez in rezultati) Rezultati.Add(rez); // Total moze da bude krajnja finalna ocena ili ulazna finalna ocena. U oba slucaja se Total izracunava // na isti nacin. foreach (RezultatEkipnoFinaleKupa rez in Rezultati) { if (rez.TotalPrvoKolo == null && rez.TotalDrugoKolo == null) { rez.setTotal(null); continue; } float total1 = rez.TotalPrvoKolo == null ? 0 : rez.TotalPrvoKolo.Value; float total2 = rez.TotalDrugoKolo == null ? 0 : rez.TotalDrugoKolo.Value; float total; if (rezTak.Propozicije.Tak4FinalnaOcenaJeZbirObaKola) total = total1 + total2; else if (rezTak.Propozicije.Tak4FinalnaOcenaJeMaxObaKola) total = total1 > total2 ? total1 : total2; else { // TODO3: Proveri da li ovde treba podesavati broj decimala. total = (total1 + total2) / 2; if (rezTak.Propozicije.Tak4NeRacunajProsekAkoNemaOceneIzObaKola && (rez.TotalPrvoKolo == null || rez.TotalDrugoKolo == null)) { total = total1 + total2; } } rez.setTotal(total); } rankRezultati(); if (rezTak.Propozicije.OdvojenoTak4) updateKvalStatus(rezTak.Propozicije.BrojEkipaUFinalu, 0); }
private IList<GimnasticarUcesnik> getGimnasticari(IList<Ocena> ocene, RezultatskoTakmicenje rezTak) { ISet<int> idSet = new HashSet<int>(); foreach (Ocena o in ocene) { if (o.Sprava == Sprava.Preskok) idSet.Add(o.Gimnasticar.Id); } IList<GimnasticarUcesnik> result = new List<GimnasticarUcesnik>(); foreach (GimnasticarUcesnik g in rezTak.Takmicenje1.Gimnasticari) { if (idSet.Contains(g.Id)) result.Add(g); } return result; }
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); } }
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 ocenaEdited(Ocena o, Ocena old, RezultatskoTakmicenje rezTak) { if (Gimnasticari.Contains(o.Gimnasticar)) { PoredakUkupno.editOcena(o, old, rezTak); if (o.Sprava == Sprava.Preskok) PoredakPreskok.editOcena(o, rezTak); else getPoredakSprava(o.Sprava).editOcena(o, rezTak); } PoredakEkipno.editOcena(o, old, rezTak); }
public virtual void ocenaDeleted(Ocena o, RezultatskoTakmicenje rezTak) { if (Gimnasticari.Contains(o.Gimnasticar)) { PoredakUkupno.deleteOcena(o, rezTak); if (o.Sprava == Sprava.Preskok) PoredakPreskok.deleteOcena(o, rezTak, true); else getPoredakSprava(o.Sprava).deleteOcena(o, rezTak, true); } PoredakEkipno.deleteOcena(o, rezTak); }
public virtual void create(RezultatskoTakmicenje rezTak, PoredakUkupno poredakPrvoKolo, PoredakUkupno poredakDrugoKolo) { IList<GimnasticarUcesnik> gimnasticari = new List<GimnasticarUcesnik>(rezTak.Takmicenje1.Gimnasticari); // NOTE: Da bi GimnasticarUcesnik mogao da se koristi kao key u Dictionary, mora da implementira // interfejs IEquatable<GimnasticarUcesnik>. IDictionary<GimnasticarUcesnik, RezultatUkupnoFinaleKupa> rezultatiMap = new Dictionary<GimnasticarUcesnik, RezultatUkupnoFinaleKupa>(); foreach (GimnasticarUcesnik g in gimnasticari) { RezultatUkupnoFinaleKupa rezultat = new RezultatUkupnoFinaleKupa(); rezultat.Gimnasticar = g; rezultatiMap.Add(g, rezultat); } if (poredakPrvoKolo != null) { foreach (RezultatUkupno r in poredakPrvoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { rezultatiMap[r.Gimnasticar].ParterPrvoKolo = r.Parter; rezultatiMap[r.Gimnasticar].KonjPrvoKolo = r.Konj; rezultatiMap[r.Gimnasticar].KarikePrvoKolo = r.Karike; rezultatiMap[r.Gimnasticar].PreskokPrvoKolo = r.Preskok; rezultatiMap[r.Gimnasticar].RazbojPrvoKolo = r.Razboj; rezultatiMap[r.Gimnasticar].VratiloPrvoKolo = r.Vratilo; rezultatiMap[r.Gimnasticar].DvovisinskiRazbojPrvoKolo = r.DvovisinskiRazboj; rezultatiMap[r.Gimnasticar].GredaPrvoKolo = r.Greda; rezultatiMap[r.Gimnasticar].TotalPrvoKolo = r.Total; } } } if (poredakDrugoKolo != null) { foreach (RezultatUkupno r in poredakDrugoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { rezultatiMap[r.Gimnasticar].ParterDrugoKolo = r.Parter; rezultatiMap[r.Gimnasticar].KonjDrugoKolo = r.Konj; rezultatiMap[r.Gimnasticar].KarikeDrugoKolo = r.Karike; rezultatiMap[r.Gimnasticar].PreskokDrugoKolo = r.Preskok; rezultatiMap[r.Gimnasticar].RazbojDrugoKolo = r.Razboj; rezultatiMap[r.Gimnasticar].VratiloDrugoKolo = r.Vratilo; rezultatiMap[r.Gimnasticar].DvovisinskiRazbojDrugoKolo = r.DvovisinskiRazboj; rezultatiMap[r.Gimnasticar].GredaDrugoKolo = r.Greda; rezultatiMap[r.Gimnasticar].TotalDrugoKolo = r.Total; } } } List<RezultatUkupnoFinaleKupa> rezultati = new List<RezultatUkupnoFinaleKupa>(rezultatiMap.Values); Rezultati.Clear(); foreach (RezultatUkupnoFinaleKupa rez in rezultati) Rezultati.Add(rez); // Total moze da bude krajnja finalna ocena ili ulazna finalna ocena. U oba slucaja se Total izracunava // na isti nacin. foreach (RezultatUkupnoFinaleKupa rez in Rezultati) { if (rez.TotalPrvoKolo == null && rez.TotalDrugoKolo == null) { rez.setTotal(null); continue; } float total1 = rez.TotalPrvoKolo == null ? 0 : rez.TotalPrvoKolo.Value; float total2 = rez.TotalDrugoKolo == null ? 0 : rez.TotalDrugoKolo.Value; float total; if (rezTak.Propozicije.Tak2FinalnaOcenaJeZbirObaKola) total = total1 + total2; else if (rezTak.Propozicije.Tak2FinalnaOcenaJeMaxObaKola) total = total1 > total2 ? total1 : total2; else { // TODO3: Proveri da li ovde treba podesavati broj decimala. total = (total1 + total2) / 2; if (rezTak.Propozicije.Tak2NeRacunajProsekAkoNemaOceneIzObaKola && (rez.TotalPrvoKolo == null || rez.TotalDrugoKolo == null)) { total = total1 + total2; } } rez.setTotal(total); } rankRezultati(); if (rezTak.Propozicije.OdvojenoTak2) updateKvalStatus(rezTak.Propozicije.BrojFinalistaTak2, rezTak.Propozicije.NeogranicenBrojTakmicaraIzKlubaTak2, rezTak.Propozicije.MaxBrojTakmicaraIzKlubaTak2, rezTak.Propozicije.BrojRezerviTak2); }
public virtual void deleteGimnasticar(GimnasticarUcesnik g, RezultatskoTakmicenje rezTak) { RezultatPreskok r = getRezultat(g); if (r != null) { Rezultati.Remove(r); rankRezultati(); updateKvalStatus(rezTak.Propozicije); } }
// TODO3: Kod finala kupa bi trebalo kod kloniranja ubaciti gimnasticare iz oba kola. public virtual void create(RezultatskoTakmicenje rezTak, PoredakSprava poredakPrvoKolo, PoredakSprava poredakDrugoKolo, List<RezultatSpravaFinaleKupaUpdate> rezultatiUpdate) { IList<GimnasticarUcesnik> gimnasticari = new List<GimnasticarUcesnik>(rezTak.Takmicenje1.Gimnasticari); IDictionary<GimnasticarUcesnik, RezultatSpravaFinaleKupa> rezultatiMap = new Dictionary<GimnasticarUcesnik, RezultatSpravaFinaleKupa>(); foreach (GimnasticarUcesnik g in gimnasticari) { RezultatSpravaFinaleKupa rezultat = new RezultatSpravaFinaleKupa(); rezultat.Gimnasticar = g; rezultatiMap.Add(g, rezultat); } if (poredakPrvoKolo != null) { foreach (RezultatSprava r in poredakPrvoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { RezultatSpravaFinaleKupa r2 = rezultatiMap[r.Gimnasticar]; r2.D_PrvoKolo = r.D; r2.E_PrvoKolo = r.E; r2.TotalPrvoKolo = r.Total; } } } if (poredakDrugoKolo != null) { foreach (RezultatSprava r in poredakDrugoKolo.Rezultati) { if (rezultatiMap.ContainsKey(r.Gimnasticar)) { RezultatSpravaFinaleKupa r2 = rezultatiMap[r.Gimnasticar]; r2.D_DrugoKolo = r.D; r2.E_DrugoKolo = r.E; r2.TotalDrugoKolo = r.Total; } } } List<RezultatSpravaFinaleKupa> rezultati = new List<RezultatSpravaFinaleKupa>(rezultatiMap.Values); Rezultati.Clear(); foreach (RezultatSpravaFinaleKupa r in rezultati) Rezultati.Add(r); // Total moze da bude krajnja finalna ocena ili ulazna finalna ocena. U oba slucaja se Total izracunava // na isti nacin. foreach (RezultatSpravaFinaleKupa rez in Rezultati) { if (rez.TotalPrvoKolo == null && rez.TotalDrugoKolo == null) { rez.setTotal(null); continue; } float total1 = rez.TotalPrvoKolo == null ? 0 : rez.TotalPrvoKolo.Value; float total2 = rez.TotalDrugoKolo == null ? 0 : rez.TotalDrugoKolo.Value; float total; if (rezTak.Propozicije.Tak3FinalnaOcenaJeZbirObaKola) total = total1 + total2; else if (rezTak.Propozicije.Tak3FinalnaOcenaJeMaxObaKola) total = total1 > total2 ? total1 : total2; else { // TODO3: Proveri da li ovde treba podesavati broj decimala. total = (total1 + total2) / 2; if (rezTak.Propozicije.Tak3NeRacunajProsekAkoNemaOceneIzObaKola && (rez.TotalPrvoKolo == null || rez.TotalDrugoKolo == null)) { total = total1 + total2; } } rez.setTotal(total); } rankRezultati(); if (rezTak.Propozicije.OdvojenoTak3) { updateKvalStatus(rezTak.Propozicije.BrojFinalistaTak3, rezTak.Propozicije.NeogranicenBrojTakmicaraIzKlubaTak3, rezTak.Propozicije.MaxBrojTakmicaraIzKlubaTak3, rezTak.Propozicije.MaxBrojTakmicaraTak3VaziZaDrzavu, rezTak.Propozicije.BrojRezerviTak3); applyRezultatiUpdate(rezultatiUpdate); } }
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 deleteOcena(Ocena o, RezultatskoTakmicenje rezTak, bool removeRezultat) { RezultatPreskok r = getRezultat(o.Gimnasticar); if (r != null) { if (removeRezultat) Rezultati.Remove(r); else r.clearOcena(o); rankRezultati(); updateKvalStatus(rezTak.Propozicije); } }