Пример #1
0
        private Takmicenje insertTakmicenje()
        {
            Takmicenje takmicenje = new Takmicenje();

            takmicenje.Naziv      = "3rd European Artistic Gymnastics Individual Championships";
            takmicenje.Datum      = DateTime.Parse("02.04.2009");
            takmicenje.Mesto      = "Milano";
            takmicenje.Gimnastika = gimnastika;

            takmicenje.BrojDecimalaD     = 3;
            takmicenje.BrojDecimalaE1    = 2;
            takmicenje.BrojDecimalaE     = 3;
            takmicenje.BrojDecimalaPen   = 1;
            takmicenje.BrojDecimalaTotal = 3;

            takmicenje.ZavrsenoTak1 = true;

            string naziv = (gimnastika == Gimnastika.MSG) ? "Seniori" : "Seniorke";
            TakmicarskaKategorija takKategorija = new TakmicarskaKategorija(naziv);

            RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription();

            desc.Naziv       = "European Championships";
            desc.Propozicije = createPropozicije();

            takmicenje.addKategorija(takKategorija);
            takmicenje.addTakmicenjeDescription(desc);
            DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().Add(takmicenje);

            RezultatskoTakmicenje rezTak = new RezultatskoTakmicenje(takmicenje,
                                                                     takKategorija, desc, createPropozicije());

            DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO().Add(rezTak);
            return(takmicenje);
        }
Пример #2
0
        protected override DomainObject createNewEntity()
        {
            RezultatskoTakmicenjeDescription result = new RezultatskoTakmicenjeDescription();

            result.Propozicije = new Propozicije();
            return(result);
        }
Пример #3
0
        protected override void updateUIFromEntity(DomainObject entity)
        {
            RezultatskoTakmicenjeDescription d = (RezultatskoTakmicenjeDescription)entity;

            txtNaziv.Text = d.Naziv;
            // kategorije su checkirane u initUI
        }
Пример #4
0
        private RezultatskoTakmicenje createRezultatskoTakmicenje(Takmicenje takmicenje, TakmicarskaKategorija k,
                                                                  RezultatskoTakmicenjeDescription d, int redBroj)
        {
            RezultatskoTakmicenje result = new RezultatskoTakmicenje(takmicenje, k, d, new Propozicije());

            result.RedBroj = (byte)redBroj;
            return(result);
        }
Пример #5
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);
            }
        }
Пример #6
0
        protected override void updateEntityFromUI(DomainObject entity)
        {
            RezultatskoTakmicenjeDescription d = (RezultatskoTakmicenjeDescription)entity;

            d.Naziv = txtNaziv.Text.Trim();
            SelKategorije.Clear();
            foreach (object item in checkedListBoxKategorije.CheckedItems)
            {
                SelKategorije.Add(item as TakmicarskaKategorija);
            }
        }
Пример #7
0
        protected override void checkBusinessRulesOnAdd(DomainObject entity)
        {
            RezultatskoTakmicenjeDescription d = (RezultatskoTakmicenjeDescription)entity;
            Notification notification          = new Notification();

            if (DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDescriptionDAO()
                .existsDescriptionNaziv(d.Naziv, takmicenjeId))
            {
                notification.RegisterMessage("Naziv", "Takmicenje sa datim nazivom vec postoji.");
                throw new BusinessException(notification);
            }
        }
Пример #8
0
        private void btnAddTakmicenje_Click(object sender, EventArgs e)
        {
            if (lstKategorije.Items.Count == 0)
            {
                MessageDialogs.showMessage("Morate najpre da unesete kategorije.", this.Text);
                return;
            }

            RezultatskoTakmicenjeDescriptionForm form;

            try
            {
                form = new RezultatskoTakmicenjeDescriptionForm(null, takmicenjeId);
                if (form.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
            }
            catch (InfrastructureException ex)
            {
                MessageDialogs.showError(ex.Message, this.Text);
                return;
            }

            ISession session = null;

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);
                        // reload rez. takmicenja
                        RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
                        setTakmicenja(rezTakDAO.FindByTakmicenje(takmicenjeId));
                        SelectedTakmicenje = (RezultatskoTakmicenjeDescription)form.Entity;
                    }
            }
            catch (Exception ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                MessageDialogs.showMessage(ex.Message, this.Text);
                return;
            }
            finally
            {
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }
        }
