コード例 #1
0
 public Ocena FindOcena(GimnasticarUcesnik g, DeoTakmicenjaKod deoTakKod, Sprava sprava)
 {
     try
     {
         IQuery q = Session.CreateQuery(@"
             select o
             from Ocena o
             join o.Gimnasticar g
             where g.Id = :gimnasticarId
             and o.DeoTakmicenjaKod = :deoTakKod
             and o.Sprava = :sprava");
         q.SetInt32("gimnasticarId", g.Id);
         q.SetByte("deoTakKod", (byte)deoTakKod);
         q.SetByte("sprava", (byte)sprava);
         IList <Ocena> result = q.List <Ocena>();
         if (result.Count > 0)
         {
             return(result[0]);
         }
         return(null);
     }
     catch (HibernateException ex)
     {
         throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
     }
 }
コード例 #2
0
        protected override void updateUIFromEntity(DomainObject entity)
        {
            GimnasticarUcesnik gimnasticar = (GimnasticarUcesnik)entity;

            txtIme.Text        = gimnasticar.Ime;
            txtSrednjeIme.Text = gimnasticar.SrednjeIme;
            txtPrezime.Text    = gimnasticar.Prezime;

            txtDatumRodj.Text = String.Empty;
            if (gimnasticar.DatumRodjenja != null)
            {
                txtDatumRodj.Text = gimnasticar.DatumRodjenja.ToString("d");
            }

            SelectedKlub          = gimnasticar.KlubUcesnik;
            SelectedDrzava        = gimnasticar.DrzavaUcesnik;
            txtTakKategorija.Text = kategorija.ToString();

            IList <RezultatskoTakmicenje> rezTakmicenja
                = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO().FindByGimnasticar(gimnasticar);

            foreach (RezultatskoTakmicenje rt in rezTakmicenja)
            {
                lstTakmicenja.Items.Add(rt.Naziv);
            }

            rbtDrzava.Checked = gimnasticar.NastupaZaDrzavu;
        }
コード例 #3
0
ファイル: UcesnikTakmicenja3.cs プロジェクト: stankela/bilten
 public UcesnikTakmicenja3(GimnasticarUcesnik gimnasticar, Sprava sprava,
     Nullable<short> qualOrder, Nullable<float> qualScore,
     Nullable<short> qualRank, KvalifikacioniStatus kvalStatus)
     : base(qualOrder, qualScore, qualRank, kvalStatus)
 {
     _gimnasticar = gimnasticar;
     _sprava = sprava;
 }
コード例 #4
0
        protected override void checkBusinessRulesOnUpdate(DomainObject entity)
        {
            GimnasticarUcesnik g = (GimnasticarUcesnik)entity;

            if (!hasImeSrednjeImePrezimeDatumRodjenjaChanged(g))
            {
                return;
            }

            GimnasticarDAO gimnasticarDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarDAO();

            if (gimnasticarDAO.existsGimnasticarImePrezimeSrednjeImeDatumRodjenja(oldIme, oldPrezime, oldSrednjeIme,
                                                                                  oldDatumRodjenja))
            {
                if (!gimnasticarDAO.existsGimnasticarImePrezimeSrednjeImeDatumRodjenja(g.Ime, g.Prezime, g.SrednjeIme,
                                                                                       g.DatumRodjenja))
                {
                    // Staro ime postoji u registru, novo ime ne postoji u registru.
                    // Menjaj staro ime u registru sa novim
                    Gimnasticar gim = gimnasticarDAO.FindGimnasticar(oldIme, oldPrezime,
                                                                     oldDatumRodjenja.Dan, oldDatumRodjenja.Mesec, oldDatumRodjenja.Godina, gimnastika);
                    if (gim != null)
                    {
                        gim.Ime           = g.Ime;
                        gim.Prezime       = g.Prezime;
                        gim.SrednjeIme    = g.SrednjeIme;
                        gim.DatumRodjenja = g.DatumRodjenja;
                        gimnasticarDAO.Update(gim);
                    }
                    else
                    {
                        throw new BusinessException("Greska u programu");
                    }
                }
                else
                {
                    // Staro ime postoji u registru, novo ime postoji u registru.
                    // TODO4: Ne menjaj nista u registru; trazi potvrdu za nastavak
                    throw new BusinessException("Greska u programu - neuspesna promena imena gimnasticara2");
                }
            }
            else
            {
                if (!gimnasticarDAO.existsGimnasticarImePrezimeSrednjeImeDatumRodjenja(g.Ime, g.Prezime, g.SrednjeIme,
                                                                                       g.DatumRodjenja))
                {
                    // Staro ime ne postoji u registru, novo ime ne postoji u registru.
                    // TODO4: Dodaj novog gimnasticara u registru sa novim imenom
                    throw new BusinessException("Greska u programu - neuspesna promena imena gimnasticara3");
                }
                else
                {
                    // Staro ime ne postoji u registru, novo ime postoji u registru.
                    // TODO4: Ne menjaj nista u registru; trazi potvrdu za nastavak
                    throw new BusinessException("Greska u programu - neuspesna promena imena gimnasticara4");
                }
            }
        }
コード例 #5
0
ファイル: StartListaNaSpravi.cs プロジェクト: stankela/bilten
        public virtual void addGimnasticar(GimnasticarUcesnik g)
        {
            if (gimnasticarExists(g))
                throw new BusinessException(
                    String.Format("Gimnasticar {0} je vec na start listi.", g));

            NastupNaSpravi nastup = new NastupNaSpravi(g, 0);
            addNastup(nastup);
        }
コード例 #6
0
        protected override void saveOriginalData(DomainObject entity)
        {
            GimnasticarUcesnik gimnasticar = (GimnasticarUcesnik)entity;

            oldIme           = gimnasticar.Ime;
            oldSrednjeIme    = gimnasticar.SrednjeIme;
            oldPrezime       = gimnasticar.Prezime;
            oldDatumRodjenja = gimnasticar.DatumRodjenja;
        }
コード例 #7
0
        //private string sqlGetId = "SELECT @@IDENTITY";
        public void insert(GimnasticarUcesnik gimnasticar, RezultatskoTakmicenje rezTak,
            Sprava sprava, KvalifikacioniStatus newKvalStatus)
        {
            SqlCeConnection conn = new SqlCeConnection(ConfigurationParameters.ConnectionString);
            SqlCeCommand cmd = new SqlCeCommand(insertSQL, conn);

            cmd.Parameters.Add("@rez_takmicenje_id", SqlDbType.Int).Value = rezTak.Id;
            cmd.Parameters.Add("@gimnasticar_id", SqlDbType.Int).Value = gimnasticar.Id;
            cmd.Parameters.Add("@sprava", SqlDbType.TinyInt).Value = sprava;
            cmd.Parameters.Add("@kval_status", SqlDbType.TinyInt).Value = newKvalStatus;

            SqlCeTransaction tr = null;
            try
            {
                conn.Open();
                tr = conn.BeginTransaction();
                cmd.Transaction = tr;
                int recordsAffected = cmd.ExecuteNonQuery();
                if (recordsAffected != 1)
                {
                    throw new InfrastructureException(Strings.DatabaseAccessExceptionMessage);
                }

                /*SqlCeCommand cmd2 = new SqlCeCommand(sqlGetId, conn, tr);
                object id = cmd2.ExecuteScalar();
                if (!Convert.IsDBNull(id))
                    entity.Id = Convert.ToInt32(id);*/

                tr.Commit(); // TODO: this can throw Exception and InvalidOperationException
            }
            catch (SqlCeException ex)
            {
                // in Open()
                if (tr != null)
                    tr.Rollback(); // TODO: this can throw Exception and InvalidOperationException
                throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
            }
            catch (InvalidOperationException ex)
            {
                // in ExecuteNonQuery(), ExecureScalar()
                if (tr != null)
                    tr.Rollback();
                throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
            }
            // za svaki slucaj
            catch (Exception)
            {
                if (tr != null)
                    tr.Rollback();
                throw;
            }
            finally
            {
                conn.Close();
            }
        }
コード例 #8
0
ファイル: PoredakPreskok.cs プロジェクト: stankela/bilten
        public virtual void addGimnasticar(GimnasticarUcesnik g, Ocena o, 
            RezultatskoTakmicenje rezTak)
        {
            RezultatPreskok r = new RezultatPreskok();
            r.Gimnasticar = g;
            r.setOcena(o);
            Rezultati.Add(r);

            rankRezultati();
            updateKvalStatus(rezTak.Propozicije);
        }
コード例 #9
0
ファイル: Takmicenje3.cs プロジェクト: stankela/bilten
        public virtual UcesnikTakmicenja3 addKvalifikant(GimnasticarUcesnik gimnasticar, Sprava sprava,
            Nullable<float> qualScore, Nullable<short> qualRank)
        {
            if (getUcesnikKvalifikant(gimnasticar, sprava) != null)
                return null;

            short qualOrder = (short)(getUcesniciKvalifikanti(sprava).Count + 1);
            UcesnikTakmicenja3 u = new UcesnikTakmicenja3(gimnasticar, sprava,
                        qualOrder, qualScore, qualRank, KvalifikacioniStatus.Q);
            Ucesnici.Add(u);
            return u;
        }
コード例 #10
0
 private bool canAddGimnasticar(GimnasticarUcesnik g, TakmicarskaKategorija kategorija)
 {
     foreach (IList <GimnasticarUcesnik> gimList in gimnasticari)
     {
         foreach (GimnasticarUcesnik g2 in gimList)
         {
             if (g2.Equals(g))
             {
                 return(false);
             }
         }
     }
     return(true);
 }
コード例 #11
0
        private static GimnasticarUcesnik createGimnasticarUcesnik(string ime, string srednjeIme, string prezime,
                                                                   Datum datumRodjenja, TakmicarskaKategorija kategorija, string nazivDrzave, string kodDrzave, string nazivKluba,
                                                                   string kodKluba)
        {
            GimnasticarUcesnik result = new GimnasticarUcesnik();

            result.Ime                   = ime;
            result.SrednjeIme            = srednjeIme;
            result.Prezime               = prezime;
            result.DatumRodjenja         = datumRodjenja;
            result.TakmicarskaKategorija = kategorija;
            if (String.IsNullOrEmpty(nazivDrzave))
            {
                result.DrzavaUcesnik = null;
            }
            else
            {
                DrzavaUcesnikDAO drzavaUcesnikDAO = DAOFactoryFactory.DAOFactory.GetDrzavaUcesnikDAO();
                DrzavaUcesnik    drzavaUcesnik    = drzavaUcesnikDAO.FindDrzavaUcesnik(kategorija.Takmicenje.Id, nazivDrzave);
                if (drzavaUcesnik == null)
                {
                    drzavaUcesnik            = new DrzavaUcesnik();
                    drzavaUcesnik.Naziv      = nazivDrzave;
                    drzavaUcesnik.Kod        = kodDrzave;
                    drzavaUcesnik.Takmicenje = kategorija.Takmicenje;
                    drzavaUcesnikDAO.Add(drzavaUcesnik);
                }
                result.DrzavaUcesnik = drzavaUcesnik;
            }
            if (String.IsNullOrEmpty(nazivKluba))
            {
                result.KlubUcesnik = null;
            }
            else
            {
                KlubUcesnikDAO klubUcesnikDAO = DAOFactoryFactory.DAOFactory.GetKlubUcesnikDAO();
                KlubUcesnik    klubUcesnik    = klubUcesnikDAO.FindKlubUcesnik(kategorija.Takmicenje.Id, nazivKluba);
                if (klubUcesnik == null)
                {
                    klubUcesnik            = new KlubUcesnik();
                    klubUcesnik.Naziv      = nazivKluba;
                    klubUcesnik.Kod        = kodKluba;
                    klubUcesnik.Takmicenje = kategorija.Takmicenje;
                    klubUcesnikDAO.Add(klubUcesnik);
                }
                result.KlubUcesnik = klubUcesnik;
            }
            return(result);
        }
コード例 #12
0
        private List <object[]> getTakmicariReportItems(IList <GimnasticarUcesnik> gimnasticari, Gimnastika gim)
        {
            List <object[]> result = new List <object[]>();

            for (int i = 0; i < gimnasticari.Count; ++i)
            {
                GimnasticarUcesnik g             = gimnasticari[i];
                string             klub          = (g.KlubUcesnik != null) ? g.KlubUcesnik.Naziv : String.Empty;
                string             drzava        = (g.DrzavaUcesnik != null) ? g.DrzavaUcesnik.Kod : string.Empty;
                string             datumRodjenja = (g.DatumRodjenja != null) ? g.DatumRodjenja.ToString("d") : string.Empty;
                result.Add(new object[] { (i + 1).ToString(), g.Ime, g.Prezime, datumRodjenja,
                                          klub, drzava });
            }
            return(result);
        }
コード例 #13
0
ファイル: PoredakUkupno.cs プロジェクト: stankela/bilten
        public virtual void addGimnasticar(GimnasticarUcesnik g, IList<Ocena> ocene, 
            RezultatskoTakmicenje rezTak)
        {
            RezultatUkupno r = new RezultatUkupno();
            r.Gimnasticar = g;
            if (ocene.Count > 0)
            {
                foreach (Ocena o in ocene)
                    r.addOcena(o);
            }
            Rezultati.Add(r);

            rankRezultati();
            updateKvalStatus(rezTak.Propozicije);
        }
コード例 #14
0
ファイル: OcenaForm.cs プロジェクト: stankela/bilten
        public OcenaForm(Nullable<int> ocenaId, GimnasticarUcesnik g, 
            Sprava sprava, DeoTakmicenjaKod deoTakKod,
            int takmicenjeId)
        {
            InitializeComponent();
            this.gimnasticar = g;
            this.sprava = sprava;
            this.deoTakKod = deoTakKod;
            this.obeOcene = sprava == Sprava.Preskok;
            this.showWaitCursor = true;

            takmicenje = loadTakmicenje(takmicenjeId);
            initialize(ocenaId, true);

            izracunato = editMode && !ckbUnosOcene.Checked;
        }
コード例 #15
0
        protected override void updateEntity(DomainObject entity)
        {
            GimnasticarUcesnik g = (GimnasticarUcesnik)entity;

            if (g.KlubUcesnik != null && g.KlubUcesnik.Id == 0)
            {
                g.KlubUcesnik.Takmicenje = kategorija.Takmicenje;
                DAOFactoryFactory.DAOFactory.GetKlubUcesnikDAO().Add(g.KlubUcesnik);
            }
            if (g.DrzavaUcesnik != null && g.DrzavaUcesnik.Id == 0)
            {
                g.DrzavaUcesnik.Takmicenje = kategorija.Takmicenje;
                DAOFactoryFactory.DAOFactory.GetDrzavaUcesnikDAO().Add(g.DrzavaUcesnik);
            }
            DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO().Update(g);
        }
コード例 #16
0
 public IList <Ekipa> FindByGimnasticar(GimnasticarUcesnik g)
 {
     try
     {
         IQuery q = Session.CreateQuery(@"
             select distinct e
             from Ekipa e
             join e.Gimnasticari g
             where g = :g");
         q.SetEntity("g", g);
         return(q.List <Ekipa>());
     }
     catch (HibernateException ex)
     {
         throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
     }
 }
コード例 #17
0
 public IList <StartListaNaSpravi> FindByGimnasticar(GimnasticarUcesnik gim)
 {
     try
     {
         IQuery q = Session.CreateQuery(@"
             select distinct s
             from StartListaNaSpravi s
             join s.Nastupi n
             where n.Gimnasticar = :gim");
         q.SetEntity("gim", gim);
         return(q.List <StartListaNaSpravi>());
     }
     catch (HibernateException ex)
     {
         throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
     }
 }
コード例 #18
0
ファイル: NastupNaSpravi.cs プロジェクト: stankela/bilten
        public NastupNaSpravi(GimnasticarUcesnik gimnasticar, byte ekipa)
        {
            this.gimnasticar = gimnasticar;
            this.ekipa = ekipa;

            // Svojstvo Kategorija kesiram zato sto sam imao problema na start listama gde nije mogao da ga ocita iz
            // gimnasticara.
            if (gimnasticar != null)
            {
                try
                {
                    kategorija = gimnasticar.TakmicarskaKategorija.ToString();
                }
                catch (Exception)
                {
                    kategorija = String.Empty;
                }
            }
        }
コード例 #19
0
        private bool hasImeSrednjeImePrezimeDatumRodjenjaChanged(GimnasticarUcesnik g)
        {
            bool equals = g.Ime.ToUpper() == oldIme.ToUpper() &&
                          g.Prezime.ToUpper() == oldPrezime.ToUpper();

            if (equals)
            {
                equals = string.IsNullOrEmpty(g.SrednjeIme) &&
                         string.IsNullOrEmpty(oldSrednjeIme) ||
                         (!string.IsNullOrEmpty(g.SrednjeIme) &&
                          !string.IsNullOrEmpty(oldSrednjeIme) &&
                          g.SrednjeIme.ToUpper() == oldSrednjeIme.ToUpper());
            }
            if (equals)
            {
                equals = g.DatumRodjenja == oldDatumRodjenja;
            }
            return(!equals);
        }
コード例 #20
0
 public IList <RezultatskoTakmicenje> FindByGimnasticar(GimnasticarUcesnik g)
 {
     try
     {
         IQuery q = Session.CreateQuery(@"
             select distinct r
             from RezultatskoTakmicenje r
             join r.Takmicenje1 t
             join t.Gimnasticari g
             where g = :gimnasticar
             order by r.RedBroj");
         q.SetEntity("gimnasticar", g);
         return(q.List <RezultatskoTakmicenje>());
     }
     catch (HibernateException ex)
     {
         throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
     }
 }
コード例 #21
0
 public IList <Ocena> FindByGimnasticar(GimnasticarUcesnik gim, DeoTakmicenjaKod deoTakKod)
 {
     try
     {
         IQuery q = Session.CreateQuery(@"
             select o
             from Ocena o
             left join fetch o.Ocena2
             join o.Gimnasticar g
             where g = :gim
             and o.DeoTakmicenjaKod = :deoTakKod");
         q.SetEntity("gim", gim);
         q.SetByte("deoTakKod", (byte)deoTakKod);
         return(q.List <Ocena>());
     }
     catch (HibernateException ex)
     {
         throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
     }
 }
コード例 #22
0
        public static GimnasticarUcesnik createGimnasticarUcesnik(GimnasticarUcesnik g, TakmicarskaKategorija kategorija)
        {
            string nazivDrzave = null;
            string kodDrzave   = null;

            if (g.DrzavaUcesnik != null)
            {
                nazivDrzave = g.DrzavaUcesnik.Naziv;
                kodDrzave   = g.DrzavaUcesnik.Kod;
            }
            string nazivKluba = null;
            string kodKluba   = null;

            if (g.KlubUcesnik != null)
            {
                nazivKluba = g.KlubUcesnik.Naziv;
                kodKluba   = g.KlubUcesnik.Kod;
            }
            return(createGimnasticarUcesnik(g.Ime, g.SrednjeIme, g.Prezime, g.DatumRodjenja, kategorija, nazivDrzave,
                                            kodDrzave, nazivKluba, kodKluba));
        }
コード例 #23
0
        protected override void updateEntityFromUI(DomainObject entity)
        {
            GimnasticarUcesnik gimnasticar = (GimnasticarUcesnik)entity;

            gimnasticar.Ime = txtIme.Text.Trim();
            if (txtSrednjeIme.Text.Trim() == String.Empty)
            {
                gimnasticar.SrednjeIme = null;
            }
            else
            {
                gimnasticar.SrednjeIme = txtSrednjeIme.Text.Trim();
            }
            gimnasticar.Prezime = txtPrezime.Text.Trim();

            if (txtDatumRodj.Text.Trim() == String.Empty)
            {
                gimnasticar.DatumRodjenja = null;
            }
            else
            {
                gimnasticar.DatumRodjenja = Datum.Parse(txtDatumRodj.Text);
            }

            gimnasticar.KlubUcesnik = SelectedKlub;
            if (gimnasticar.KlubUcesnik != null && gimnasticar.KlubUcesnik.Naziv == PRAZNO)
            {
                gimnasticar.KlubUcesnik = null;
            }

            gimnasticar.DrzavaUcesnik = SelectedDrzava;
            if (gimnasticar.DrzavaUcesnik != null && gimnasticar.DrzavaUcesnik.Naziv == PRAZNO)
            {
                gimnasticar.DrzavaUcesnik = null;
            }

            gimnasticar.NastupaZaDrzavu = rbtDrzava.Checked;
        }
コード例 #24
0
        private void editCmd()
        {
            IList <GimnasticarUcesnik> selItems = getActiveDataGridViewUserControl()
                                                  .getSelectedItems <GimnasticarUcesnik>();

            if (selItems.Count != 1)
            {
                return;
            }

            GimnasticarUcesnik        selectedItem       = selItems[0];
            List <GimnasticarUcesnik> activeGimnasticari = gimnasticari[tabControl1.SelectedIndex];

            int index = activeGimnasticari.IndexOf(selectedItem);

            try
            {
                GimnasticarUcesnikForm form =
                    new GimnasticarUcesnikForm(selectedItem.Id, ActiveKategorija, takmicenje.Gimnastika);
                if (form.ShowDialog() == DialogResult.OK)
                {
                    GimnasticarUcesnik editedItem = (GimnasticarUcesnik)form.Entity;
                    activeGimnasticari[index] = editedItem;

                    setGimnasticari(activeGimnasticari);
                    if (!getActiveDataGridViewUserControl().isSorted())
                    {
                        getActiveDataGridViewUserControl().refreshItems();
                    }
                    getActiveDataGridViewUserControl()
                    .setSelectedItem <GimnasticarUcesnik>(editedItem);
                }
            }
            catch (InfrastructureException ex)
            {
                MessageDialogs.showError(ex.Message, this.Text);
            }
        }
コード例 #25
0
ファイル: EkipaForm.cs プロジェクト: stankela/bilten
        private void btnDelete_Click(object sender, EventArgs e)
        {
            GimnasticarUcesnik selClan =
                dgwUserControlClanovi.getSelectedItem <GimnasticarUcesnik>();

            if (selClan == null)
            {
                return;
            }
            string msgFmt = "Da li zelite da izbrisete clana ekipe \"{0}\"?";

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

            Ekipa ekipa = (Ekipa)entity;

            // TODO: Check business rules
            ekipa.removeGimnasticar(selClan);

            setClanovi(ekipa.Gimnasticari);
        }
コード例 #26
0
ファイル: PoredakPreskok.cs プロジェクト: stankela/bilten
 private RezultatPreskok getRezultat(GimnasticarUcesnik g)
 {
     foreach (RezultatPreskok r in Rezultati)
     {
         if (r.Gimnasticar.Equals(g))
             return r;
     }
     return null;
 }
コード例 #27
0
        private void deleteGimnasticar(GimnasticarUcesnik g)
        {
            Cursor.Current = Cursors.WaitCursor;
            Cursor.Show();
            ISession session = null;

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

                        GimnasticarUcesnikDAO gimUcesnikDAO = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO();
                        gimUcesnikDAO.Attach(g, false);

                        StartListaNaSpraviDAO startListaDAO = DAOFactoryFactory.DAOFactory.GetStartListaNaSpraviDAO();
                        EkipaDAO ekipaDAO = DAOFactoryFactory.DAOFactory.GetEkipaDAO();
                        RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO();
                        Takmicenje1DAO           tak1DAO   = DAOFactoryFactory.DAOFactory.GetTakmicenje1DAO();
                        Takmicenje3DAO           tak3DAO   = DAOFactoryFactory.DAOFactory.GetTakmicenje3DAO();
                        OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();

                        // Izbaci gimnasticara iz start lista
                        foreach (StartListaNaSpravi s in startListaDAO.FindByGimnasticar(g))
                        {
                            s.removeNastup(g);
                            startListaDAO.Update(s);
                        }

                        // Izbaci gimnasticara iz ekipa
                        foreach (Ekipa e in ekipaDAO.FindByGimnasticar(g))
                        {
                            e.removeGimnasticar(g);
                            ekipaDAO.Update(e);

                            RezultatskoTakmicenje rt = rezTakDAO.FindByEkipa(e);
                            rt.Takmicenje1.updateRezultatiOnEkipaUpdated(e, rt,
                                                                         RezultatskoTakmicenjeService.findRezultatiUkupnoForEkipa(rt.Takmicenje.Id, e));
                            tak1DAO.Update(rt.Takmicenje1);
                        }

                        IList <Ocena> ocene1 = ocenaDAO.FindByGimnasticar(g, DeoTakmicenjaKod.Takmicenje1);
                        IList <Ocena> ocene3 = ocenaDAO.FindByGimnasticar(g, DeoTakmicenjaKod.Takmicenje3);

                        // Izbaci gimnasticara iz takmicenja 1
                        foreach (RezultatskoTakmicenje rt in rezTakDAO.FindByGimnasticar(g))
                        {
                            rt.Takmicenje1.removeGimnasticar(g);

                            // Izbaci gimnasticara iz svih poredaka na kojima je vezbao.
                            rt.Takmicenje1.updateRezultatiOnGimnasticarDeleted(g, ocene1, rt);

                            tak1DAO.Update(rt.Takmicenje1);
                            foreach (GimnasticarUcesnik g2 in rt.Takmicenje1.Gimnasticari)
                            {
                                gimUcesnikDAO.Evict(g2);
                            }
                        }

                        // Izbaci gimnasticara iz takmicenja 3
                        foreach (RezultatskoTakmicenje rt in rezTakDAO.FindByUcesnikTak3(g))
                        {
                            rt.Takmicenje3.clearUcesnik(g);
                            foreach (PoredakSprava p in rt.Takmicenje3.Poredak)
                            {
                                p.deleteGimnasticar(g, rt);
                            }
                            rt.Takmicenje3.PoredakPreskok.deleteGimnasticar(g, rt);

                            tak3DAO.Update(rt.Takmicenje3);
                        }

                        foreach (Ocena o in ocene1)
                        {
                            ocenaDAO.Delete(o);
                        }
                        foreach (Ocena o in ocene3)
                        {
                            ocenaDAO.Delete(o);
                        }

                        // TODO: Brisi takmicara iz takmicenja II i IV.

                        gimUcesnikDAO.Delete(g);

                        takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenje.Id);
                        takmicenje.LastModified = DateTime.Now;
                        session.Transaction.Commit();
                    }
            }
            catch (Exception)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                throw;
            }
            finally
            {
                Cursor.Hide();
                Cursor.Current = Cursors.Arrow;
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }
        }
コード例 #28
0
ファイル: StartListaNaSpravi.cs プロジェクト: stankela/bilten
 public virtual bool canAddGimnasticar(GimnasticarUcesnik g)
 {
     return !gimnasticarExists(g);
 }
コード例 #29
0
        private bool hasOcene(GimnasticarUcesnik g)
        {
            IDataContext dataContext = null;
            try
            {
                DataAccessProviderFactory factory = new DataAccessProviderFactory();
                dataContext = factory.GetDataContext();
                dataContext.BeginTransaction();

                IList<Ocena> result = dataContext.ExecuteNamedQuery<Ocena>(
                    "FindAllOceneForGimnasticar",
                    new string[] { "gim" },
                    new object[] { g });
                return result.Count > 0;
            }
            catch (Exception ex)
            {
                if (dataContext != null && dataContext.IsInTransaction)
                    dataContext.Rollback();
                throw new InfrastructureException(
                    Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
            }
            finally
            {
                if (dataContext != null)
                    dataContext.Dispose();
                dataContext = null;
            }
        }
コード例 #30
0
        // TODO: Nije moguce izbrisati takmicara zato sto se uvek vodi kao ucesnik takmicenja II, cak i ako ne postoji
        // odvojeno takmicenje II, verovatno zbog greske koja postoji u tom slucaju da kada ne postoji odvojeno
        // takmicenje II svi gimnasticari se oznace kao kvalifikovani. Ispravi ovo, tj. kada ne postoji odvojeno
        // takmicenje II verovatno ne bi niko trebalo da bude oznacen kao kvalifikovan.
        // Druga mogucnost je da nije moguce brisati takmicara zato sto postoje njegovi rezultati u takmicenju II, cak i
        // ako ne postoji odvojeno takmicenje II.
        // Mozda bi najbolje bilo da se ne dozvoli brisanje takmicara koji je ucesnik takmicenja II i III (zato sam gore
        // stavio da se prvo ispituje da li je gimnasticar ucesnik takmicenja II ili III)
        private bool ucesnikTakmicenja2(GimnasticarUcesnik g)
        {
            IDataContext dataContext = null;
            try
            {
                DataAccessProviderFactory factory = new DataAccessProviderFactory();
                dataContext = factory.GetDataContext();
                dataContext.BeginTransaction();

                string query = @"select count(*)
                    from Takmicenje2 t
                    join t.Ucesnici u
                    where u.Gimnasticar.Id = :id";
                IList result = dataContext.
                    ExecuteQuery(QueryLanguageType.HQL, query,
                            new string[] { "id" }, new object[] { g.Id });
                return (long)result[0] > 0;
            }
            catch (Exception ex)
            {
                if (dataContext != null && dataContext.IsInTransaction)
                    dataContext.Rollback();
                throw new InfrastructureException(
                    Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
            }
            finally
            {
                if (dataContext != null)
                    dataContext.Dispose();
                dataContext = null;
            }
        }
コード例 #31
0
ファイル: StartListaNaSpravi.cs プロジェクト: stankela/bilten
 private bool gimnasticarExists(GimnasticarUcesnik g)
 {
     foreach (GimnasticarUcesnik g2 in Gimnasticari)
     {
         if (g2.Id == g.Id)
             return true;
     }
     return false;
 }
コード例 #32
0
        private void btnAdd_Click(object sender, EventArgs e)
        {
            SelectGimnasticarUcesnikForm form = null;

            try
            {
                form = new SelectGimnasticarUcesnikForm(ActiveKategorija.Takmicenje.Id,
                                                        takmicenje.Gimnastika, ActiveKategorija);
                form.MultiSelect = false;
                if (form.ShowDialog() != DialogResult.OK ||
                    form.SelectedEntities.Count != 1)
                {
                    return;
                }
            }
            catch (InfrastructureException ex)
            {
                MessageDialogs.showError(ex.Message, this.Text);
                return;
            }

            GimnasticarUcesnik g = (GimnasticarUcesnik)form.SelectedEntities[0];

            if (!ucestvuje(g, deoTakKod))
            {
                string msg = String.Format(
                    "Gimnasticar '{0}' ne ucestvuje u {1}.",
                    g.ImeSrednjeImePrezime, DeoTakmicenjaKodovi.toString(deoTakKod));
                MessageDialogs.showMessage(msg, this.Text);
                return;
            }

            Ocena    ocena   = null;
            ISession session = null;

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);
                        ocena = DAOFactoryFactory.DAOFactory.GetOcenaDAO().FindOcena(g, deoTakKod, ActiveSprava);
                    }
            }
            catch (Exception ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                MessageDialogs.showError(ex.Message, this.Text);
                Close();
                return;
            }
            finally
            {
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }

            bool      edit;
            OcenaForm f;

            if (ocena != null)
            {
                edit = true;
                f    = new OcenaForm(ocena.Id, g, ActiveSprava, deoTakKod, takmicenje.Id);
            }
            else
            {
                edit = false;
                f    = new OcenaForm(null, g, ActiveSprava, deoTakKod, takmicenje.Id);
            }

            try
            {
                if (f.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
            }
            catch (InfrastructureException ex)
            {
                MessageDialogs.showError(ex.Message, this.Text);
                return;
            }

            Cursor.Current = Cursors.WaitCursor;
            Cursor.Show();
            ocena   = null;
            session = null;
            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);
                        ocena = DAOFactoryFactory.DAOFactory.GetOcenaDAO().FindByIdFetch(f.Entity.Id);
                    }
            }
            catch (Exception ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                MessageDialogs.showError(ex.Message, this.Text);
                Close();
                return;
            }
            finally
            {
                Cursor.Hide();
                Cursor.Current = Cursors.Arrow;
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }

            bool opened = gridOpened(g.TakmicarskaKategorija, ActiveSprava);

            showGridOcene(g.TakmicarskaKategorija, ActiveSprava);
            List <Ocena> activeOcene = ocene[calculateOceneKey(g.TakmicarskaKategorija, ActiveSprava)];

            if (!edit)
            {
                // nova ocena se dodaje u listu activeOcene samo ako je grid vec bio
                // prikazivan; ako se grid prvi put prikazuje, ocene se ucitavaju i
                // medju njima se nalazi i ona koja je upravo dodata.
                if (opened)
                {
                    activeOcene.Add(ocena);
                }
            }
            else
            {
                activeOcene[activeOcene.IndexOf(ocena)] = ocena;
            }

            setOcene(activeOcene);
            selectOcena(ocena);
        }
