예제 #1
0
        protected override void updateEntity(DomainObject entity)
        {
            RezultatskoTakmicenjeDescription desc = (RezultatskoTakmicenjeDescription)entity;

            DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDescriptionDAO().Update(desc);

            Takmicenje takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenjeId);
            RezultatskoTakmicenjeDAO      rezTakDAO     = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            IList <RezultatskoTakmicenje> rezTakmicenja = rezTakDAO.FindByTakmicenje(takmicenjeId);

            TakmicarskaKategorijaDAO takKatDAO = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO();

            IList <RezultatskoTakmicenje> istaRezTakmicenja = new List <RezultatskoTakmicenje>();
            IList <RezultatskoTakmicenje> vecaRezTakmicenja = new List <RezultatskoTakmicenje>();
            int redBroj = 0;

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                if (rt.TakmicenjeDescription.RedBroj < desc.RedBroj)
                {
                    if (rt.RedBroj > redBroj)
                    {
                        redBroj = rt.RedBroj;
                    }
                }
                else if (rt.TakmicenjeDescription.RedBroj > desc.RedBroj)
                {
                    vecaRezTakmicenja.Add(rt);
                }
            }

            foreach (TakmicarskaKategorija k in sveKategorije)
            {
                if (SelKategorije.Contains(k) && oldKategorije.Contains(k))
                {
                    RezultatskoTakmicenje rt = rezTakDAO.FindByKatDesc(k, desc);
                    rt.RedBroj = (byte)++redBroj;
                    rezTakDAO.Update(rt);
                }
                else if (SelKategorije.Contains(k) && !oldKategorije.Contains(k))
                {
                    takKatDAO.Attach(k, false);
                    rezTakDAO.Add(createRezultatskoTakmicenje(takmicenje, k, desc, ++redBroj));
                }
                else if (!SelKategorije.Contains(k) && oldKategorije.Contains(k))
                {
                    RezultatskoTakmicenje rt = rezTakDAO.FindByKatDesc(k, desc);
                    rezTakDAO.Delete(rt);
                }
            }

            foreach (RezultatskoTakmicenje rt in vecaRezTakmicenja)
            {
                rt.RedBroj = (byte)++redBroj;
                rezTakDAO.Update(rt);
            }
        }
