private void deleteKategorija(TakmicarskaKategorija k)
        {
            TakmicarskaKategorijaDAO takKatDAO = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO();

            takKatDAO.Attach(k, false);

            IList <RezultatskoTakmicenje> rezTakmicenja = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO()
                                                          .FindByKategorija(k);

            if (rezTakmicenja.Count > 0)
            {
                throw new BusinessException("Morate najpre da izbrisete kategoriju iz svih takmicenja.");
            }

            IList <GimnasticarUcesnik> gimnasticari = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO()
                                                      .FindByKategorija(k);

            if (gimnasticari.Count > 0)
            {
                throw new BusinessException("Morate najpre da izbrisete sve gimnasticare za datu kategoriju.");
            }

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

            t.removeKategorija(SelectedKategorija);

            takKatDAO.Delete(k);
            takmicenjeDAO.Update(t);
        }
        private void dodajBtn_Click(object sender, EventArgs e)
        {
            EditovanjeTakmicenja dialog = new EditovanjeTakmicenja();

            dialog.ShowDialog();
            popuniListu(TakmicenjeDAO.takmicenjaPretraga(pretraziTextBox.Text));
        }
        public PrikazTakmicara()
        {
            InitializeComponent();
            pretragaTextBox.AutoCompleteCustomSource.AddRange((string[])ClanDAO.imena().ToArray(typeof(string)));
            grupe = new Dictionary <string, ListViewGroup>();

            this.klubComboBox.SelectedIndexChanged       -= new System.EventHandler(this.klubComboBox_SelectedIndexChanged);
            this.datumComboBox.SelectedIndexChanged      -= new System.EventHandler(this.datumComboBox_SelectedIndexChanged);
            this.kategorijaComboBox.SelectedIndexChanged -= new System.EventHandler(this.kategorijaComboBox_SelectedIndexChanged);

            this.klubComboBox.Items.AddRange(KarateKlubDAO.naziviKlubova().ToArray());
            this.klubComboBox.SelectedIndex = 0;

            this.takmicenjeComboBox.Items.AddRange(TakmicenjeDAO.naziviSvi().ToArray());
            this.takmicenjeComboBox.SelectedIndex = 0;

            this.datumComboBox.Enabled      = false;
            this.kategorijaComboBox.Enabled = false;

            this.klubComboBox.SelectedIndexChanged       += new System.EventHandler(this.klubComboBox_SelectedIndexChanged);
            this.datumComboBox.SelectedIndexChanged      += new System.EventHandler(this.datumComboBox_SelectedIndexChanged);
            this.kategorijaComboBox.SelectedIndexChanged += new System.EventHandler(this.kategorijaComboBox_SelectedIndexChanged);

            osvjezi();
        }
 private void pretraziTextBox_KeyUp(object sender, KeyEventArgs e)
 {
     if (e.KeyData == Keys.Enter)
     {
         popuniListu(TakmicenjeDAO.takmicenjaPretraga(pretraziTextBox.Text));
     }
 }
        public PrijavaTakmicara()
        {
            InitializeComponent();

            jmb = 0;
            this.takmicenjeComboBox.Items.AddRange(TakmicenjeDAO.naziviSvi().ToArray());
            this.takmicenjeComboBox.SelectedIndex = 0;
        }