コード例 #33
0
ファイル: EkipaForm.cs プロジェクト: stankela/bilten
        private bool canAddGimnasticar(Ekipa ekipa, GimnasticarUcesnik gimnasticar)
        {
            // TODO: Najpre proveri da li ekipa vec ima max broj clanova. Takodje,
            // razmisli da li clan ekipe mora da bude i ucesnik rez. takmicenja
            // u kome se ekipa takmici.

            return !ekipa.Gimnasticari.Contains(gimnasticar);
        }
コード例 #34
0
        private void insertOcene(Takmicenje takmicenje)
        {
            TakmicarskaKategorija seniori = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO()
                                            .FindByTakmicenje(takmicenje.Id)[0];
            IList <GimnasticarUcesnik> gimnasticari = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO()
                                                      .FindByTakmicenje(takmicenje.Id);

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

            //foreach (GimnasticarUcesnik g in gimnasticari)
            //  gimnasticariMap.Add(g.TakmicarskiBroj.Value, g);

            DeoTakmicenjaKod[] deoTakmicenja =
            {
                DeoTakmicenjaKod.Takmicenje1,
                DeoTakmicenjaKod.Takmicenje2,
                DeoTakmicenjaKod.Takmicenje3
            };
            string[] fileNames;
            if (gimnastika == Gimnastika.MSG)
            {
                fileNames = new string[]
                {
                    @"..\..\test\Data\OceneKvalifikacijeMuskarci.txt",
                    @"..\..\test\Data\OceneVisebojMuskarci.txt",
                    @"..\..\test\Data\OceneSpraveMuskarci.txt"
                }
            }
            ;
            else
            {
                fileNames = new string[]
                {
                    @"..\..\test\Data\OceneKvalifikacijeZene.txt",
                    @"..\..\test\Data\OceneVisebojZene.txt",
                    @"..\..\test\Data\OceneSpraveZene.txt"
                }
            };

            for (int i = 0; i < deoTakmicenja.Length; i++)
            {
                List <Ocena> ocene = new List <Ocena>();

                OceneParser parser = new OceneParser(gimnasticariMap);
                parser.parse(fileNames[i]);

                TakmicarskaKategorija kategorija = seniori;

                int   rank;
                int   broj  = 0;
                Ocena ocena = null;
                foreach (object[] o in parser.Ocene)
                {
                    Sprava sprava = Sprave.parse((string)o[0]);

                    if ((string)o[1] != "")
                    {
                        rank = Convert.ToInt32(o[1]);
                    }

                    if ((string)o[2] != "")
                    {
                        broj = Convert.ToInt32(o[2]);
                    }

                    Nullable <byte> brojPreskoka = null;
                    if ((string)o[3] != "")
                    {
                        brojPreskoka = Convert.ToByte(o[3]);
                    }

                    Nullable <short> vreme = null;
                    if ((string)o[4] != "")
                    {
                        vreme = parseMinutSecond((string)o[4]);
                    }

                    float D  = Convert.ToSingle(replaceDelimiter(o[5]));
                    float E1 = Convert.ToSingle(replaceDelimiter(o[6]));
                    float E2 = Convert.ToSingle(replaceDelimiter(o[7]));
                    float E3 = Convert.ToSingle(replaceDelimiter(o[8]));
                    float E4 = Convert.ToSingle(replaceDelimiter(o[9]));
                    float E5 = Convert.ToSingle(replaceDelimiter(o[10]));
                    float E6 = Convert.ToSingle(replaceDelimiter(o[11]));
                    float E  = Convert.ToSingle(replaceDelimiter(o[12]));

                    Nullable <float> pen = null;
                    if ((string)o[13] != "")
                    {
                        pen = Convert.ToSingle(replaceDelimiter(o[13]));
                    }

                    Nullable <float> L = null;
                    if ((string)o[14] != "")
                    {
                        L = Convert.ToSingle(replaceDelimiter(o[14]));
                    }

                    Nullable <float> T = null;
                    if ((string)o[15] != "")
                    {
                        T = Convert.ToSingle(replaceDelimiter(o[15]));
                    }

                    Nullable <float> O = null;
                    if ((string)o[16] != "")
                    {
                        O = Convert.ToSingle(replaceDelimiter(o[16]));
                    }

                    Nullable <float> ocenaPreskok = null;
                    if ((string)o[17] != "")
                    {
                        ocenaPreskok = Convert.ToSingle(replaceDelimiter(o[17]));
                    }

                    Nullable <float> total = null;
                    if ((string)o[18] != "")
                    {
                        total = Convert.ToSingle(replaceDelimiter(o[18]));
                    }

                    if (sprava != Sprava.Preskok || brojPreskoka != 2)
                    {
                        ocena                  = new Ocena();
                        ocena.Sprava           = sprava;
                        ocena.DeoTakmicenjaKod = deoTakmicenja[i];
                        //ocena.VremeVezbe = vreme;
                        ocena.D       = D;
                        ocena.E1      = E1;
                        ocena.E2      = E2;
                        ocena.E3      = E3;
                        ocena.E4      = E4;
                        ocena.E5      = E5;
                        ocena.E6      = E6;
                        ocena.E       = E;
                        ocena.Penalty = pen;
                        //ocena.LinePenalty = L;
                        //ocena.TimePenalty = T;
                        //ocena.OtherPenalty = O;
                        if (sprava != Sprava.Preskok || deoTakmicenja[i] == DeoTakmicenjaKod.Takmicenje2)
                        {
                            // za finale viseboja postoji samo jedna ocena preskoka
                            ocena.Total = total;
                        }
                        else
                        {
                            ocena.Total = ocenaPreskok;
                        }

                        ocena.BrojEOcena      = 6;
                        ocena.RucnoUnetaOcena = false;

                        GimnasticarUcesnik gimnasticar = gimnasticariMap[broj];
                        if (gimnasticar == null)
                        {
                            throw new Exception("Greska prilikom dodavanja rasporeda sudija.");
                        }
                        ocena.Gimnasticar = gimnasticar;

                        ocene.Add(ocena);
                    }
                    else
                    {
                        DrugaOcena ocena2 = new DrugaOcena();
                        ocena2.D       = D;
                        ocena2.E1      = E1;
                        ocena2.E2      = E2;
                        ocena2.E3      = E3;
                        ocena2.E4      = E4;
                        ocena2.E5      = E5;
                        ocena2.E6      = E6;
                        ocena2.E       = E;
                        ocena2.Penalty = pen;
                        //ocena2.LinePenalty = L;
                        //ocena2.OtherPenalty = O;
                        ocena2.Total           = ocenaPreskok;
                        ocena2.BrojEOcena      = 6;
                        ocena2.RucnoUnetaOcena = false;

                        ocena.Ocena2        = ocena2;
                        ocena.TotalObeOcene = ocena.getTotalObeOcene(takmicenje.BrojDecimalaTotal);
                    }
                }

                /*      dataContext.Evict(takmicenje);
                 *    foreach (GimnasticarUcesnik g in gimnasticari)
                 *        dataContext.Evict(g);
                 *    dataContext.Evict(seniori);
                 */

                foreach (Ocena o in ocene)
                {
                    DAOFactoryFactory.DAOFactory.GetOcenaDAO().Add(o);
                }
            }
        }