Пример #9
0
        private void btnDeleteTakmicenje_Click(object sender, EventArgs e)
        {
            RezultatskoTakmicenjeDescription desc = SelectedTakmicenje;

            if (desc == null)
            {
                return;
            }

            string msgFmt = "Da li zelite da izbrisete takmicenje '{0}'?";

            if (!MessageDialogs.queryConfirmation(String.Format(msgFmt, desc.Naziv), this.Text))
            {
                return;
            }

            Cursor.Current = Cursors.WaitCursor;
            Cursor.Show();
            ISession session = null;

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);
                        deleteTakmicenje(desc);

                        Takmicenje t = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenjeId);
                        t.LastModified = DateTime.Now;
                        session.Transaction.Commit();

                        // reload rez. takmicenja
                        setTakmicenja(DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO().FindByTakmicenje(takmicenjeId));
                    }
            }
            catch (Exception ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                MessageDialogs.showMessage(ex.Message, this.Text);
                return;
            }
            finally
            {
                Cursor.Hide();
                Cursor.Current = Cursors.Arrow;
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }
        }
Пример #10
0
        private IList <Propozicije> getDependentPropozicije(RezultatskoTakmicenjeDescription d)
        {
            IList <Propozicije> result = new List <Propozicije>();

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                if (rt.TakmicenjeDescription.Equals(d))
                {
                    result.Add(rt.Propozicije);
                }
            }
            return(result);
        }
Пример #11
0
        protected override void checkBusinessRulesOnUpdate(DomainObject entity)
        {
            RezultatskoTakmicenjeDescription d = (RezultatskoTakmicenjeDescription)entity;
            Notification notification          = new Notification();

            bool nazivChanged = (d.Naziv.ToUpper() != oldNaziv.ToUpper()) ? true : false;

            if (nazivChanged && DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDescriptionDAO()
                .existsDescriptionNaziv(d.Naziv, takmicenjeId))
            {
                notification.RegisterMessage("Naziv", "Takmicenje sa datim nazivom vec postoji.");
                throw new BusinessException(notification);
            }
        }