示例#6
0
        public EditovanjeBorbe()
        {
            InitializeComponent();

            borba = null;

            this.takmicenjeComboBox.Items.AddRange(TakmicenjeDAO.naziviSvi().ToArray());
            this.takmicenjeComboBox.SelectedIndex = 0;
        }
        private void btnMoveDownKategorija_Click(object sender, EventArgs e)
        {
            TakmicarskaKategorija k = SelectedKategorija;

            if (k == null)
            {
                return;
            }
            if (treeViewTakmicenja.Nodes.Count > 0)
            {
                MessageDialogs.showMessage("Kategorije je moguce pomerati pre nego sto se dodaju takmicenja.", this.Text);
                return;
            }

            ISession session = null;

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);
                        DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().Attach(k, false);
                        TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();
                        Takmicenje    takmicenje    = takmicenjeDAO.FindById(takmicenjeId);
                        if (takmicenje.moveKategorijaDown(k))
                        {
                            takmicenjeDAO.Update(takmicenje);

                            takmicenje.LastModified = DateTime.Now;
                            session.Transaction.Commit();

                            // reload kategorije
                            setKategorije(DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().FindByTakmicenje(takmicenjeId));
                            SelectedKategorija = k;
                        }
                    }
            }
            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);
            }
        }
 private void prikaziBtn_Click(object sender, EventArgs e)
 {
     if (takmicenjaListView.SelectedItems.Count == 0)
     {
         MessageBox.Show("Морате селектовати такмичење које желите да прикажете", "Обајештење!");
     }
     else
     {
         EditovanjeTakmicenja dialog = new EditovanjeTakmicenja();
         dialog.Takmicenje = (Takmicenje)takmicenjaListView.SelectedItems[0];
         dialog.ShowDialog();
         popuniListu(TakmicenjeDAO.takmicenjaPretraga(pretraziTextBox.Text));
     }
 }
 private void izbrisiBtn_Click(object sender, EventArgs e)
 {
     if (takmicenjaListView.SelectedItems.Count == 0)
     {
         MessageBox.Show("Морате селектовати такмичење које желите да избришете", "Обајештење!");
     }
     else if (MessageBox.Show("Да ли сте сигурни да желите да избришете селектовано такмичење?", "Да ли сте сигурни?", MessageBoxButtons.YesNo) == DialogResult.Yes)
     {
         Takmicenje takmicenje = (Takmicenje)takmicenjaListView.SelectedItems[0];
         if (TakmicenjeDAO.brisi(takmicenje) == false)
         {
             MessageBox.Show("Да бист избрисали такмичење " + takmicenje.Naziv + " морате одјавити све такмичаре", "Обајештење!");
         }
         popuniListu(TakmicenjeDAO.takmicenjaPretraga(pretraziTextBox.Text));
     }
 }
        private void sacuvajBtn_Click(object sender, EventArgs e)
        {
            string nazivTakmicenja = nazivTxtBox.Text;
            object organizator     = organizatorComboBox.SelectedItem;
            string adresa          = adresaTxtBox.Text;

            if (nazivTakmicenja.Equals("") || organizator == null || adresa.Equals(""))
            {
                MessageBox.Show("Морате попунити сва поља", "Обајвештење!");
                return;
            }

            if (Takmicenje == null)
            {
                Takmicenje = new Takmicenje(
                    0,
                    nazivTxtBox.Text,
                    datumPocetkaDateTimePicker.Value,
                    organizatorComboBox.SelectedItem.ToString(),
                    adresaTxtBox.Text
                    );
                if (TakmicenjeDAO.dodaj(Takmicenje) == true)
                {
                    this.Close();
                }
                else
                {
                    MessageBox.Show("Додавање није успјело", "Грешка!");
                }
            }
            else
            {
                takmicenje.Naziv       = nazivTxtBox.Text;
                takmicenje.Datum       = datumPocetkaDateTimePicker.Value;
                takmicenje.Organizator = organizatorComboBox.SelectedItem.ToString();
                takmicenje.Adresa      = adresaTxtBox.Text;

                if (TakmicenjeDAO.azuriraj(Takmicenje) == true)
                {
                    this.Close();
                }
                else
                {
                    MessageBox.Show("Ажурирање није успјело", "Грешка!");
                }
            }
        }
示例#11
0
 private void takmicenjeComboBox_SelectedIndexChanged(object sender, EventArgs e)
 {
     this.datumComboBox.Enabled = true;
     this.datumComboBox.Items.Clear();
     this.datumComboBox.Items.AddRange(
         TakmicenjeDAO.datumiSvi(takmicenjeComboBox.SelectedItem.ToString()).ToArray()
         );
     if (this.datumComboBox.Items.Count > 0)
     {
         this.datumComboBox.SelectedIndex = 0;
     }
     else
     {
         this.kategorijaComboBox.Enabled = false;
         this.datumComboBox.Enabled      = false;
     }
 }
示例#12
0
        private void datumComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.kategorijaComboBox.Enabled = true;
            this.kategorijaComboBox.Items.Clear();
            string[] datum = datumComboBox.SelectedItem.ToString().Split(' ')[0].Split('/');
            this.kategorijaComboBox.Items.AddRange(
                TakmicenjeDAO.naziviKAtegorija(
                    takmicenjeComboBox.SelectedItem.ToString(),
                    datum[2] + datum[1] + datum[0]
                    ).ToArray()
                );

            if (this.kategorijaComboBox.Items.Count > 0)
            {
                this.kategorijaComboBox.SelectedIndex = 0;
            }
        }