コード例 #35
0
ファイル: Takmicenje1.cs プロジェクト: stankela/bilten
 public virtual void gimnasticarDeletedFromEkipa(GimnasticarUcesnik g, Ekipa e,
     IList<Ocena> ocene, RezultatskoTakmicenje rezTak)
 {
     if (Ekipe.Contains(e))
         PoredakEkipno.gimnasticarDeletedFromEkipa(g, e, ocene, rezTak);
 }
コード例 #36
0
ファイル: Takmicenje1.cs プロジェクト: stankela/bilten
 public virtual void gimnasticarAdded(GimnasticarUcesnik g, IList<Ocena> ocene,
     RezultatskoTakmicenje rezTak)
 {
     PoredakUkupno.addGimnasticar(g, ocene, rezTak);
     foreach (Ocena o in ocene)
     {
         if (o.Sprava == Sprava.Preskok)
             PoredakPreskok.addGimnasticar(g, o, rezTak);
         else
             getPoredakSprava(o.Sprava).addGimnasticar(g, o, rezTak);
     }
 }
コード例 #37
0
 private void insertRezultatSpravaFinaleKupaUpdate(GimnasticarUcesnik gimnasticar, RezultatskoTakmicenje rezTak,
     Sprava sprava, KvalifikacioniStatus newKvalStatus)
 {
     RezultatSpravaFinaleKupaDAO dao = new RezultatSpravaFinaleKupaDAO();
     if (!dao.postojiRezultatSpravaFinaleKupaUpdate(gimnasticar, rezTak, sprava))
         dao.insert(gimnasticar, rezTak, sprava, newKvalStatus);
     else
         dao.update(gimnasticar, rezTak, sprava, newKvalStatus);
 }
