public static string GetDynamicManagedServiceOrdersQuery(DateTime dteMinimumFirstOrderCreateDate, DateTime dteDWLastModifyDate_OPE, DateTime dteDWLastModifyDate_PL, DateTime dteDWLastModifyDate_PS) { // Get all the config settings from the DB UserConfigurableSystemConfigSettingHelper objUserConfigurableSystemConfigSettingHelper = new UserConfigurableSystemConfigSettingHelper(); List <SystemConfigItem> lstConfigSettings = objUserConfigurableSystemConfigSettingHelper.GetAllSystemConfigSettings(); // Delcare a list for each of the sub-clauses appearing in the WHERE clause List <string> lstCDWQueryPreciseProductCodeListForInClause = new List <string>(); List <string> lstCDWQueryWildcardProductCodeListForLikeClauses = new List <string>(); List <string> lstCDWQuerySourceSystemCodesForInClause = new List <string>(); List <string> lstCDWQueryExcludedRegionsNotInClause = new List <string>(); List <string> lstCDWQueryCountryCodesForInClause = new List <string>(); string strProductCodeListForInClause = String.Empty; string strProductCodeOrClauses = String.Empty; string strSourceSystemCodes = String.Empty; string strExcludedRegionCodes = String.Empty; string strIncludedCountryCodes = String.Empty; // Iterate over all the config settins from the DB, creating a list for each of the ones we need for our dynamic where clause for (int i = 0; i < lstConfigSettings.Count; i++) { string strConfigSettingValue = lstConfigSettings[i].ConfigSettingValue?.Trim(); if (String.IsNullOrEmpty(strConfigSettingValue) == false) { switch (lstConfigSettings[i].ConfigSettingName) { case "CDWQueryPreciseProductCodeListForInClause": lstCDWQueryPreciseProductCodeListForInClause = lstConfigSettings[i].ConfigSettingValue.Split(',').ToList(); strProductCodeListForInClause = SQLQueryBuilder.CombineListItemsIntoDelimitedQuotedStrings(lstCDWQueryPreciseProductCodeListForInClause); break; case "CDWQueryWildcardProductCodeListForLikeClauses": lstCDWQueryWildcardProductCodeListForLikeClauses = lstConfigSettings[i].ConfigSettingValue.Split(',').ToList(); strProductCodeOrClauses = SQLQueryBuilder.CombineListItemsIntoProductCodeLikeORClause(lstCDWQueryWildcardProductCodeListForLikeClauses); break; case "CDWQuerySourceSystemCodesForInClause": lstCDWQuerySourceSystemCodesForInClause = lstConfigSettings[i].ConfigSettingValue.Split(',').ToList(); lstCDWQuerySourceSystemCodesForInClause = lstCDWQuerySourceSystemCodesForInClause.ConvertAll(d => d.ToUpper()); strSourceSystemCodes = SQLQueryBuilder.CombineListItemsIntoDelimitedQuotedStrings(lstCDWQuerySourceSystemCodesForInClause); break; case "CDWQueryExcludedRegionsNotInClause": lstCDWQueryExcludedRegionsNotInClause = lstConfigSettings[i].ConfigSettingValue.Split(',').ToList(); lstCDWQueryExcludedRegionsNotInClause = lstCDWQueryExcludedRegionsNotInClause.ConvertAll(d => d.ToUpper()); strExcludedRegionCodes = SQLQueryBuilder.CombineListItemsIntoDelimitedQuotedStrings(lstCDWQueryExcludedRegionsNotInClause); break; case "CDWQueryIncludedCountryCodes": lstCDWQueryCountryCodesForInClause = lstConfigSettings[i].ConfigSettingValue.Split(',').ToList(); lstCDWQueryCountryCodesForInClause = lstCDWQueryCountryCodesForInClause.ConvertAll(d => d.ToUpper()); strIncludedCountryCodes = SQLQueryBuilder.CombineListItemsIntoDelimitedQuotedStrings(lstCDWQueryCountryCodesForInClause); break; default: break; } } } string strSQL = SQLQueryBuilder.GetSQLStatement_DWOrderAddressesChangeset_DYNAMIC(dteMinimumFirstOrderCreateDate, dteDWLastModifyDate_OPE, dteDWLastModifyDate_PL, dteDWLastModifyDate_PS, strProductCodeListForInClause, strProductCodeOrClauses, strSourceSystemCodes, strExcludedRegionCodes, strIncludedCountryCodes); return(strSQL); }