示例#13
0
        public static void prebrisiTakmicenje(Takmicenje t, IList <KlubUcesnik> klubovi, IList <DrzavaUcesnik> drzave,
                                              IList <GimnasticarUcesnik> gimnasticari, IList <RezultatskoTakmicenje> rezTakmicenja,
                                              IList <SudijaUcesnik> sudije, IList <RasporedSudija> rasporediSudija, IList <RasporedNastupa> rasporediNastupa,
                                              IList <Ocena> ocene)
        {
            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();
            Takmicenje    t2            = takmicenjeDAO.FindByNazivGimnastikaDatum(t.Naziv, t.Gimnastika, t.Datum);

            if (t2 != null)
            {
                // Posto cemo izbrisati postojece takmicenje i uvesti ga sa novim ID-om, moramo da
                // promenimo sva finala koja se referisu na ovo takmicenje da koriste novi ID.
                IList <Takmicenje> finala = takmicenjeDAO.FindFinala(t2);
                if (finala.Count > 0)
                {
                    takmicenjeDAO.Add(t);
                    foreach (Takmicenje f in finala)
                    {
                        if (f.PrvoKolo != null && f.PrvoKolo.Id == t2.Id)
                        {
                            f.PrvoKolo = t;
                        }
                        if (f.DrugoKolo != null && f.DrugoKolo.Id == t2.Id)
                        {
                            f.DrugoKolo = t;
                        }
                        if (f.TreceKolo != null && f.TreceKolo.Id == t2.Id)
                        {
                            f.TreceKolo = t;
                        }
                        if (f.CetvrtoKolo != null && f.CetvrtoKolo.Id == t2.Id)
                        {
                            f.CetvrtoKolo = t;
                        }
                        takmicenjeDAO.Update(f);
                    }
                }
                deleteTakmicenje(t2, false);
            }
            addTakmicenje(t, klubovi, drzave, gimnasticari, rezTakmicenja, sudije, rasporediSudija, rasporediNastupa, ocene);
        }
        private void takmicenjeComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (takmicenjeComboBox.SelectedIndex == 0)
            {
                this.datumComboBox.Enabled      = false;
                this.kategorijaComboBox.Enabled = false;
            }
            else
            {
                this.datumComboBox.SelectedIndexChanged      -= new System.EventHandler(this.datumComboBox_SelectedIndexChanged);
                this.kategorijaComboBox.SelectedIndexChanged -= new System.EventHandler(this.kategorijaComboBox_SelectedIndexChanged);

                this.datumComboBox.Enabled = true;
                this.datumComboBox.Items.Clear();
                this.datumComboBox.Items.AddRange(
                    TakmicenjeDAO.datumiSvi(takmicenjeComboBox.SelectedItem.ToString()).ToArray()
                    );

                this.datumComboBox.SelectedIndex = 0;

                this.kategorijaComboBox.Enabled = true;
                this.kategorijaComboBox.Items.Clear();
                string[] datum = datumComboBox.SelectedItem.ToString().Split(' ')[0].Split('/');

                this.kategorijaComboBox.Items.AddRange(
                    TakmicenjeDAO.naziviKAtegorija(
                        takmicenjeComboBox.SelectedItem.ToString(),
                        datum[2] + datum[1] + datum[0]
                        ).ToArray()
                    );

                if (this.kategorijaComboBox.Items.Count > 0)
                {
                    this.kategorijaComboBox.SelectedIndex = 0;
                }

                this.datumComboBox.SelectedIndexChanged      += new System.EventHandler(this.datumComboBox_SelectedIndexChanged);
                this.kategorijaComboBox.SelectedIndexChanged += new System.EventHandler(this.kategorijaComboBox_SelectedIndexChanged);
            }
            osvjezi();
        }