コード例 #38
0
ファイル: Takmicenje2.cs プロジェクト: stankela/bilten
 public virtual UcesnikTakmicenja2 getUcesnikKvalifikant(GimnasticarUcesnik g)
 {
     foreach (UcesnikTakmicenja2 u in Ucesnici)
     {
         if (g.Equals(u.Gimnasticar) && u.KvalStatus == KvalifikacioniStatus.Q)
             return u;
     }
     return null;
 }
コード例 #39
0
 private bool ucestvuje(GimnasticarUcesnik g, DeoTakmicenjaKod deoTakKod)
 {
     // TODO2:
     return(true);
 }
コード例 #40
0
 private Ocena loadOcena(GimnasticarUcesnik g, DeoTakmicenjaKod deoTakKod, Sprava spava)
 {
     IList<Ocena> ocene = loadOcene(g, deoTakKod);
     foreach (Ocena o in ocene)
     {
         if (o.Sprava == spava)
             return o;
     }
     return null;
 }
コード例 #41
0
        private void insertStartListe(Takmicenje takmicenje)
        {
            TakmicarskaKategorija seniori = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO()
                                            .FindByTakmicenje(takmicenje.Id)[0];

            IList <GimnasticarUcesnik> gim_uces = DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO()
                                                  .FindByTakmicenje(takmicenje.Id);
            Dictionary <int, GimnasticarUcesnik> gim_ucesnici = new Dictionary <int, GimnasticarUcesnik>();

            //foreach (GimnasticarUcesnik g in gim_uces)
            //  gim_ucesnici.Add(g.TakmicarskiBroj.Value, g);

            DeoTakmicenjaKod[] deoTakmicenja =
            {
                DeoTakmicenjaKod.Takmicenje1,
                DeoTakmicenjaKod.Takmicenje2,
                DeoTakmicenjaKod.Takmicenje3
            };
            string[] fileNames;
            if (gimnastika == Gimnastika.MSG)
            {
                fileNames = new string[]
                {
                    @"..\..\test\Data\StartListaKvalifikacijeMuskarci.txt",
                    @"..\..\test\Data\StartListaVisebojMuskarci.txt",
                    @"..\..\test\Data\StartListaSpraveMuskarci.txt"
                }
            }
            ;
            else
            {
                fileNames = new string[]
                {
                    @"..\..\test\Data\StartListaKvalifikacijeZene.txt",
                    @"..\..\test\Data\StartListaVisebojZene.txt",
                    @"..\..\test\Data\StartListaSpraveZene.txt"
                }
            };

            for (int i = 0; i < deoTakmicenja.Length; i++)
            {
                List <TakmicarskaKategorija> list = new List <TakmicarskaKategorija>();
                list.Add(seniori);
                RasporedNastupa raspored = new RasporedNastupa(list, deoTakmicenja[i], gimnastika, 0);

                StartListaParser parser = new StartListaParser();
                parser.parse(fileNames[i]);

                foreach (object[] o in parser.NastupiNaSpravi)
                {
                    Sprava sprava         = Sprave.parse((string)o[0]);
                    int    grupa          = (int)o[1];
                    int    rot            = (int)o[2];
                    int    broj           = (int)o[3];
                    bool   nastupaDvaPuta = (bool)o[4];

                    GimnasticarUcesnik gimnasticar = gim_ucesnici[broj];
                    if (gimnasticar == null)
                    {
                        throw new Exception("Greska prilikom dodavanja rasporeda nastupa.");
                    }
                    NastupNaSpravi nastup = new NastupNaSpravi(gimnasticar, 0);

                    while (raspored.getStartLista(sprava, grupa, rot) == null)
                    {
                        raspored.addNewGrupa(gimnastika);
                    }
                    raspored.getStartLista(sprava, grupa, rot).addNastup(nastup);
                }

                /*     dataContext.Evict(takmicenje);
                 *   foreach (GimnasticarUcesnik g in gim_uces)
                 *       dataContext.Evict(g);
                 *   dataContext.Evict(seniori);
                 */

                DAOFactoryFactory.DAOFactory.GetRasporedNastupaDAO().Add(raspored);
            }
        }
