public List <Beleg> GetBelegByQueryData(BelegQueryData queryData, bool includeBelegPosition, bool includePayment) { List <Beleg> wrkList = new List <Beleg>(); using (DbCommand cmd = myRepoFactory.CreateCommand()) { cmd.CommandText = "select * from Beleg "; List <string> whereConditions = genereateConditions(queryData, cmd); if (whereConditions.Count > 0) { string condCombined = whereConditions.Select(w => w).Aggregate((s1, s2) => s1 + " and " + s2); cmd.CommandText += "where " + condCombined; } using (DbDataReader dbDr = cmd.ExecuteReader()) { while (dbDr.Read()) { Beleg b = new Beleg(); b.FillEntityWithDataReader(dbDr); if (includeBelegPosition) { FindBelegPositionenByBelegId(b.BelegId).ForEach(p => b.Positionen.Add(p)); } if (includePayment) { FindBelegZahlungByBelegId(b.BelegId).ForEach(z => b.Zahlungen.Add(z)); } wrkList.Add(b); } } } return(wrkList); }
private List <string> genereateConditions(BelegQueryData queryData, DbCommand cmd) { List <string> cond = new List <string>(); if (queryData.VonDatum != null) { string par = "@VonDatum"; cond.Add(string.Format("BelegDatum >= {0}", par)); cmd.AddCmdParameter(typeof(DateTime), ParameterDirection.Input, par, (DateTime)queryData.VonDatum); } if (queryData.BisDatum != null) { string par = "@BisDatum"; cond.Add(string.Format("BelegDatum <= {0}", par)); cmd.AddCmdParameter(typeof(DateTime), ParameterDirection.Input, par, (DateTime)queryData.BisDatum); } if (!string.IsNullOrWhiteSpace(queryData.BelegnummerIntern)) { string par = "@BelegnummerIntern"; cond.Add(string.Format("BelegnummerIntern = {0}", par)); cmd.AddCmdParameter(typeof(string), ParameterDirection.Input, par, queryData.BelegnummerIntern); } return(cond); }