Пример #12
0
 public IList <RezultatskoTakmicenje> FindByDescription(RezultatskoTakmicenjeDescription desc)
 {
     try
     {
         IQuery q = Session.CreateQuery(@"
             from RezultatskoTakmicenje r
             where r.TakmicenjeDescription = :desc
             order by r.RedBroj");
         q.SetEntity("desc", desc);
         return(q.List <RezultatskoTakmicenje>());
     }
     catch (HibernateException ex)
     {
         throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
     }
 }
Пример #13
0
        protected override void addEntity(DomainObject entity)
        {
            RezultatskoTakmicenjeDescription desc = (RezultatskoTakmicenjeDescription)entity;
            Takmicenje takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenjeId);

            takmicenje.addTakmicenjeDescription(desc);
            DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().Update(takmicenje);

            RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            int redBroj = rezTakDAO.FindMaxRedBroj(takmicenjeId) + 1;

            foreach (TakmicarskaKategorija k in SelKategorije)
            {
                rezTakDAO.Add(createRezultatskoTakmicenje(takmicenje, k, desc, redBroj++));
            }
        }
 public IList <TakmicarskaKategorija> FindByTakmicenjeDesc(int takmicenjeId, RezultatskoTakmicenjeDescription desc)
 {
     try
     {
         IQuery q = Session.CreateQuery(@"
             select distinct k
             from RezultatskoTakmicenje r
             join r.Kategorija k
             where r.Takmicenje.Id = :takmicenjeId
             and r.TakmicenjeDescription = :desc
             order by k.RedBroj");
         q.SetInt32("takmicenjeId", takmicenjeId);
         q.SetEntity("desc", desc);
         return(q.List <TakmicarskaKategorija>());
     }
     catch (HibernateException ex)
     {
         throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
     }
 }
Пример #15
0
 public RezultatskoTakmicenje FindByKatDesc(TakmicarskaKategorija kat, RezultatskoTakmicenjeDescription desc)
 {
     try
     {
         IQuery q = Session.CreateQuery(@"
             from RezultatskoTakmicenje r
             where r.Kategorija = :kat
             and r.TakmicenjeDescription = :desc");
         q.SetEntity("kat", kat);
         q.SetEntity("desc", desc);
         IList <RezultatskoTakmicenje> result = q.List <RezultatskoTakmicenje>();
         if (result.Count > 0)
         {
             return(result[0]);
         }
         return(null);
     }
     catch (HibernateException ex)
     {
         throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
     }
 }
Пример #16
0
        private void deleteTakmicenje(RezultatskoTakmicenjeDescription desc)
        {
            RezultatskoTakmicenjeDescriptionDAO rezTakDescDAO
                = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDescriptionDAO();

            rezTakDescDAO.Attach(desc, false);

            RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

            foreach (RezultatskoTakmicenje rt in rezTakDAO.FindByDescription(desc))
            {
                rezTakDAO.Delete(rt);
            }

            // Ne apdejtujem redne brojeve za preostala rez. takmicenja zato sto je redosled nepromenjen

            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();
            Takmicenje    takmicenje    = takmicenjeDAO.FindById(takmicenjeId);

            takmicenje.removeTakmicenjeDescription(desc);
            takmicenjeDAO.Update(takmicenje);

            rezTakDescDAO.Delete(desc);
        }
Пример #17
0
        public static void kreirajNaOsnovuViseKola(Takmicenje takmicenje,
                                                   IList <KeyValuePair <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > > razlicitaKola)
        {
            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();

            takmicenjeDAO.Attach(takmicenje, false);

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

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

            RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

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

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

            takmicenje.Kategorije.Clear();
            foreach (RezultatskoTakmicenje rt in rezTakmicenjaPrethodnaKola[0])
            {
                // Implementiran je najjednostavniji slucaj, gde se u svakom od prethodnih kola gleda samo prvo
                // takmicenje, i uzimaju se samo one kategorije gde postoji poklapanje. U principu, mogla bi se
                // implementirati i slozenija varijanta gde bi se, u slucaju da ne postoji poklapanje medju kategorijama,
                // otvorio prozor gde bi mogle da se uparuju kategorije, ali onda bi morao da nekako pamtim
                // koja su uparivanja izabrana (da bi ih primenio kod apdejtovanja kada se npr. ocena iz nekog od
                // prethodnih kola promeni).
                if (rt.TakmicenjeDescription.RedBroj != 0)
                {
                    continue;
                }

                bool ok = true;
                foreach (List <RezultatskoTakmicenje> rezTakList in rezTakmicenjaPrethodnaKola)
                {
                    if (Takmicenje.getRezTakmicenje(rezTakList, 0, rt.Kategorija) == null)
                    {
                        ok = false;
                        break;
                    }
                }
                if (ok)
                {
                    takmicenje.addKategorija(new TakmicarskaKategorija(rt.Kategorija.Naziv));
                }
            }
            if (takmicenje.Kategorije.Count == 0)
            {
                throw new BusinessException("Kategorije iz prethodnih kola se ne poklapaju");
            }

            // prvi description je uvek kao naziv takmicenja.
            takmicenje.TakmicenjeDescriptions.Clear();
            RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription();

            desc.Naziv       = takmicenje.Naziv;
            desc.Propozicije = new Propozicije(true, takmicenje.FinaleKupa, true);
            takmicenje.addTakmicenjeDescription(desc);

            // Takmicenje dodajem ovako rano zato sto se takmicenje.Id koristi dole u createGimnasticarUcesnik
            takmicenjeDAO.Add(takmicenje);

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

            foreach (TakmicarskaKategorija k in takmicenje.Kategorije)
            {
                Propozicije           p  = new Propozicije(true, takmicenje.FinaleKupa, true);
                RezultatskoTakmicenje rt = new RezultatskoTakmicenje(takmicenje, k, desc, p);
                rt.ImaEkipnoTakmicenje  = true;
                rt.KombinovanoEkipnoTak = false;
                rezTakmicenja.Add(rt);
            }

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

            // Za svakog gimnasticara, zapamti u kojim kategorijama je ucestvovao u prethodnim kolima
            IDictionary <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > mapaUcestvovanja
                = new Dictionary <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > >();

            IDictionary <TakmicarskaKategorija, RezultatskoTakmicenje> katToRezTakMap
                = new Dictionary <TakmicarskaKategorija, RezultatskoTakmicenje>();

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                katToRezTakMap.Add(rt.Kategorija, rt);
                for (int i = 0; i < rezTakmicenjaPrethodnaKola.Count; ++i)
                {
                    IList <RezultatskoTakmicenje> rezTakmicenjaPrethKolo = rezTakmicenjaPrethodnaKola[i];
                    RezultatskoTakmicenje         rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija);

                    Pair <int, TakmicarskaKategorija> koloKatPair = new Pair <int, TakmicarskaKategorija>(i, rt.Kategorija);

                    foreach (GimnasticarUcesnik g in rtFrom.Takmicenje1.Gimnasticari)
                    {
                        if (!mapaUcestvovanja.ContainsKey(g))
                        {
                            // Koriscenje IDictionary obezbedjuje da je svaki gimnasticar dodat u samo jednu kategoriju.
                            GimnasticarUcesnik g2 = GimnasticarUcesnikService.createGimnasticarUcesnik(g, rt.Kategorija);
                            IList <Pair <int, TakmicarskaKategorija> > pairList = new List <Pair <int, TakmicarskaKategorija> >();
                            pairList.Add(koloKatPair);
                            mapaUcestvovanja.Add(g2, pairList);
                            gimUcesnikDAO.Add(g2);
                        }
                        else
                        {
                            mapaUcestvovanja[g].Add(koloKatPair);
                        }
                    }
                }
            }

            foreach (KeyValuePair <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > entry in mapaUcestvovanja)
            {
                GimnasticarUcesnik    g       = entry.Key;
                TakmicarskaKategorija prevKat = null;
                bool ok = true;
                foreach (Pair <int, TakmicarskaKategorija> koloKatPair in entry.Value)
                {
                    TakmicarskaKategorija kat = koloKatPair.Second;
                    if (prevKat == null)
                    {
                        prevKat = kat;
                    }
                    else if (!kat.Equals(prevKat))
                    {
                        ok = false;
                    }

                    RezultatskoTakmicenje rt = katToRezTakMap[kat];
                    rt.Takmicenje1.addGimnasticar(g);
                }
                if (!ok)
                {
                    razlicitaKola.Add(entry);
                }
            }

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

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

            // TODO: Prebaci u domenske klase sto vise koda iz ove funkcije (isto i u funkciji updateViseKola).

            takmicenje.kreirajRezultateViseKola(rezTakmicenja, rezTakmicenjaPrethodnaKola);

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

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                rezTakDAO.Add(rt);
            }
        }