コード例 #42
0
        private void insertGimnasticariAndDrzaveUcesniciAndAddRezTakmicenjaUcesnici(Takmicenje takmicenje)
        {
            TakmicarskaKategorija seniori = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO().FindByTakmicenje(takmicenje.Id)[0];

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

            string fileName;

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

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

            GimnasticariParser parser = new GimnasticariParser();

            parser.parse(fileName);

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

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

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

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

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

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

                rezTak.Takmicenje1.addGimnasticar(gimnasticarUcesnik);
            }

            rezTakmicenjeDAO.Update(rezTak);
        }
コード例 #43
0
ファイル: StartListeForm.cs プロジェクト: stankela/bilten
 private Ocena findOcena(GimnasticarUcesnik g, DeoTakmicenjaKod deoTakKod, 
     Sprava sprava)
 {
     IList<Ocena> result = dataContext.
         ExecuteNamedQuery<Ocena>("FindOcena",
         new string[] { "gimnasticarId", "deoTakKod", "sprava" },
         new object[] { g.Id, deoTakKod, sprava });
     if (result.Count > 0)
         return result[0];
     else
         return null;
 }
コード例 #44
0
ファイル: OcenaForm.cs プロジェクト: stankela/bilten
 private IList<RezultatskoTakmicenje> loadRezTakmicenja(GimnasticarUcesnik g)
 {
     return dataContext.ExecuteNamedQuery<RezultatskoTakmicenje>(
         "FindRezTakmicenjaForGimnasticar",
         new string[] { "gimnasticar" },
         new object[] { g });
 }