示例#15
0
        public static void addTakmicarskaKategorija(TakmicarskaKategorija kat, int takmicenjeId)
        {
            Notification notification = new Notification();

            kat.validate(notification);
            if (!notification.IsValid())
            {
                throw new BusinessException(notification);
            }

            if (DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().existsKategorijaNaziv(kat.Naziv, takmicenjeId))
            {
                notification.RegisterMessage("Naziv", "Kategorija sa datim nazivom vec postoji.");
                throw new BusinessException(notification);
            }

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

            t.addKategorija(kat);
            takmicenjeDAO.Update(t);
        }
        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
        public static void deleteTakmicenje(Takmicenje t, bool proveriFinala)
        {
            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();

            if (proveriFinala)
            {
                // Proveri da li se neko takmicenje (finale kupa ili zbir vise kola) referise na ovo takmicenje.
                IList <Takmicenje> finala = takmicenjeDAO.FindFinala(t);
                if (finala.Count > 0)
                {
                    string msg = "Takmicenje \"" + t.ToString() + "\" je nemoguce izbrisati jer je ono jedno od kola za " +
                                 "sledeca finala:\n\n";
                    foreach (Takmicenje f in finala)
                    {
                        msg += f.ToString() + "\n";
                    }
                    throw new BusinessException(msg);
                }
            }

            // brisi ocene
            OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();

            foreach (Ocena o in ocenaDAO.FindByTakmicenje(t.Id))
            {
                ocenaDAO.Delete(o);
            }

            // brisi rasporede nastupa
            RasporedNastupaDAO rasporedNastupaDAO = DAOFactoryFactory.DAOFactory.GetRasporedNastupaDAO();

            foreach (RasporedNastupa r in rasporedNastupaDAO.FindByTakmicenje(t.Id))
            {
                rasporedNastupaDAO.Delete(r);
            }

            // brisi rasporede sudija
            RasporedSudijaDAO rasporedSudijaDAO = DAOFactoryFactory.DAOFactory.GetRasporedSudijaDAO();

            foreach (RasporedSudija r in rasporedSudijaDAO.FindByTakmicenje(t.Id))
            {
                rasporedSudijaDAO.Delete(r);
            }

            // brisi sudije ucesnike
            SudijaUcesnikDAO sudijaUcesnikDAO = DAOFactoryFactory.DAOFactory.GetSudijaUcesnikDAO();

            foreach (SudijaUcesnik s in sudijaUcesnikDAO.FindByTakmicenje(t.Id))
            {
                sudijaUcesnikDAO.Delete(s);
            }

            // brisi rezultatska takmicenja i ekipe
            RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO();

            foreach (RezultatskoTakmicenje r in rezultatskoTakmicenjeDAO.FindByTakmicenje(t.Id))
            {
                foreach (Ekipa e in r.Takmicenje1.Ekipe)
                {
                    ekipaDAO.Delete(e);
                }
                rezultatskoTakmicenjeDAO.Delete(r);
            }

            // brisi gimnasticare ucesnike
            GimnasticarUcesnikDAO gimnasticarUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO();

            foreach (GimnasticarUcesnik g in gimnasticarUcesnikDAO.FindByTakmicenje(t.Id))
            {
                gimnasticarUcesnikDAO.Delete(g);
            }

            // brisi klubove ucesnike
            KlubUcesnikDAO klubUcesnikDAO = DAOFactoryFactory.DAOFactory.GetKlubUcesnikDAO();

            foreach (KlubUcesnik k in klubUcesnikDAO.FindByTakmicenje(t.Id))
            {
                klubUcesnikDAO.Delete(k);
            }

            // brisi drzave ucesnike
            DrzavaUcesnikDAO drzavaUcesnikDAO = DAOFactoryFactory.DAOFactory.GetDrzavaUcesnikDAO();

            foreach (DrzavaUcesnik d in drzavaUcesnikDAO.FindByTakmicenje(t.Id))
            {
                drzavaUcesnikDAO.Delete(d);
            }

            // brisi kategorije
            TakmicarskaKategorijaDAO takmicarskaKategorijaDAO = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO();

            foreach (TakmicarskaKategorija k in takmicarskaKategorijaDAO.FindByTakmicenje(t.Id))
            {
                takmicarskaKategorijaDAO.Delete(k);
            }

            // brisi descriptions
            RezultatskoTakmicenjeDescriptionDAO rezTakDescDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDescriptionDAO();

            foreach (RezultatskoTakmicenjeDescription d in rezTakDescDAO.FindByTakmicenje(t.Id))
            {
                rezTakDescDAO.Delete(d);
            }

            // brisi takmicenje
            takmicenjeDAO.Delete(t);
        }
示例#20
0
        public static void addTakmicenje(Takmicenje t, IList <KlubUcesnik> klubovi, IList <DrzavaUcesnik> drzave,
                                         IList <GimnasticarUcesnik> gimnasticari, IList <RezultatskoTakmicenje> rezTakmicenja,
                                         IList <SudijaUcesnik> sudije, IList <RasporedSudija> rasporediSudija, IList <RasporedNastupa> rasporediNastupa,
                                         IList <Ocena> ocene)
        {
            // dodaj takmicenje
            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();

            takmicenjeDAO.Add(t);

            // kategorije i descriptions se dodaju pomocu transitive persistance

            // dodaj klubove ucesnike
            KlubUcesnikDAO klubUcesnikDAO = DAOFactoryFactory.DAOFactory.GetKlubUcesnikDAO();

            foreach (KlubUcesnik k in klubovi)
            {
                klubUcesnikDAO.Add(k);
            }

            // dodaj drzave ucesnike
            DrzavaUcesnikDAO drzavaUcesnikDAO = DAOFactoryFactory.DAOFactory.GetDrzavaUcesnikDAO();

            foreach (DrzavaUcesnik d in drzave)
            {
                drzavaUcesnikDAO.Add(d);
            }

            // dodaj gimnasticare ucesnike
            GimnasticarUcesnikDAO gimnasticarUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO();

            foreach (GimnasticarUcesnik g in gimnasticari)
            {
                gimnasticarUcesnikDAO.Add(g);
            }

            // dodaj rezultatska takmicenja i ekipe
            RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
            EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO();

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

            // dodaj sudije ucesnike
            if (sudije != null)
            {
                SudijaUcesnikDAO sudijaUcesnikDAO = DAOFactoryFactory.DAOFactory.GetSudijaUcesnikDAO();
                foreach (SudijaUcesnik s in sudije)
                {
                    sudijaUcesnikDAO.Add(s);
                }
            }

            // dodaj rasporede sudija
            if (rasporediSudija != null)
            {
                RasporedSudijaDAO rasporedSudijaDAO = DAOFactoryFactory.DAOFactory.GetRasporedSudijaDAO();
                foreach (RasporedSudija r in rasporediSudija)
                {
                    rasporedSudijaDAO.Add(r);
                }
            }

            // dodaj rasporede nastupa
            if (rasporediNastupa != null)
            {
                RasporedNastupaDAO rasporedNastupaDAO = DAOFactoryFactory.DAOFactory.GetRasporedNastupaDAO();
                foreach (RasporedNastupa r in rasporediNastupa)
                {
                    rasporedNastupaDAO.Add(r);
                }
            }

            // dodaj ocene
            OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();

            foreach (Ocena o in ocene)
            {
                ocenaDAO.Add(o);
            }
        }
 public PrikazTakmicenja()
 {
     InitializeComponent();
     popuniListu(TakmicenjeDAO.takmicenjaSva());
     pretraziTextBox.AutoCompleteCustomSource.AddRange((string[])TakmicenjeDAO.naziviSvi().ToArray(typeof(string)));
 }
 private void pretraziBtn_Click(object sender, EventArgs e)
 {
     popuniListu(TakmicenjeDAO.takmicenjaPretraga(pretraziTextBox.Text));
 }
