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);
        }
示例#2
0
        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);
        }
示例#3
0
        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();
        }
示例#4
0
        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);
        }
示例#6
0
        // 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);
                    }
                }
            }
        }
示例#7
0
 public virtual void updateRezultatEkipe(Ekipa e, RezultatskoTakmicenje rezTak, List <RezultatUkupno> rezultati)
 {
     if (rezTak.ImaEkipnoTakmicenje)
     {
         PoredakEkipno.recreateRezultat(e, rezTak, rezultati);
     }
 }
示例#8
0
        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));
        }
示例#9
0
 public virtual void updateRezultatiOnEkipaAdded(Ekipa e, RezultatskoTakmicenje rezTak,
                                                 List <RezultatUkupno> rezultati)
 {
     if (rezTak.ImaEkipnoTakmicenje)
     {
         PoredakEkipno.addEkipa(e, rezTak, rezultati);
     }
 }
示例#10
0
        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();
        }
示例#12
0
 // 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();
            }
        }
示例#14
0
        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);
        }
示例#15
0
        public virtual void deleteGimnasticar(GimnasticarUcesnik g, RezultatskoTakmicenje rezTak)
        {
            RezultatUkupnoZbirViseKola r = getRezultat(g);

            if (r != null)
            {
                Rezultati.Remove(r);
                rankRezultati();
            }
        }
示例#16
0
        public virtual void deleteGimnasticar(GimnasticarUcesnik g, RezultatskoTakmicenje rezTak)
        {
            RezultatUkupnoFinaleKupa r = getRezultat(g);

            if (r != null)
            {
                Rezultati.Remove(r);
                rankRezultati(rezTak.Propozicije);
            }
        }
示例#17
0
        public virtual void editOcena(Ocena o, RezultatskoTakmicenje rezTak)
        {
            RezultatSprava r = getRezultat(o.Gimnasticar);

            if (r != null)
            {
                r.setOcena(o);
                rankRezultati(rezTak.Propozicije);
            }
        }
示例#18
0
        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);
            }
        }
示例#19
0
        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();
            }
        }
示例#21
0
 public virtual void addOcena(Ocena o, RezultatskoTakmicenje rezTak)
 {
     RezultatUkupno r = getRezultat(o.Gimnasticar);
     if (r != null)
     {
         r.addOcena(o);
         rankRezultati();
         updateKvalStatus(rezTak.Propozicije);
     }
 }
示例#22
0
        public virtual void deleteOcena(Ocena o, RezultatskoTakmicenje rezTak)
        {
            RezultatUkupno r = getRezultat(o.Gimnasticar);

            if (r != null)
            {
                r.clearSprava(o.Sprava);
                rankRezultati(rezTak.Propozicije);
            }
        }
示例#23
0
        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);
        }
示例#24
0
        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);
        }
示例#25
0
        // 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);
             */
        }
示例#26
0
 // 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);
     }
 }
示例#27
0
        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();
        }
示例#28
0
        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);
        }
示例#29
0
 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();
        }
示例#31
0
 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);
         }
     }
 }
示例#32
0
        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);
        }
示例#33
0
 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);
     }
 }
示例#34
0
 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);
         }
     }
 }
示例#35
0
 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);
         }
     }
 }
示例#36
0
        // 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);
        }
示例#37
0
        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;
            }
        }
示例#39
0
        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;
        }
示例#41
0
 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);
     }
 }
示例#42
0
 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);
     }
 }
示例#43
0
 public virtual void ekipaDeleted(Ekipa e, RezultatskoTakmicenje rezTak)
 {
     PoredakEkipno.deleteEkipa(e, rezTak);
 }
示例#44
0
 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;
 }
示例#47
0
        // 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);
            }
        }
示例#48
0
        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);
        }
示例#49
0
        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);
        }
示例#50
0
        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);
        }
示例#51
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;
 }
示例#52
0
 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);
     }
 }
示例#53
0
 public virtual void gimnasticarDeletedFromEkipa(GimnasticarUcesnik g, Ekipa e,
     IList<Ocena> ocene, RezultatskoTakmicenje rezTak)
 {
     if (Ekipe.Contains(e))
         PoredakEkipno.gimnasticarDeletedFromEkipa(g, e, ocene, rezTak);
 }
示例#54
0
        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);
        }
示例#55
0
        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);
        }
示例#56
0
        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);
        }
示例#57
0
 public virtual void deleteGimnasticar(GimnasticarUcesnik g, 
     RezultatskoTakmicenje rezTak)
 {
     RezultatPreskok r = getRezultat(g);
     if (r != null)
     {
         Rezultati.Remove(r);
         rankRezultati();
         updateKvalStatus(rezTak.Propozicije);
     }
 }
示例#58
0
        // 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();
            }
        }
示例#60
0
        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);
            }
        }