コード例 #45
0
        private IList<Ocena> loadOcene(GimnasticarUcesnik g, DeoTakmicenjaKod deoTakKod)
        {
            IDataContext dataContext = null;
            try
            {
                DataAccessProviderFactory factory = new DataAccessProviderFactory();
                dataContext = factory.GetDataContext();
                dataContext.BeginTransaction();

                return dataContext.ExecuteNamedQuery<Ocena>(
                    "FindOceneForGimnasticar",
                    new string[] { "gim", "deoTakKod" },
                    new object[] { g, deoTakKod });
            }
            catch (Exception ex)
            {
                if (dataContext != null && dataContext.IsInTransaction)
                    dataContext.Rollback();
                throw new InfrastructureException(
                    Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
            }
            finally
            {
                if (dataContext != null)
                    dataContext.Dispose();
                dataContext = null;
            }
        }
コード例 #46
0
ファイル: PoredakPreskok.cs プロジェクト: stankela/bilten
 public virtual void deleteGimnasticar(GimnasticarUcesnik g, 
     RezultatskoTakmicenje rezTak)
 {
     RezultatPreskok r = getRezultat(g);
     if (r != null)
     {
         Rezultati.Remove(r);
         rankRezultati();
         updateKvalStatus(rezTak.Propozicije);
     }
 }
コード例 #47
0
        private bool hasNastup(GimnasticarUcesnik g)
        {
            IDataContext dataContext = null;
            try
            {
                DataAccessProviderFactory factory = new DataAccessProviderFactory();
                dataContext = factory.GetDataContext();
                dataContext.BeginTransaction();

                string query = @"select distinct n
                    from NastupNaSpravi n
                    where n.Gimnasticar = :gim";
                IList<NastupNaSpravi> result = dataContext.
                    ExecuteQuery<NastupNaSpravi>(QueryLanguageType.HQL, query,
                            new string[] { "gim" }, new object[] { g });
                return result.Count > 0;
            }
            catch (Exception ex)
            {
                if (dataContext != null && dataContext.IsInTransaction)
                    dataContext.Rollback();
                // TODO: Izgleda da se ovaj izuzetak nigde ne hendluje.
                throw new InfrastructureException(
                    Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
            }
            finally
            {
                if (dataContext != null)
                    dataContext.Dispose();
                dataContext = null;
            }
        }
コード例 #48
0
ファイル: Takmicenje3.cs プロジェクト: stankela/bilten
 public virtual void removeKvalifikant(GimnasticarUcesnik gimnasticar, Sprava sprava)
 {
     UcesnikTakmicenja3 kvalifikant = getUcesnikKvalifikant(gimnasticar, sprava);
     if (kvalifikant != null)
     {
         foreach (UcesnikTakmicenja3 u in getUcesniciKvalifikanti(sprava))
         {
             if (u.QualOrder > kvalifikant.QualOrder)
                 u.QualOrder--;
         }
         Ucesnici.Remove(kvalifikant);
     }
 }
コード例 #49
0
ファイル: TakmicenjeDump.cs プロジェクト: stankela/bilten
        private void loadFromDump(string dump)
        {
            IdMap map = new IdMap();

            // clear
            takmicenje       = new Takmicenje();
            klubovi          = new List <KlubUcesnik>();
            drzave           = new List <DrzavaUcesnik>();
            gimnasticari     = new List <GimnasticarUcesnik>();
            ocene            = new List <Ocena>();
            rasporediNastupa = new List <RasporedNastupa>();
            sudije           = new List <SudijaUcesnik>();
            rasporediSudija  = new List <RasporedSudija>();
            rezTakmicenja    = new List <RezultatskoTakmicenje>();

            using (StringReader reader = new StringReader(dump))
            {
                if (reader.ReadLine() != BILTEN_TAKMICENJE_DUMP)
                {
                    throw new Exception("Neuspesno ucitavanje takmicenja.");
                }

                if (int.Parse(reader.ReadLine()) != Program.VERZIJA_PROGRAMA)
                {
                    throw new Exception("Neuspesno uvozenje takmicenja.\n\nTakmicenje je izvezeno koristeci verziju " +
                                        "programa razlicitu od trenutne, i nije ga moguce uvesti.");
                }

                int prvoKoloId, drugoKoloId, treceKoloId, cetvrtoKoloId;
                int vrhovniSudijaId;

                // load takmicenje
                string id = reader.ReadLine();
                map.takmicenjeMap.Add(int.Parse(id), takmicenje);
                takmicenje.loadFromDump(reader, map, out prvoKoloId, out drugoKoloId,
                                        out treceKoloId, out cetvrtoKoloId, out vrhovniSudijaId);

                // TODO4: Ovde moze da se desi da ID koji je postojao u biltenu iz koga se takmicenje izvozilo ne postoji
                // u biltenu u koji se takmicenje uvozi.
                takmicenje.PrvoKolo = prvoKoloId == -1 ? null :
                                      DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(prvoKoloId);
                takmicenje.DrugoKolo = drugoKoloId == -1 ? null :
                                       DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(drugoKoloId);
                takmicenje.TreceKolo = treceKoloId == -1 ? null :
                                       DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(treceKoloId);
                takmicenje.CetvrtoKolo = cetvrtoKoloId == -1 ? null :
                                         DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(cetvrtoKoloId);

                // Vrhovnog sudiju ucitavam dole (nakon sto ucitam sve sudije ucesnike).

                // load klubovi
                int count = int.Parse(reader.ReadLine());
                for (int i = 0; i < count; ++i)
                {
                    id = reader.ReadLine();
                    KlubUcesnik k = new KlubUcesnik();
                    map.kluboviMap.Add(int.Parse(id), k);
                    k.loadFromDump(reader, map);
                    klubovi.Add(k);
                }

                // load drzave
                count = int.Parse(reader.ReadLine());
                for (int i = 0; i < count; ++i)
                {
                    id = reader.ReadLine();
                    DrzavaUcesnik d = new DrzavaUcesnik();
                    map.drzaveMap.Add(int.Parse(id), d);
                    d.loadFromDump(reader, map);
                    drzave.Add(d);
                }

                // load gimnasticari
                count = int.Parse(reader.ReadLine());
                for (int i = 0; i < count; ++i)
                {
                    id = reader.ReadLine();
                    GimnasticarUcesnik g = new GimnasticarUcesnik();
                    map.gimnasticariMap.Add(int.Parse(id), g);
                    g.loadFromDump(reader, map);
                    gimnasticari.Add(g);
                }

                // load ocene
                count = int.Parse(reader.ReadLine());
                for (int i = 0; i < count; ++i)
                {
                    id = reader.ReadLine();
                    Ocena o = new Ocena();
                    o.loadFromDump(reader, map);
                    ocene.Add(o);
                }

                // load rasporedi nastupa
                count = int.Parse(reader.ReadLine());
                for (int i = 0; i < count; ++i)
                {
                    id = reader.ReadLine();
                    RasporedNastupa r = new RasporedNastupa();
                    r.loadFromDump(reader, map);
                    rasporediNastupa.Add(r);
                }

                // load sudije
                count = int.Parse(reader.ReadLine());
                for (int i = 0; i < count; ++i)
                {
                    id = reader.ReadLine();
                    SudijaUcesnik s = new SudijaUcesnik();
                    map.sudijeMap.Add(int.Parse(id), s);
                    s.loadFromDump(reader, map);
                    sudije.Add(s);
                }

                takmicenje.VrhovniSudija = vrhovniSudijaId == -1 ? null : map.sudijeMap[vrhovniSudijaId];

                // load rasporedi sudija
                count = int.Parse(reader.ReadLine());
                for (int i = 0; i < count; ++i)
                {
                    id = reader.ReadLine();
                    RasporedSudija r = new RasporedSudija();
                    r.loadFromDump(reader, map);
                    rasporediSudija.Add(r);
                }

                // load rezultatska takmicenja
                count = int.Parse(reader.ReadLine());
                for (int i = 0; i < count; ++i)
                {
                    id = reader.ReadLine();
                    RezultatskoTakmicenje rt = new RezultatskoTakmicenje();
                    rt.loadFromDump(reader, map);
                    rezTakmicenja.Add(rt);
                }
            }
        }
コード例 #50
0
        public void update(GimnasticarUcesnik gimnasticar, RezultatskoTakmicenje rezTak,
            Sprava sprava, KvalifikacioniStatus newKvalStatus)
        {
            SqlCeConnection conn = new SqlCeConnection(ConfigurationParameters.ConnectionString);
            SqlCeCommand cmd = new SqlCeCommand(updateSQL, conn);

            cmd.Parameters.Add("@rez_takmicenje_id", SqlDbType.Int).Value = rezTak.Id;
            cmd.Parameters.Add("@gimnasticar_id", SqlDbType.Int).Value = gimnasticar.Id;
            cmd.Parameters.Add("@sprava", SqlDbType.TinyInt).Value = sprava;
            cmd.Parameters.Add("@kval_status", SqlDbType.TinyInt).Value = newKvalStatus;

            SqlCeTransaction tr = null;
            try
            {
                conn.Open();
                tr = conn.BeginTransaction(); // zbog updateDependents, inace ne mora
                cmd.Transaction = tr;
                int recordsAffected = cmd.ExecuteNonQuery();
                if (recordsAffected != 1)
                {
                    // TODO: Ukoliko se radi optimistic offline lock, ova grana se
                    // ce se izvrsavati ako su podaci u bazi u medjuvremenu promenjeni,
                    // pa bi trebalo izbaciti izuzetak koji bi to signalizirao
                    // (npr. NHibernate ima izuzetak StaleObjectStateException).
                    // Generalno, i kod insert i kod update i kod delete bi
                    // slucajevi gde se komanda izvrsi bez problema ali se
                    // recordsAffected razlikuje od ocekivanog
                    // trebalo da se signaliziraju razlicitim tipom izuzetka

                    throw new InfrastructureException(Strings.DatabaseAccessExceptionMessage);
                }
                tr.Commit(); // TODO: this can throw Exception and InvalidOperationException
            }
            catch (SqlCeException ex)
            {
                // in Open()
                if (tr != null)
                    tr.Rollback(); // TODO: this can throw Exception and InvalidOperationException
                throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
            }
            catch (InvalidOperationException ex)
            {
                // in ExecuteNonQuery(), ExecureScalar()
                if (tr != null)
                    tr.Rollback();
                throw new InfrastructureException(Strings.getFullDatabaseAccessExceptionMessage(ex), ex);
            }
            // za svaki slucaj
            catch (Exception)
            {
                if (tr != null)
                    tr.Rollback();
                throw;
            }
            finally
            {
                conn.Close();
            }
        }
コード例 #51
0
ファイル: Takmicenje1.cs プロジェクト: stankela/bilten
 public virtual void addGimnasticar(GimnasticarUcesnik gimnasticar)
 {
     Gimnasticari.Add(gimnasticar);
 }
コード例 #52
0
 private string deleteConfirmationMessage(GimnasticarUcesnik gimnasticar)
 {
     return(String.Format("Da li zelite da izbrisete gimnasticara \"{0}\"?", gimnasticar));
 }
コード例 #53
0
ファイル: Takmicenje1.cs プロジェクト: stankela/bilten
 public virtual void gimnasticarDeleted(GimnasticarUcesnik g, IList vezbaneSprave,
     RezultatskoTakmicenje rezTak)
 {
     PoredakUkupno.deleteGimnasticar(g, rezTak);
     foreach (Sprava s in vezbaneSprave)
     {
         if (s == Sprava.Preskok)
             PoredakPreskok.deleteGimnasticar(g, rezTak);
         else
             getPoredakSprava(s).deleteGimnasticar(g, rezTak);
     }
 }
コード例 #54
0
        private void mnSpraveKojeSeBoduju_Click(object sender, EventArgs e)
        {
            IList <GimnasticarUcesnik> selItems = getActiveDataGridViewUserControl()
                                                  .getSelectedItems <GimnasticarUcesnik>();

            if (selItems.Count != 1)
            {
                return;
            }
            GimnasticarUcesnik g = selItems[0];

            List <int> checkedItems = new List <int>();

            foreach (Sprava s in Sprave.getSprave(ActiveRezTakmicenje.Gimnastika))
            {
                if (g.getSpravaSeBoduje(s))
                {
                    checkedItems.Add(Sprave.indexOf(s, ActiveRezTakmicenje.Gimnastika));
                }
            }

            CheckListForm form = new CheckListForm(
                new List <string>(Sprave.getSpraveNazivi(ActiveRezTakmicenje.Gimnastika)), checkedItems,
                "Izaberite sprave koje se boduju", "Sprave koje se boduju", true, "Izaberite sprave", true);

            if (form.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            Sprava[]       sprave             = Sprave.getSprave(ActiveRezTakmicenje.Gimnastika);
            IList <Sprava> spraveKojeSeBoduju = new List <Sprava>();

            g.clearSpraveKojeSeBoduju();
            foreach (int i in form.CheckedIndices)
            {
                g.setSpravaSeBoduje(sprave[i]);
            }

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

            try
            {
                using (session = NHibernateHelper.Instance.OpenSession())
                    using (session.BeginTransaction())
                    {
                        CurrentSessionContext.Bind(session);
                        DAOFactoryFactory.DAOFactory.GetGimnasticarUcesnikDAO().Update(g);

                        PoredakSpravaDAO  poredakSpravaDAO  = DAOFactoryFactory.DAOFactory.GetPoredakSpravaDAO();
                        PoredakPreskokDAO poredakPreskokDAO = DAOFactoryFactory.DAOFactory.GetPoredakPreskokDAO();

                        OcenaDAO      ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO();
                        IList <Ocena> ocene    = ocenaDAO.FindByDeoTakmicenja(takmicenje.Id, DeoTakmicenjaKod.Takmicenje1);

                        foreach (Sprava s in Sprave.getSprave(ActiveRezTakmicenje.Gimnastika))
                        {
                            if (s != Sprava.Preskok)
                            {
                                PoredakSprava p = ActiveRezTakmicenje.getPoredakSprava(DeoTakmicenjaKod.Takmicenje1, s);
                                poredakSpravaDAO.Attach(p, false);
                                p.create(ActiveRezTakmicenje, ocene);
                                poredakSpravaDAO.Update(p);
                            }
                            else
                            {
                                PoredakPreskok p = ActiveRezTakmicenje.getPoredakPreskok(DeoTakmicenjaKod.Takmicenje1);
                                poredakPreskokDAO.Attach(p, false);
                                p.create(ActiveRezTakmicenje, ocene);
                                poredakPreskokDAO.Update(p);
                            }
                        }
                        foreach (Ocena o in ocene)
                        {
                            ocenaDAO.Evict(o);
                        }

                        takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenje.Id);
                        takmicenje.LastModified = DateTime.Now;
                        session.Transaction.Commit();
                    }
            }
            catch (Exception ex)
            {
                if (session != null && session.Transaction != null && session.Transaction.IsActive)
                {
                    session.Transaction.Rollback();
                }
                MessageDialogs.showError(ex.Message, this.Text);
                Close();
                return;
            }
            finally
            {
                Cursor.Hide();
                Cursor.Current = Cursors.Arrow;
                CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory);
            }
        }
コード例 #55
0
ファイル: Takmicenje1.cs プロジェクト: stankela/bilten
 public virtual void removeGimnasticar(GimnasticarUcesnik gimnasticar)
 {
     Gimnasticari.Remove(gimnasticar);
 }
コード例 #56
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);
                }
            }
        }
コード例 #57
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);
            }
        }
コード例 #58
0
        // can throw InfrastructureException
        public bool postojiRezultatSpravaFinaleKupaUpdate(GimnasticarUcesnik gimnasticar, RezultatskoTakmicenje rezTak,
            Sprava sprava)
        {
            SqlCeCommand cmd = new SqlCeCommand(findSQL);
            cmd.Parameters.Add("@rez_takmicenje_id", SqlDbType.Int).Value = rezTak.Id;
            cmd.Parameters.Add("@gimnasticar_id", SqlDbType.Int).Value = gimnasticar.Id;
            cmd.Parameters.Add("@sprava", SqlDbType.TinyInt).Value = sprava;

            SqlCeDataReader rdr = Database.executeReader(cmd, Strings.DatabaseAccessExceptionMessage);
            bool result = false;
            if (rdr.Read())
                result = true;
            rdr.Close();
            return result;
        }