예제 #2
0
        public static void updateViseKola(Takmicenje takmicenje)
        {
            // Ne apdejtujem kategorije i takmicenja. Dodajem nove gimnasticare i ekipe, i onda ponovo izracunavam
            // sve rezultate. Takodje, ne vodim racuna o tome da li je novi gimnsticar ucestvovao u razlicitim
            // kategorijama u prethodnim kolima (ako je i dodat neki nov gimnasticar, najverovatnije je dodat samo jedan,
            // i onda ce korisnik najverovatnije sam proveriti da li su kategorije u kojima je gimnasticar ucestvovao iste.)

            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();

            takmicenjeDAO.Attach(takmicenje, false);

            List <Takmicenje> prethodnaKola = new List <Takmicenje>();

            prethodnaKola.Add(takmicenje.PrvoKolo);
            prethodnaKola.Add(takmicenje.DrugoKolo);
            if (takmicenje.TreceKolo != null)
            {
                prethodnaKola.Add(takmicenje.TreceKolo);
            }
            if (takmicenje.CetvrtoKolo != null)
            {
                prethodnaKola.Add(takmicenje.CetvrtoKolo);
            }

            RezultatskoTakmicenjeDAO rezTakDAO     = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            GimnasticarUcesnikDAO    gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO();
            EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO();

            IList <RezultatskoTakmicenje> rezTakmicenja = rezTakDAO.FindByTakmicenje(takmicenje.Id);

            List <IList <RezultatskoTakmicenje> > rezTakmicenjaPrethodnaKola = new List <IList <RezultatskoTakmicenje> >();

            foreach (Takmicenje prethKolo in prethodnaKola)
            {
                rezTakmicenjaPrethodnaKola.Add(rezTakDAO.FindByTakmicenje(prethKolo.Id));
            }

            IDictionary <GimnasticarUcesnik, GimnasticarUcesnik> gimUcesniciMap
                = new Dictionary <GimnasticarUcesnik, GimnasticarUcesnik>();

            foreach (GimnasticarUcesnik g in gimUcesnikDAO.FindByTakmicenje(takmicenje.Id))
            {
                gimUcesniciMap.Add(g, g);
            }

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                foreach (List <RezultatskoTakmicenje> rezTakmicenjaPrethKolo in rezTakmicenjaPrethodnaKola)
                {
                    RezultatskoTakmicenje rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija);
                    foreach (GimnasticarUcesnik g in rtFrom.Takmicenje1.Gimnasticari)
                    {
                        if (rt.Takmicenje1.Gimnasticari.Contains(g))
                        {
                            continue;
                        }

                        GimnasticarUcesnik g2;
                        if (!gimUcesniciMap.ContainsKey(g))
                        {
                            g2 = GimnasticarUcesnikService.createGimnasticarUcesnik(g, rt.Kategorija);
                            gimUcesniciMap.Add(g, g2);
                            gimUcesnikDAO.Add(g2);
                        }
                        else
                        {
                            g2 = gimUcesniciMap[g];
                        }
                        rt.Takmicenje1.addGimnasticar(g2);
                    }
                }
            }

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                foreach (List <RezultatskoTakmicenje> rezTakmicenjaPrethKolo in rezTakmicenjaPrethodnaKola)
                {
                    RezultatskoTakmicenje rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija);
                    foreach (Ekipa e in rtFrom.Takmicenje1.Ekipe)
                    {
                        if (rt.Takmicenje1.Ekipe.Contains(e))
                        {
                            continue;
                        }

                        Ekipa ekipa = new Ekipa();
                        ekipa.Naziv = e.Naziv;
                        ekipa.Kod   = e.Kod;
                        rt.Takmicenje1.addEkipa(ekipa, false);
                        ekipaDAO.Add(ekipa);
                    }
                }
            }

            takmicenje.kreirajRezultateViseKola(rezTakmicenja, rezTakmicenjaPrethodnaKola);

            foreach (List <RezultatskoTakmicenje> rezTakmicenjaPrethKolo in rezTakmicenjaPrethodnaKola)
            {
                foreach (RezultatskoTakmicenje rt in rezTakmicenjaPrethKolo)
                {
                    rezTakDAO.Evict(rt);
                }
            }

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                rezTakDAO.Update(rt);
            }
        }
예제 #3
0
        private void insertGimnasticariAndDrzaveUcesniciAndAddRezTakmicenjaUcesnici(Takmicenje takmicenje)
        {
            TakmicarskaKategorija seniori = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().FindByTakmicenje(takmicenje.Id)[0];

            RezultatskoTakmicenjeDAO rezTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            RezultatskoTakmicenje    rezTak           = rezTakmicenjeDAO.FindByKategorija(seniori)[0];

            string fileName;

            if (gimnastika == Gimnastika.MSG)
            {
                fileName = @"..\..\test\Data\KvalifikantiMuskarci.txt";
            }
            else
            {
                fileName = @"..\..\test\Data\KvalifikantiZene.txt";
            }

            List <Drzava>        drzave         = new List <Drzava>(DAOFactoryFactory.DAOFactory.GetDrzavaDAO().FindAll());
            List <DrzavaUcesnik> drzaveUcesnici = new List <DrzavaUcesnik>();

            GimnasticariParser parser = new GimnasticariParser();

            parser.parse(fileName);

            foreach (object[] o in parser.Gimnasticari)
            {
                int      broj      = (int)o[0];
                string   prezime   = (string)o[1];
                string   ime       = (string)o[2];
                string   kod       = (string)o[3];
                DateTime datumRodj = (DateTime)o[4];

                GimnasticarUcesnik gimnasticarUcesnik = new GimnasticarUcesnik();
                gimnasticarUcesnik.Ime           = ime;
                gimnasticarUcesnik.Prezime       = prezime;
                gimnasticarUcesnik.DatumRodjenja = new Datum(datumRodj);

                DrzavaUcesnik drzavaUcesnik = findDrzavaUcesnik(kod, drzaveUcesnici);
                if (drzavaUcesnik == null)
                {
                    Drzava drzava = findDrzava(kod, drzave);
                    drzavaUcesnik            = new DrzavaUcesnik();
                    drzavaUcesnik.Naziv      = drzava.Naziv;
                    drzavaUcesnik.Kod        = drzava.Kod;
                    drzavaUcesnik.Takmicenje = takmicenje;
                    drzaveUcesnici.Add(drzavaUcesnik);

                    DAOFactoryFactory.DAOFactory.GetDrzavaUcesnikDAO().Add(drzavaUcesnik);
                }
                gimnasticarUcesnik.DrzavaUcesnik = drzavaUcesnik;

                gimnasticarUcesnik.TakmicarskaKategorija = seniori;
                gimnasticarUcesnik.NastupaZaDrzavu       = true;

                DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO().Add(gimnasticarUcesnik);

                rezTak.Takmicenje1.addGimnasticar(gimnasticarUcesnik);
            }

            rezTakmicenjeDAO.Update(rezTak);
        }