Пример #18
0
        public static void createFromPrevTakmicenje(Takmicenje takmicenje, Takmicenje from,
                                                    IList <RezultatskoTakmicenje> rezTakmicenjaFrom,
                                                    IDictionary <int, List <GimnasticarUcesnik> > rezTakToGimnasticarUcesnikMap)
        {
            const int MAX = 1024;

            TakmicarskaKategorija[] kategorije = new TakmicarskaKategorija[MAX];
            for (int i = 0; i < MAX; ++i)
            {
                kategorije[i] = null;
            }
            foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom)
            {
                if (kategorije[rtFrom.Kategorija.RedBroj] == null)
                {
                    kategorije[rtFrom.Kategorija.RedBroj] = new TakmicarskaKategorija(rtFrom.Kategorija.Naziv);
                }
            }

            PropozicijeDAO propozicijeDAO = DAOFactoryFactory.DAOFactory.GetPropozicijeDAO();

            foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom)
            {
                propozicijeDAO.Attach(rtFrom.TakmicenjeDescription.Propozicije, false);
                propozicijeDAO.Attach(rtFrom.Propozicije, false);
            }

            RezultatskoTakmicenjeDescription[] descriptions = new RezultatskoTakmicenjeDescription[MAX];
            for (int i = 0; i < MAX; ++i)
            {
                descriptions[i] = null;
            }
            foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom)
            {
                if (descriptions[rtFrom.TakmicenjeDescription.RedBroj] == null)
                {
                    RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription();
                    desc.Naziv       = rtFrom.TakmicenjeDescription.Naziv;
                    desc.Propozicije = new Propozicije();

                    // Apdejtujem jedino propozicije za takmicenje 4 zbog kombinovanog ekipnog takmicenja.
                    // Ostale propozicije su na inicijalnim vrednostima.
                    rtFrom.TakmicenjeDescription.Propozicije.copyTakmicenje4To(desc.Propozicije);

                    descriptions[rtFrom.TakmicenjeDescription.RedBroj] = desc;
                }
            }

            takmicenje.Kategorije.Clear();
            for (int i = 0; i < MAX; ++i)
            {
                if (kategorije[i] != null)
                {
                    takmicenje.addKategorija(kategorije[i]);
                }
            }

            takmicenje.TakmicenjeDescriptions.Clear();
            bool first = true;

            for (int i = 0; i < MAX; ++i)
            {
                if (descriptions[i] != null)
                {
                    if (first)
                    {
                        // prvi description je uvek kao naziv takmicenja.
                        RezultatskoTakmicenjeDescription desc = new RezultatskoTakmicenjeDescription();
                        desc.Naziv       = takmicenje.Naziv;
                        desc.Propozicije = descriptions[i].Propozicije;  // klonirane propozicije
                        descriptions[i]  = desc;
                        first            = false;
                    }
                    takmicenje.addTakmicenjeDescription(descriptions[i]);
                }
            }

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

            foreach (RezultatskoTakmicenje rtFrom in rezTakmicenjaFrom)
            {
                RezultatskoTakmicenje rt = new RezultatskoTakmicenje(takmicenje,
                                                                     kategorije[rtFrom.Kategorija.RedBroj],
                                                                     descriptions[rtFrom.TakmicenjeDescription.RedBroj],
                                                                     new Propozicije());
                rtFrom.Propozicije.copyTakmicenje4To(rt.Propozicije);
                rezTakmicenja.Add(rt);
            }

            foreach (RezultatskoTakmicenjeDescription d in takmicenje.TakmicenjeDescriptions)
            {
                RezultatskoTakmicenje.updateImaEkipnoTakmicenje(rezTakmicenja, d);
            }

            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();

            takmicenjeDAO.Add(takmicenje);

            IDictionary <int, GimnasticarUcesnik> gimnasticariMap = new Dictionary <int, GimnasticarUcesnik>();

            for (int i = 0; i < rezTakmicenja.Count; ++i)
            {
                RezultatskoTakmicenje rt     = rezTakmicenja[i];
                RezultatskoTakmicenje rtFrom = rezTakmicenjaFrom[i];
                foreach (GimnasticarUcesnik g in rezTakToGimnasticarUcesnikMap[rtFrom.Id])
                {
                    GimnasticarUcesnik g2;
                    if (!gimnasticariMap.ContainsKey(g.Id))
                    {
                        g2 = GimnasticarUcesnikService.createGimnasticarUcesnik(g,
                                                                                kategorije[g.TakmicarskaKategorija.RedBroj]);
                        gimnasticariMap[g.Id] = g2;
                    }
                    else
                    {
                        g2 = gimnasticariMap[g.Id];
                    }
                    rt.Takmicenje1.addGimnasticar(g2);
                    rt.Takmicenje1.updateRezultatiOnGimnasticarAdded(g2, new List <Ocena>(), rt);
                }
            }

            Takmicenje1DAO takmicenje1DAO = DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO();

            for (int i = 0; i < rezTakmicenja.Count; ++i)
            {
                RezultatskoTakmicenje rt     = rezTakmicenja[i];
                RezultatskoTakmicenje rtFrom = rezTakmicenjaFrom[i];
                takmicenje1DAO.Attach(rtFrom.Takmicenje1, false);
                foreach (Ekipa e in rtFrom.Takmicenje1.Ekipe)
                {
                    Ekipa ekipa = new Ekipa();
                    ekipa.Naziv = e.Naziv;
                    ekipa.Kod   = e.Kod;

                    // Ne kopiram clanove ekipe zato sto dodavati clanove ekipe ima smisla jedino ako se znaju
                    // rezultati, a ovaj metod samo pravi pripremu takmicenja i nema nikakvih rezultata.

                    rt.Takmicenje1.addEkipa(ekipa, true);
                }
            }

            RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO();

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                rezultatskoTakmicenjeDAO.Add(rt);
                foreach (Ekipa e in rt.Takmicenje1.Ekipe)
                {
                    ekipaDAO.Add(e);
                }
            }

            GimnasticarUcesnikDAO gimnasticarUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO();

            foreach (GimnasticarUcesnik g in gimnasticariMap.Values)
            {
                gimnasticarUcesnikDAO.Add(g);
            }
        }
Пример #19
0
        protected override void saveOriginalData(DomainObject entity)
        {
            RezultatskoTakmicenjeDescription d = (RezultatskoTakmicenjeDescription)entity;

            oldNaziv = d.Naziv;
        }