示例#23
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);
            }
        }
示例#24
0
        public static void addGimnasticariToRezTak(IList <GimnasticarUcesnik> gimnasticari, RezultatskoTakmicenje rezTak,
                                                   IList <GimnasticarUcesnik> addedGimnasticari)
        {
            RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

            rezultatskoTakmicenjeDAO.Attach(rezTak, false);

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

            RezultatskoTakmicenje rezTak1 = null;
            RezultatskoTakmicenje rezTak2 = null;
            RezultatskoTakmicenje rezTak3 = null;
            RezultatskoTakmicenje rezTak4 = null;

            if (takmicenje.FinaleKupa || takmicenje.ZbirViseKola)
            {
                rezTak1 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari(
                    takmicenje.PrvoKolo.Id, rezTak.Kategorija.Naziv, 0);
                rezTak2 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari(
                    takmicenje.DrugoKolo.Id, rezTak.Kategorija.Naziv, 0);
                if (takmicenje.ZbirViseKola)
                {
                    if (takmicenje.TreceKolo != null)
                    {
                        rezTak3 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari(
                            takmicenje.TreceKolo.Id, rezTak.Kategorija.Naziv, 0);
                    }
                    if (takmicenje.CetvrtoKolo != null)
                    {
                        rezTak4 = rezultatskoTakmicenjeDAO.FindByTakmicenjeKatDescFetch_Tak1_Gimnasticari(
                            takmicenje.CetvrtoKolo.Id, rezTak.Kategorija.Naziv, 0);
                    }
                }
            }

            OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();

            foreach (GimnasticarUcesnik g in gimnasticari)
            {
                if (rezTak.Takmicenje1.addGimnasticar(g))
                {
                    IList <Ocena> ocene = ocenaDAO.FindByGimnasticar(g, DeoTakmicenjaKod.Takmicenje1);
                    if (takmicenje.FinaleKupa)
                    {
                        rezTak.Takmicenje1.updateRezultatiOnGimnasticarAdded(g, ocene, rezTak, rezTak1, rezTak2);
                    }
                    else if (takmicenje.ZbirViseKola)
                    {
                        rezTak.Takmicenje1.updateRezultatiOnGimnasticarAdded(g, rezTak, rezTak1, rezTak2, rezTak3, rezTak4);
                    }
                    else
                    {
                        rezTak.Takmicenje1.updateRezultatiOnGimnasticarAdded(g, ocene, rezTak);
                    }

                    foreach (Ocena o in ocene)
                    {
                        ocenaDAO.Evict(o);
                    }

                    addedGimnasticari.Add(g);
                }
            }

            takmicenjeDAO.Evict(takmicenje);
            if (rezTak1 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak1);
            }
            if (rezTak2 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak2);
            }
            if (rezTak3 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak3);
            }
            if (rezTak4 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak4);
            }

            if (addedGimnasticari.Count > 0)
            {
                DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO().Update(rezTak.Takmicenje1);
            }
        }
