protected override void updateEntity(DomainObject entity) { RezultatskoTakmicenjeDescription desc = (RezultatskoTakmicenjeDescription)entity; DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDescriptionDAO().Update(desc); Takmicenje takmicenje = DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().FindById(takmicenjeId); RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); IList <RezultatskoTakmicenje> rezTakmicenja = rezTakDAO.FindByTakmicenje(takmicenjeId); TakmicarskaKategorijaDAO takKatDAO = DAOFactoryFactory.DAOFactory.GetTakmicarskaKategorijaDAO(); IList <RezultatskoTakmicenje> istaRezTakmicenja = new List <RezultatskoTakmicenje>(); IList <RezultatskoTakmicenje> vecaRezTakmicenja = new List <RezultatskoTakmicenje>(); int redBroj = 0; foreach (RezultatskoTakmicenje rt in rezTakmicenja) { if (rt.TakmicenjeDescription.RedBroj < desc.RedBroj) { if (rt.RedBroj > redBroj) { redBroj = rt.RedBroj; } } else if (rt.TakmicenjeDescription.RedBroj > desc.RedBroj) { vecaRezTakmicenja.Add(rt); } } foreach (TakmicarskaKategorija k in sveKategorije) { if (SelKategorije.Contains(k) && oldKategorije.Contains(k)) { RezultatskoTakmicenje rt = rezTakDAO.FindByKatDesc(k, desc); rt.RedBroj = (byte)++redBroj; rezTakDAO.Update(rt); } else if (SelKategorije.Contains(k) && !oldKategorije.Contains(k)) { takKatDAO.Attach(k, false); rezTakDAO.Add(createRezultatskoTakmicenje(takmicenje, k, desc, ++redBroj)); } else if (!SelKategorije.Contains(k) && oldKategorije.Contains(k)) { RezultatskoTakmicenje rt = rezTakDAO.FindByKatDesc(k, desc); rezTakDAO.Delete(rt); } } foreach (RezultatskoTakmicenje rt in vecaRezTakmicenja) { rt.RedBroj = (byte)++redBroj; rezTakDAO.Update(rt); } }
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); } }
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); }
public static void updateTakmicenjeOnChangedPropozicije(IList <RezultatskoTakmicenje> rezTakmicenja, IDictionary <int, Propozicije> origPropozicijeMap, IDictionary <int, Propozicije> origDescPropozicijeMap, Takmicenje takmicenje) { DAOFactoryFactory.DAOFactory.GetTakmicenjeDAO().Update(takmicenje); // ovo snima i propozicije za descriptions RezultatskoTakmicenjeDAO rezTakDAO = DAOFactoryFactory.DAOFactory.GetRezultatskoTakmicenjeDAO(); PropozicijeDAO propozicijeDAO = DAOFactoryFactory.DAOFactory.GetPropozicijeDAO(); OcenaDAO ocenaDAO = DAOFactoryFactory.DAOFactory.GetOcenaDAO(); IList <Ocena> oceneTak1 = null; foreach (RezultatskoTakmicenje rt in rezTakmicenja) { if (!rt.Propozicije.Equals(origPropozicijeMap[rt.Id])) { rezTakDAO.Update(rt); // ovo snima i propozicije i sve promene rezultata } else { rezTakDAO.Attach(rt, false); // moram da attachujem (ili da apdejtujem) sva rez. takmicenja zato } // sto se koriste u izracunavanju ekipnog poretka. } foreach (RezultatskoTakmicenjeDescription d in takmicenje.TakmicenjeDescriptions) { if (d.Propozicije.JednoTak4ZaSveKategorije != origDescPropozicijeMap[d.Id].JednoTak4ZaSveKategorije) { // Posto je opcija JednoTak4ZaSveKategorije onemogucena u propozicijama za konkretna rez. takmicenja, // moguce je da se promena u propozicijama za description ne prenosi na propozicije na konkretna // rez. takmicenja. Zato ponovo radim Update za sva rez. takmicenja, da bih bio siguran da ce promene // koje ce biti izvrsene u metodu updateImaEkipnoTakmicenje biti snimljene u bazu. foreach (RezultatskoTakmicenje rt in rezTakmicenja) { if (rt.TakmicenjeDescription.Equals(d)) { rezTakDAO.Update(rt); } } RezultatskoTakmicenje.updateImaEkipnoTakmicenje(rezTakmicenja, d); } } foreach (RezultatskoTakmicenje rt in rezTakmicenja) { if (!rt.Propozicije.Equals(origPropozicijeMap[rt.Id])) { if (oceneTak1 == null) { oceneTak1 = ocenaDAO.FindByDeoTakmicenja(takmicenje.Id, DeoTakmicenjaKod.Takmicenje1); } rt.updateRezultatiOnChangedPropozicije(origPropozicijeMap, takmicenje, rezTakmicenja, oceneTak1); } } if (oceneTak1 != null) { foreach (Ocena o in oceneTak1) { ocenaDAO.Evict(o); } } }