private string getMaxGrupa() { string result = "Grupa"; try { using (ISession session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { CurrentSessionContext.Bind(session); GrupaDAO grupaDAO = DAOFactoryFactory.DAOFactory.GetGrupaDAO(); IList<Grupa> grupe = grupaDAO.FindAll(); foreach (Grupa g in grupe) { if (g.Naziv.Length > result.Length) { result = g.Naziv; } } } } catch (Exception) { } finally { CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } return result; }
protected override List <object> loadEntities() { GrupaDAO grupaDAO = DAOFactoryFactory.DAOFactory.GetGrupaDAO(); return(new List <Grupa>(grupaDAO.FindAll()).ConvertAll <object>( delegate(Grupa g) { return g; })); }
protected override void checkBusinessRulesOnAdd(DomainObject entity) { Grupa g = (Grupa)entity; Notification notification = new Notification(); GrupaDAO grupaDAO = DAOFactoryFactory.DAOFactory.GetGrupaDAO(); if (grupaDAO.existsGrupaSifra(g.Sifra)) { notification.RegisterMessage("Sifra", "Grupa sa datom sifrom vec postoji."); throw new BusinessException(notification); } if (grupaDAO.existsGrupaNaziv(g.Naziv)) { notification.RegisterMessage("Naziv", "Grupa sa datim nazivom vec postoji."); throw new BusinessException(notification); } }
protected override bool refIntegrityDeleteDlg(DomainObject entity) { Kategorija k = (Kategorija)entity; GrupaDAO grupaDao = DAOFactoryFactory.DAOFactory.GetGrupaDAO(); if (grupaDao.existsGrupa(k)) { string msg = "Kategoriju '{0}' nije moguce izbrisati zato sto postoje " + "grupe za datu kategoriju. \n\nDa bi neka kategorija mogla da se " + "izbrise, uslov je da ne postoje grupe za tu kategoriju. To " + "znaci da morate najpre da pronadjete sve grupe za datu " + "kategoriju, i da zatim, u prozoru u kome " + "se menjaju podaci o grupi, polje za kategoriju promenite ili ga ostavite prazno. " + "Nakon sto ste ovo uradili za sve " + "grupe za datu kategoriju, moci cete da izbrisete kategoriju. "; MessageDialogs.showMessage(String.Format(msg, k), this.Text); return(false); } return(true); }
protected override bool refIntegrityDeleteDlg(DomainObject entity) { FinansijskaCelina f = (FinansijskaCelina)entity; GrupaDAO grupaDao = DAOFactoryFactory.DAOFactory.GetGrupaDAO(); if (grupaDao.existsGrupa(f)) { string msg = "Finansijsku celinu '{0}' nije moguce izbrisati zato sto postoje " + "grupe za datu finansijsku celinu. \n\nDa bi neka finansijska celina mogla da se " + "izbrise, uslov je da ne postoje grupe za tu finansijsku celinu. To " + "znaci da morate najpre da pronadjete sve grupe za datu " + "finansijsku celinu, i da zatim, u prozoru u kome " + "se menjaju podaci o grupi, promenite finansijsku celinu za datu grupu. " + "Nakon sto ste ovo uradili za sve " + "grupe za datu finansijsku celinu, moci cete da izbrisete finansijsku celinu. "; MessageDialogs.showMessage(String.Format(msg, f), this.Text); return(false); } return(true); }
protected override void checkBusinessRulesOnUpdate(DomainObject entity) { Grupa g = (Grupa)entity; Notification notification = new Notification(); GrupaDAO grupaDAO = DAOFactoryFactory.DAOFactory.GetGrupaDAO(); bool sifraChanged = (g.Sifra != oldSifra) ? true : false; if (sifraChanged && grupaDAO.existsGrupaSifra(g.Sifra)) { notification.RegisterMessage("Sifra", "Grupa sa datom sifrom vec postoji."); throw new BusinessException(notification); } bool nazivChanged = (g.Naziv.ToUpper() != oldNaziv.ToUpper()) ? true : false; if (nazivChanged && grupaDAO.existsGrupaNaziv(g.Naziv)) { notification.RegisterMessage("Naziv", "Grupa sa datim nazivom vec postoji."); throw new BusinessException(notification); } }
public void Init() { initDate = DateTime.Now; try { using (ISession session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { // TODO3: Proveri da li ovde treba koristiti CurrentSessionContext ako nije JedinstenProgram CurrentSessionContext.Bind(session); clanoviSaKarticom = new Dictionary <int, Clan>(); foreach (Clan clan in DAOFactoryFactory.DAOFactory.GetClanDAO().findClanoviSaKarticom()) { clanoviSaKarticom.Add(clan.BrojKartice.Value, clan); } GrupaDAO grupaDAO = DAOFactoryFactory.DAOFactory.GetGrupaDAO(); IList <Grupa> godisnjaClanarinaGrupe = grupaDAO.findGodisnjaClanarina(); if (godisnjaClanarinaGrupe.Count == 0) { // TODO3: Da li je potrebna ova provera? Ako se grupe sa godisnjom clanarinom zadaju // u programu, trebalo bi da je dozvoljeno da ne bude zadata nijedna grupa. MessageDialogs.showMessage("Ne mogu da pronadjem grupu za godisnju clanarinu", "Greska"); } prethodneUplate = new Dictionary <int, List <UplataClanarine> >(); DateTime now = DateTime.Now; DateTime from = now.AddMonths(-6); // Kao krajnji datum za uplate se uzima sledeci mesec zbog sledece situacije: Dolazi potpuno novi clan // (prvi put se upisuje u sokolsko drustvo), i placa clanarinu za sledeci mesec (da pocinje od // sledeceg meseca da vezba). Tada je jedina uplate koja postoji uplata za sledeci mesec (i treba // da svetli zeleno, i da se grupa za tu uplatu prikazije na ekranu, i da se ta grupa veze za // DolazakNaTrening). DateTime sledeciMesec = now.AddMonths(1); UplataClanarineDAO uplataClanarineDAO = DAOFactoryFactory.DAOFactory.GetUplataClanarineDAO(); foreach (UplataClanarine u in uplataClanarineDAO.findUplateVaziOd(from, sledeciMesec)) { foreach (Grupa g in godisnjaClanarinaGrupe) { if (g.Id == u.Grupa.Id) { continue; } } // Ako ne postoji uplata za ovaj mesec ali postoji uplata za sledeci mesec, ta uplata ce biti // stavljena u prethodneUplate. Ta uplata ce biti izabrana u metodu findUplata zato sto // findUplata sortira prethodne uplate opadajuce po datumu vazenja. if (prethodneUplate.ContainsKey(u.Clan.Id)) { prethodneUplate[u.Clan.Id].Add(u); } else { List <UplataClanarine> uplate = new List <UplataClanarine>(); uplate.Add(u); prethodneUplate.Add(u.Clan.Id, uplate); } } uplateGodisnjaClanarina = new Dictionary <int, UplataClanarine>(); if (godisnjaClanarinaGrupe.Count > 0) { DateTime firstDateTimeInYear = new DateTime(DateTime.Now.Year, 1, 1, 0, 0, 0); DateTime lastDateTimeInYear = new DateTime(DateTime.Now.Year + 1, 1, 1, 0, 0, 0).AddSeconds(-1); foreach (UplataClanarine u in uplataClanarineDAO.findUplate(godisnjaClanarinaGrupe, firstDateTimeInYear, lastDateTimeInYear)) { if (!uplateGodisnjaClanarina.ContainsKey(u.Clan.Id)) { uplateGodisnjaClanarina.Add(u.Clan.Id, u); } } } uplateGodisnjaClanarinaPrethGod = new Dictionary <int, UplataClanarine>(); if (godisnjaClanarinaGrupe.Count > 0) { DateTime firstDateTimeInYear = new DateTime(DateTime.Now.Year - 1, 1, 1, 0, 0, 0); DateTime lastDateTimeInYear = new DateTime(DateTime.Now.Year, 1, 1, 0, 0, 0).AddSeconds(-1); foreach (UplataClanarine u in uplataClanarineDAO.findUplate(godisnjaClanarinaGrupe, firstDateTimeInYear, lastDateTimeInYear)) { if (!uplateGodisnjaClanarinaPrethGod.ContainsKey(u.Clan.Id)) { uplateGodisnjaClanarinaPrethGod.Add(u.Clan.Id, u); } } } DateTime pocetakDana = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0); DateTime sutra = pocetakDana.AddDays(1); DateTime krajDana = new DateTime(sutra.Year, sutra.Month, sutra.Day, 0, 0, 0).AddSeconds(-1); DolazakNaTreningDAO dolazakDAO = DAOFactoryFactory.DAOFactory.GetDolazakNaTreningDAO(); IList <DolazakNaTrening> danasnjiDolasci = DAOFactoryFactory.DAOFactory.GetDolazakNaTreningDAO().getDolazakNaTrening(pocetakDana, krajDana); danasnjaOcitavanja = new HashedSet(); foreach (DolazakNaTrening d in danasnjiDolasci) { danasnjaOcitavanja.Add(d.Clan.Id); } } } catch (Exception ex) { MessageDialogs.showMessage(ex.Message, "Citac kartica"); } finally { CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } }
public virtual List <object[]> getNeplacenDolazakNaTrening(DateTime from, DateTime to) { try { string dolasciQuery = @" SELECT DISTINCT d.datum_vreme_dolaska, c.clan_id, c.ne_placa_clanarinu, g.grupa_id FROM clanovi c INNER JOIN (dolazak_na_trening d LEFT OUTER JOIN grupe g ON d.grupa_id = g.grupa_id) ON c.clan_id = d.clan_id WHERE (d.datum_vreme_dolaska BETWEEN '{0}' AND '{1}')"; dolasciQuery = String.Format(dolasciQuery, from.ToString("yyyy-MM-dd HH:mm:ss"), to.ToString("yyyy-MM-dd HH:mm:ss")); IList <object[]> dolasci = Session.CreateSQLQuery(dolasciQuery).List <object[]>(); string uplateQuery = @" SELECT DISTINCT datepart(year, u.vazi_od) god, datepart(month, u.vazi_od) mes, u.clan_id FROM uplate u WHERE (u.vazi_od BETWEEN '{0}' AND '{1}')"; uplateQuery = String.Format(uplateQuery, from.ToString("yyyy-MM-dd HH:mm:ss"), to.ToString("yyyy-MM-dd HH:mm:ss")); IList <object[]> uplate = Session.CreateSQLQuery(uplateQuery).List <object[]>(); ISet uplateSet = new HashedSet(); foreach (object[] row in uplate) { int god = (int)row[0]; int mes = (int)row[1]; int id = (int)row[2]; uplateSet.Add(new ClanGodinaMesec(id, god, mes)); } DateTime firstDateTimeInYear = new DateTime(from.Year, 1, 1, 0, 0, 0); DateTime lastDateTimeInYear = new DateTime(to.AddYears(1).Year, 1, 1, 0, 0, 0).AddSeconds(-1); List <Grupa> godisnjaClanarinaGrupe = new List <Grupa>(); GrupaDAO grupaDAO = DAOFactoryFactory.DAOFactory.GetGrupaDAO(); IList <Grupa> grupe = grupaDAO.FindAll(); foreach (Grupa g in grupe) { if (g.ImaGodisnjuClanarinu) { godisnjaClanarinaGrupe.Add(g); } } if (godisnjaClanarinaGrupe.Count == 0) { // TODO3: Da li je ovo potrebno? MessageDialogs.showMessage("Ne mogu da pronadjem grupu za godisnju clanarinu", "Greska"); } string uplateGodisnjaClanarinaQuery = @" SELECT DISTINCT datepart(year, u.vazi_od) god, u.clan_id FROM uplate u WHERE (u.vazi_od BETWEEN '{0}' AND '{1}') {2}"; string filter = String.Empty; if (godisnjaClanarinaGrupe.Count > 0) { filter = " AND " + Util.getGrupeFilter(godisnjaClanarinaGrupe, "u", "grupa_id"); } uplateGodisnjaClanarinaQuery = String.Format(uplateGodisnjaClanarinaQuery, firstDateTimeInYear.ToString("yyyy-MM-dd HH:mm:ss"), lastDateTimeInYear.ToString("yyyy-MM-dd HH:mm:ss"), filter); IList <object[]> uplateGodisnjaClanarina = Session.CreateSQLQuery(uplateGodisnjaClanarinaQuery).List <object[]>(); ISet godisnjeUplateSet = new HashedSet(); foreach (object[] row in uplateGodisnjaClanarina) { int god = (int)row[0]; int id = (int)row[1]; godisnjeUplateSet.Add(new ClanGodinaMesec(id, god, 1)); } List <object[]> result = new List <object[]>(); foreach (object[] row in dolasci) { DateTime datum_vreme_dolaska = (DateTime)row[0]; int clan_id = (int)row[1]; bool neplacaClanarinu = (bool)row[2]; object grupa_id = row[3]; bool imaUplatu = uplateSet.Contains( new ClanGodinaMesec(clan_id, datum_vreme_dolaska.Year, datum_vreme_dolaska.Month)); if (!imaUplatu) { imaUplatu = godisnjeUplateSet.Contains(new ClanGodinaMesec(clan_id, datum_vreme_dolaska.Year, 1)); } if (!imaUplatu) { imaUplatu = neplacaClanarinu; } if (imaUplatu) { continue; } object[] item = new object[] { datum_vreme_dolaska, clan_id, grupa_id }; result.Add(item); } return(result); } catch (HibernateException ex) { string message = String.Format( "{0} \n\n{1}", Strings.DatabaseAccessExceptionMessage, ex.Message); throw new InfrastructureException(message, ex); } }
public virtual List <object[]> getDolazakNaTreningMesecniReportItems(DateTime from, DateTime to, bool samoNedostajuceUplate) { try { string dolasciQuery = @" SELECT DISTINCT datepart(year, d.datum_vreme_dolaska) god, datepart(month, d.datum_vreme_dolaska) mes, datepart(day, d.datum_vreme_dolaska) dan, c.clan_id, c.broj, c.ime, c.prezime, c.datum_rodjenja, c.ne_placa_clanarinu, g.naziv FROM clanovi c INNER JOIN (dolazak_na_trening d LEFT OUTER JOIN grupe g ON d.grupa_id = g.grupa_id) ON c.clan_id = d.clan_id WHERE (d.datum_vreme_dolaska BETWEEN '{0}' AND '{1}') ORDER BY god, mes, g.naziv, c.prezime, c.ime, c.datum_rodjenja, dan"; dolasciQuery = String.Format(dolasciQuery, from.ToString("yyyy-MM-dd HH:mm:ss"), to.ToString("yyyy-MM-dd HH:mm:ss")); IList <object[]> dolasci = Session.CreateSQLQuery(dolasciQuery).List <object[]>(); string uplateQuery = @" SELECT DISTINCT datepart(year, u.vazi_od) god, datepart(month, u.vazi_od) mes, u.clan_id FROM uplate u WHERE (u.vazi_od BETWEEN '{0}' AND '{1}')"; uplateQuery = String.Format(uplateQuery, from.ToString("yyyy-MM-dd HH:mm:ss"), to.ToString("yyyy-MM-dd HH:mm:ss")); IList <object[]> uplate = Session.CreateSQLQuery(uplateQuery).List <object[]>(); ISet uplateSet = new HashedSet(); foreach (object[] row in uplate) { int god = (int)row[0]; int mes = (int)row[1]; int id = (int)row[2]; uplateSet.Add(new ClanGodinaMesec(id, god, mes)); } DateTime firstDateTimeInYear = new DateTime(from.Year, 1, 1, 0, 0, 0); DateTime lastDateTimeInYear = new DateTime(to.AddYears(1).Year, 1, 1, 0, 0, 0).AddSeconds(-1); List <Grupa> godisnjaClanarinaGrupe = new List <Grupa>(); GrupaDAO grupaDAO = DAOFactoryFactory.DAOFactory.GetGrupaDAO(); IList <Grupa> grupe = grupaDAO.FindAll(); foreach (Grupa g in grupe) { if (g.ImaGodisnjuClanarinu) { godisnjaClanarinaGrupe.Add(g); } } if (godisnjaClanarinaGrupe.Count == 0) { // TODO3: Da li je ovo potrebno? MessageDialogs.showMessage("Ne mogu da pronadjem grupu za godisnju clanarinu", "Greska"); } string uplateGodisnjaClanarinaQuery = @" SELECT DISTINCT datepart(year, u.vazi_od) god, u.clan_id FROM uplate u WHERE (u.vazi_od BETWEEN '{0}' AND '{1}') {2}"; string filter = String.Empty; if (godisnjaClanarinaGrupe.Count > 0) { filter = " AND " + Util.getGrupeFilter(godisnjaClanarinaGrupe, "u", "grupa_id"); } uplateGodisnjaClanarinaQuery = String.Format(uplateGodisnjaClanarinaQuery, firstDateTimeInYear.ToString("yyyy-MM-dd HH:mm:ss"), lastDateTimeInYear.ToString("yyyy-MM-dd HH:mm:ss"), filter); IList <object[]> uplateGodisnjaClanarina = Session.CreateSQLQuery(uplateGodisnjaClanarinaQuery).List <object[]>(); ISet godisnjeUplateSet = new HashedSet(); foreach (object[] row in uplateGodisnjaClanarina) { int god = (int)row[0]; int id = (int)row[1]; godisnjeUplateSet.Add(new ClanGodinaMesec(id, god, 1)); } List <object[]> result = new List <object[]>(); int prev_id = -1; object[] prevItem = null; int brojDana = 0; foreach (object[] row in dolasci) { int god = (int)row[0]; int mes = (int)row[1]; int id = (int)row[3]; bool neplacaClanarinu = (bool)row[8]; bool imaUplatu = uplateSet.Contains(new ClanGodinaMesec(id, god, mes)); if (!imaUplatu) { imaUplatu = godisnjeUplateSet.Contains(new ClanGodinaMesec(id, god, 1)); } if (!imaUplatu) { imaUplatu = neplacaClanarinu; } if (samoNedostajuceUplate && imaUplatu) { continue; } int broj = (int)row[4]; string ime = (string)row[5]; string prezime = (string)row[6]; Nullable <DateTime> datumRodjenja = null; if (row[7] != null) { datumRodjenja = (DateTime)row[7]; } string nazivGrupe = String.Empty; if (row[9] != null) { nazivGrupe = (string)row[9]; } string imaUplatuStr = "NE"; if (imaUplatu) { imaUplatuStr = ""; } string clan = Clan.formatPrezimeImeBrojDatumRodjAdresaMesto( prezime, ime, broj, datumRodjenja, String.Empty, String.Empty); object[] item = new object[] { clan, nazivGrupe, imaUplatuStr, god, mes }; if (prevItem != null && god == (int)prevItem[3] && mes == (int)prevItem[4] && id == prev_id && nazivGrupe == (string)prevItem[1]) { ++brojDana; } else { if (prevItem != null) { if ((string)prevItem[2] == "NE") { prevItem[2] = formatBrojTreninga(brojDana, samoNedostajuceUplate); } result.Add(prevItem); } brojDana = 1; prev_id = id; prevItem = item; } } // Add last item if (prevItem != null) { if ((string)prevItem[2] == "NE") { prevItem[2] = formatBrojTreninga(brojDana, samoNedostajuceUplate); } result.Add(prevItem); } return(result); } catch (HibernateException ex) { string message = String.Format( "{0} \n\n{1}", Strings.DatabaseAccessExceptionMessage, ex.Message); throw new InfrastructureException(message, ex); } }
private bool updateEntityFromUI() { try { grupa.Naziv = txtNaziv.Text.Trim(); grupa.EngNaziv = txtEngNaziv.Text.Trim(); if (!grupa.validate()) { return(false); } GrupaDAO grupaDAO = DAOFactoryFactory.DAOFactory.GetGrupaDAO(); if (editMode) { if (grupa.Naziv != oldNaziv || grupa.EngNaziv != oldEngNaziv) { grupaDAO.MakePersistent(grupa); NHibernateHelper.GetCurrentSession().Transaction.Commit(); oldNaziv = grupa.Naziv; oldEngNaziv = grupa.EngNaziv; } } else { grupaDAO.MakePersistent(grupa); NHibernateHelper.GetCurrentSession().Transaction.Commit(); grupe.Add(grupa); editMode = true; oldNaziv = grupa.Naziv; oldEngNaziv = grupa.EngNaziv; } return(true); } catch (InvalidPropertyException ex) { MessageDialogs.showMessage(ex.Message, this.Text); setFocus(ex.InvalidProperty); return(false); } catch (BusinessException ex) { if (ex.Notification != null) { NotificationMessage msg = ex.Notification.FirstMessage; MessageDialogs.showMessage(msg.Message, this.Text); setFocus(msg.FieldName); } else { MessageDialogs.showMessage(ex.Message, this.Text); } return(false); } catch (InfrastructureException ex) { MessageDialogs.showMessage(ex.Message, this.Text); return(false); } catch (Exception ex) { MessageDialogs.showMessage( Strings.getFullDatabaseAccessExceptionMessage(ex.Message), this.Text); return(false); } }