示例#25
0
        // Proveri za sva finala kupa i zbir vise kola, da li postoje gimnasticari koji su nastupali u razlicitim
        // kategorijama u prethodnim kolima.
        public void proveriViseKola()
        {
            IList <int> takmicenjaId     = getTakmicenjaId();
            string      takmicenjeHeader = String.Empty;

            for (int j = 0; j < takmicenjaId.Count; ++j)
            {
                ISession session = null;
                try
                {
                    using (session = NHibernateHelper.Instance.OpenSession())
                        using (session.BeginTransaction())
                        {
                            CurrentSessionContext.Bind(session);
                            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();
                            Takmicenje    t             = takmicenjeDAO.FindById(takmicenjaId[j]);
                            if (!t.FinaleKupa && !t.ZbirViseKola)
                            {
                                continue;
                            }

                            takmicenjeHeader = j.ToString() + ". " + t.ToString();
                            if (t.FinaleKupa)
                            {
                                takmicenjeHeader += " - FINALE KUPA";
                            }
                            else
                            {
                                takmicenjeHeader += " - ZBIR VISE KOLA";
                            }
                            takmicenjeHeader += " (" + t.Id + ")";

                            List <Takmicenje> prethodnaKola = new List <Takmicenje>();
                            prethodnaKola.Add(t.PrvoKolo);
                            prethodnaKola.Add(t.DrugoKolo);
                            if (t.TreceKolo != null)
                            {
                                prethodnaKola.Add(t.TreceKolo);
                            }
                            if (t.CetvrtoKolo != null)
                            {
                                prethodnaKola.Add(t.CetvrtoKolo);
                            }

                            RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

                            List <IList <RezultatskoTakmicenje> > rezTakmicenjaPrethodnaKola = new List <IList <RezultatskoTakmicenje> >();
                            foreach (Takmicenje prethKolo in prethodnaKola)
                            {
                                rezTakmicenjaPrethodnaKola.Add(rezTakDAO.FindByTakmicenje(prethKolo.Id));
                            }

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

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

                            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
                            {
                                for (int i = 0; i < rezTakmicenjaPrethodnaKola.Count; ++i)
                                {
                                    IList <RezultatskoTakmicenje> rezTakmicenjaPrethKolo = rezTakmicenjaPrethodnaKola[i];
                                    RezultatskoTakmicenje         rtFrom = Takmicenje.getRezTakmicenje(rezTakmicenjaPrethKolo, 0, rt.Kategorija);
                                    if (rtFrom == null)
                                    {
                                        // Ovo se pojavljuje kod takmicenja ciji je id 226.
                                        continue;
                                    }

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

                                    foreach (GimnasticarUcesnik g in rtFrom.Takmicenje1.Gimnasticari)
                                    {
                                        if (!mapaUcestvovanja.ContainsKey(g))
                                        {
                                            IList <Pair <int, TakmicarskaKategorija> > pairList = new List <Pair <int, TakmicarskaKategorija> >();
                                            pairList.Add(koloKatPair);
                                            mapaUcestvovanja.Add(g, pairList);
                                        }
                                        else
                                        {
                                            mapaUcestvovanja[g].Add(koloKatPair);
                                        }
                                    }
                                }
                            }

                            foreach (KeyValuePair <GimnasticarUcesnik, IList <Pair <int, TakmicarskaKategorija> > > entry in mapaUcestvovanja)
                            {
                                GimnasticarUcesnik    g       = entry.Key;
                                TakmicarskaKategorija prevKat = null;
                                bool ok = true;
                                foreach (Pair <int, TakmicarskaKategorija> koloKatPair in entry.Value)
                                {
                                    TakmicarskaKategorija kat = koloKatPair.Second;
                                    if (prevKat == null)
                                    {
                                        prevKat = kat;
                                    }
                                    else if (!kat.Equals(prevKat))
                                    {
                                        ok = false;
                                    }
                                }
                                if (!ok)
                                {
                                    MessageBox.Show(takmicenjeHeader + "\n\n" + g.ImeSrednjeImePrezimeDatumRodjenja);
                                }
                            }
                        }
                }
                catch (Exception)
                {
                    if (session != null && session.Transaction != null && session.Transaction.IsActive)
                    {
                        session.Transaction.Rollback();
                    }
                    MessageBox.Show(takmicenjeHeader);
                }
                finally
                {
                    CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
                }
            }
        }