예제 #4
0
        public static void updateTakmicenjeOnChangedPropozicije(IList <RezultatskoTakmicenje> rezTakmicenja,
                                                                IDictionary <int, Propozicije> origPropozicijeMap, IDictionary <int, Propozicije> origDescPropozicijeMap,
                                                                Takmicenje takmicenje)
        {
            DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().Update(takmicenje); // ovo snima i propozicije za descriptions

            RezultatskoTakmicenjeDAO rezTakDAO      = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            PropozicijeDAO           propozicijeDAO = DAOFactoryFactory.DAOFactory.GetPropozicijeDAO();
            OcenaDAO      ocenaDAO  = DAOFactoryFactory.DAOFactory.GetOcenaDAO();
            IList <Ocena> oceneTak1 = null;

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                if (!rt.Propozicije.Equals(origPropozicijeMap[rt.Id]))
                {
                    rezTakDAO.Update(rt); // ovo snima i propozicije i sve promene rezultata
                }
                else
                {
                    rezTakDAO.Attach(rt, false);  // moram da attachujem (ili da apdejtujem) sva rez. takmicenja zato
                }
                // sto se koriste u izracunavanju ekipnog poretka.
            }

            foreach (RezultatskoTakmicenjeDescription d in takmicenje.TakmicenjeDescriptions)
            {
                if (d.Propozicije.JednoTak4ZaSveKategorije != origDescPropozicijeMap[d.Id].JednoTak4ZaSveKategorije)
                {
                    // Posto je opcija JednoTak4ZaSveKategorije onemogucena u propozicijama za konkretna rez. takmicenja,
                    // moguce je da se promena u propozicijama za description ne prenosi na propozicije na konkretna
                    // rez. takmicenja. Zato ponovo radim Update za sva rez. takmicenja, da bih bio siguran da ce promene
                    // koje ce biti izvrsene u metodu updateImaEkipnoTakmicenje biti snimljene u bazu.
                    foreach (RezultatskoTakmicenje rt in rezTakmicenja)
                    {
                        if (rt.TakmicenjeDescription.Equals(d))
                        {
                            rezTakDAO.Update(rt);
                        }
                    }
                    RezultatskoTakmicenje.updateImaEkipnoTakmicenje(rezTakmicenja, d);
                }
            }

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                if (!rt.Propozicije.Equals(origPropozicijeMap[rt.Id]))
                {
                    if (oceneTak1 == null)
                    {
                        oceneTak1 = ocenaDAO.FindByDeoTakmicenja(takmicenje.Id, DeoTakmicenjaKod.Takmicenje1);
                    }
                    rt.updateRezultatiOnChangedPropozicije(origPropozicijeMap, takmicenje, rezTakmicenja, oceneTak1);
                }
            }

            if (oceneTak1 != null)
            {
                foreach (Ocena o in oceneTak1)
                {
                    ocenaDAO.Evict(o);
                }
            }
        }