private static void parseOptionsFile() { string fileName = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "Options.txt"); try { string[] lines = System.IO.File.ReadAllLines(fileName); for (int i = 0; i < lines.Length; ++i) { if (lines[i].ToUpper().Contains("JedinstvenProgram".ToUpper())) { Options.Instance.JedinstvenProgram = bool.Parse(lines[i].Split(' ')[1].Trim()); } else if (lines[i].ToUpper().Contains("IsProgramZaClanarinu".ToUpper())) { Options.Instance.IsProgramZaClanarinu = bool.Parse(lines[i].Split(' ')[1].Trim()); } else if (lines[i].ToUpper().Contains("ClientPath".ToUpper())) { Options.Instance.ClientPath = lines[i].Split(' ')[1].Trim(); } } } catch (FileNotFoundException) { MessageDialogs.showMessage("Ne mogu da pronadjem fajl Options.txt", "Program za clanarinu"); } }
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 void unesiOcitavanje(Clan clan, DateTime vremeOcitavanja, UplataClanarine uplata) { try { using (ISession session = NHibernateHelper.Instance.OpenSession()) using (session.BeginTransaction()) { // NOTE: DolazakNaTreningDAO (vidi dole) ne uzima session iz CurrentSessionContext zato sto planiram // da metod unesiOcitavanje izvrsavam u posebnom threadu. // CurrentSessionContext.Bind(session); DolazakNaTrening dolazak = new DolazakNaTrening(); dolazak.Clan = clan; dolazak.DatumVremeDolaska = vremeOcitavanja; if (uplata != null && !clan.NeplacaClanarinu) { dolazak.Grupa = uplata.Grupa; } else { dolazak.Grupa = null; } DolazakNaTreningDAOImpl dolazakNaTreningDAO = DAOFactoryFactory.DAOFactory.GetDolazakNaTreningDAO() as DolazakNaTreningDAOImpl; dolazakNaTreningDAO.Session = session; dolazakNaTreningDAO.MakePersistent(dolazak); if (CitacKarticaDictionary.Instance.DanasnjaOcitavanja.Add(clan.Id)) { DolazakNaTreningMesecniDAOImpl dolazakNaTreningMesecniDAO = DAOFactoryFactory.DAOFactory.GetDolazakNaTreningMesecniDAO() as DolazakNaTreningMesecniDAOImpl; dolazakNaTreningMesecniDAO.Session = session; DolazakNaTreningMesecni dolazakMesecni = dolazakNaTreningMesecniDAO.getDolazakNaTrening(dolazak.Clan, dolazak.DatumDolaska.Value.Year, dolazak.DatumDolaska.Value.Month); if (dolazakMesecni == null) { dolazakMesecni = new DolazakNaTreningMesecni(); dolazakMesecni.Clan = clan; dolazakMesecni.Godina = vremeOcitavanja.Year; dolazakMesecni.Mesec = vremeOcitavanja.Month; dolazakMesecni.BrojDolazaka = 1; } else { ++dolazakMesecni.BrojDolazaka; } dolazakNaTreningMesecniDAO.MakePersistent(dolazakMesecni); } session.Transaction.Commit(); } } catch (Exception ex) { MessageDialogs.showMessage(ex.Message, "Citac kartica"); } finally { // CurrentSessionContext.Unbind(NHibernateHelper.Instance.SessionFactory); } }