示例#26
0
        // Proveri da li za svaki rezultat postoji i ocena.
        public void proveriRezultateIOcene()
        {
            StreamWriter log              = File.CreateText("proveri_rezultate_i_ocene.txt");
            IList <int>  takmicenjaId     = getTakmicenjaId();
            string       takmicenjeHeader = String.Empty;

            for (int j = 0; j < takmicenjaId.Count; ++j)
            {
                ISession session = null;
                try
                {
                    using (session = NHibernateHelper.Instance.OpenSession())
                        using (session.BeginTransaction())
                        {
                            CurrentSessionContext.Bind(session);
                            TakmicenjeDAO takmicenjeDAO = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO();
                            Takmicenje    t             = takmicenjeDAO.FindById(takmicenjaId[j]);
                            if (t.ZbirViseKola)
                            {
                                continue;
                            }

                            takmicenjeHeader  = j.ToString() + ". " + t.ToString();
                            takmicenjeHeader += " (" + t.Id + ")";

                            RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

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

                            OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();

                            // Takmicenje 1
                            IList <Ocena> ocene = ocenaDAO.FindByDeoTakmicenja(t.Id, DeoTakmicenjaKod.Takmicenje1);

                            IDictionary <int, IList <Ocena> > oceneMap = new Dictionary <int, IList <Ocena> >();
                            foreach (Ocena o in ocene)
                            {
                                if (!oceneMap.ContainsKey(o.Gimnasticar.Id))
                                {
                                    oceneMap.Add(o.Gimnasticar.Id, new List <Ocena>());
                                }
                                oceneMap[o.Gimnasticar.Id].Add(o);
                            }

                            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
                            {
                                foreach (PoredakSprava p in rt.Takmicenje1.PoredakSprava)
                                {
                                    foreach (RezultatSprava r in p.Rezultati)
                                    {
                                        if (!oceneMap.ContainsKey(r.Gimnasticar.Id))
                                        {
                                            if (r.Total != null)
                                            {
                                                log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                              " nema nijednu ocenu" + " Takmicenje1");
                                            }
                                            continue;
                                        }
                                        IList <Ocena> oceneList = oceneMap[r.Gimnasticar.Id];
                                        Ocena         o         = null;
                                        foreach (Ocena o2 in oceneList)
                                        {
                                            if (o2.Sprava == p.Sprava)
                                            {
                                                o = o2;
                                                break;
                                            }
                                        }
                                        if (o == null && r.Total != null)
                                        {
                                            log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                          " nema ocenu za " + p.Sprava.ToString() + " Takmicenje1");
                                        }
                                        if (o != null && o.Total != r.Total)
                                        {
                                            log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                          " total se razlikuje " + p.Sprava.ToString() + " Takmicenje1");
                                        }
                                    }
                                }

                                foreach (RezultatPreskok r in rt.Takmicenje1.PoredakPreskok.Rezultati)
                                {
                                    if (!oceneMap.ContainsKey(r.Gimnasticar.Id))
                                    {
                                        if (r.Total != null || r.TotalObeOcene != null)
                                        {
                                            log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                          " nema nijednu ocenu" + " Takmicenje1");
                                        }
                                        continue;
                                    }
                                    IList <Ocena> oceneList = oceneMap[r.Gimnasticar.Id];
                                    Ocena         o         = null;
                                    foreach (Ocena o2 in oceneList)
                                    {
                                        if (o2.Sprava == Sprava.Preskok)
                                        {
                                            o = o2;
                                            break;
                                        }
                                    }
                                    if (o == null && (r.Total != null || r.TotalObeOcene != null))
                                    {
                                        log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                      " nema ocenu za " + Sprava.Preskok.ToString() + " Takmicenje1");
                                    }
                                    if (o != null && (o.Total != r.Total || o.TotalObeOcene != r.TotalObeOcene))
                                    {
                                        log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                      " total se razlikuje " + Sprava.Preskok.ToString() + " Takmicenje1");
                                    }
                                }
                            }

                            // Takmicenje 3
                            ocene = ocenaDAO.FindByDeoTakmicenja(t.Id, DeoTakmicenjaKod.Takmicenje3);

                            oceneMap = new Dictionary <int, IList <Ocena> >();
                            foreach (Ocena o in ocene)
                            {
                                if (!oceneMap.ContainsKey(o.Gimnasticar.Id))
                                {
                                    oceneMap.Add(o.Gimnasticar.Id, new List <Ocena>());
                                }
                                oceneMap[o.Gimnasticar.Id].Add(o);
                            }

                            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
                            {
                                if (rt.Takmicenje3 == null)
                                {
                                    continue;
                                }
                                if (!rt.odvojenoTak3())
                                {
                                    continue;
                                }
                                foreach (PoredakSprava p in rt.Takmicenje3.Poredak)
                                {
                                    foreach (RezultatSprava r in p.Rezultati)
                                    {
                                        if (!oceneMap.ContainsKey(r.Gimnasticar.Id))
                                        {
                                            if (r.Total != null)
                                            {
                                                log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                              " nema nijednu ocenu" + " Takmicenje3");
                                            }
                                            continue;
                                        }
                                        IList <Ocena> oceneList = oceneMap[r.Gimnasticar.Id];
                                        Ocena         o         = null;
                                        foreach (Ocena o2 in oceneList)
                                        {
                                            if (o2.Sprava == p.Sprava)
                                            {
                                                o = o2;
                                                break;
                                            }
                                        }
                                        if (o == null && r.Total != null)
                                        {
                                            log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                          " nema ocenu za " + p.Sprava.ToString() + " Takmicenje3");
                                        }
                                        if (o != null && o.Total != r.Total)
                                        {
                                            log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                          " total se razlikuje " + p.Sprava.ToString() + " Takmicenje3");
                                        }
                                    }
                                }

                                foreach (RezultatPreskok r in rt.Takmicenje3.PoredakPreskok.Rezultati)
                                {
                                    if (!oceneMap.ContainsKey(r.Gimnasticar.Id))
                                    {
                                        if (r.Total != null || r.TotalObeOcene != null)
                                        {
                                            log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                          " nema nijednu ocenu" + " Takmicenje3");
                                        }
                                        continue;
                                    }
                                    IList <Ocena> oceneList = oceneMap[r.Gimnasticar.Id];
                                    Ocena         o         = null;
                                    foreach (Ocena o2 in oceneList)
                                    {
                                        if (o2.Sprava == Sprava.Preskok)
                                        {
                                            o = o2;
                                            break;
                                        }
                                    }
                                    if (o == null && (r.Total != null || r.TotalObeOcene != null))
                                    {
                                        log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                      " nema ocenu za " + Sprava.Preskok.ToString() + " Takmicenje3");
                                    }
                                    if (o != null && (o.Total != r.Total || o.TotalObeOcene != r.TotalObeOcene))
                                    {
                                        log.WriteLine(takmicenjeHeader + ": " + r.Gimnasticar.ToString() +
                                                      " total se razlikuje " + Sprava.Preskok.ToString() + " Takmicenje3");
                                    }
                                }
                            }
                        }
                }
                catch (Exception)
                {
                    if (session != null && session.Transaction != null && session.Transaction.IsActive)
                    {
                        session.Transaction.Rollback();
                    }
                    log.Close();
                    MessageBox.Show(takmicenjeHeader);
                    throw;
                }
                finally
                {
                    CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
                }
            }
            log.Close();
        }
示例#27
0
        public static void addEkipaToRezTak(Ekipa ekipa, RezultatskoTakmicenje rezTak)
        {
            RezultatskoTakmicenjeDAO rezultatskoTakmicenjeDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();

            rezultatskoTakmicenjeDAO.Attach(rezTak, false);

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

            RezultatskoTakmicenje rezTak1 = null;
            RezultatskoTakmicenje rezTak2 = null;
            RezultatskoTakmicenje rezTak3 = null;
            RezultatskoTakmicenje rezTak4 = null;

            if (takmicenje.FinaleKupa || takmicenje.ZbirViseKola)
            {
                rezTak1 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe(
                    takmicenje.PrvoKolo.Id, rezTak.Kategorija.Naziv, 0);
                rezTak2 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe(
                    takmicenje.DrugoKolo.Id, rezTak.Kategorija.Naziv, 0);
                if (takmicenje.ZbirViseKola)
                {
                    if (takmicenje.TreceKolo != null)
                    {
                        rezTak3 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe(
                            takmicenje.TreceKolo.Id, rezTak.Kategorija.Naziv, 0);
                    }
                    if (takmicenje.CetvrtoKolo != null)
                    {
                        rezTak4 = rezultatskoTakmicenjeDAO.FindByTakmicenjeFetch_Tak1_PoredakEkipno_Ekipe(
                            takmicenje.CetvrtoKolo.Id, rezTak.Kategorija.Naziv, 0);
                    }
                }
            }

            foreach (Ekipa e in rezTak.Takmicenje1.Ekipe)
            {
                foreach (GimnasticarUcesnik g in ekipa.Gimnasticari)
                {
                    if (e.Gimnasticari.Contains(g))
                    {
                        throw new BusinessException(String.Format(Strings.GIMNASTICAR_JE_CLAN_DRUGE_EKIPE_ERROR_MSG,
                                                                  g.ImeSrednjeImePrezime, e.Naziv));
                    }
                }
            }

            if (rezTak.Takmicenje1.addEkipa(ekipa, true))
            {
                DAOFactoryFactory.DAOFactory.GetEkipaDAO().Add(ekipa);

                if (takmicenje.FinaleKupa)
                {
                    rezTak.Takmicenje1.updateRezultatiOnEkipaAdded(ekipa,
                                                                   findRezultatiUkupnoForEkipa(takmicenje.Id, ekipa), rezTak, rezTak1, rezTak2);
                }
                else if (takmicenje.ZbirViseKola)
                {
                    rezTak.Takmicenje1.updateRezultatiOnEkipaAdded(ekipa, rezTak, rezTak1, rezTak2, rezTak3, rezTak4);
                }
                else
                {
                    rezTak.Takmicenje1.updateRezultatiOnEkipaAdded(ekipa, rezTak,
                                                                   findRezultatiUkupnoForEkipa(takmicenje.Id, ekipa));
                }

                // snimi ekipe i poredak ekipno
                DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO().Update(rezTak.Takmicenje1);
            }

            takmicenjeDAO.Evict(takmicenje);
            if (rezTak1 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak1);
            }
            if (rezTak2 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak2);
            }
            if (rezTak3 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak3);
            }
            if (rezTak4 != null)
            {
                rezultatskoTakmicenjeDAO.Evict(rezTak4);
            }
        }