using Csla.WORMapper; using Stimulsoft.Report; using Stimulsoft.Report.Dictionary; using System; using System.Web; using System.Linq; public static class Utils { const string CurrentThemeCookieKey = "theme", DefaultTheme = "Office2010Black"; static HttpContext Context { get { return HttpContext.Current; } } static HttpRequest Request { get { return Context.Request; } } public static string CurrentTheme { get { if (Request.Cookies[CurrentThemeCookieKey] != null) return HttpUtility.UrlDecode(Request.Cookies[CurrentThemeCookieKey].Value); return DefaultTheme; } } internal static StiReport LoadReport(string reportName, int? consignment) { // Create the report object and load data from xml file StiReport report = new StiReport(); //MFM0815 [Parms for Stock Usage] report.Load(HttpContext.Current.Server.MapPath(reportName)); Utils.SetConsignmentVariable(consignment, report); //Clear the list of databases report.Dictionary.Databases.Clear(); //Add the database and specify its name and the connection string report.Dictionary.Databases.Add(new StiSqlDatabase("CribMaster", Cfg.GetConnectionDescriptor("Base").ConnectionString)); return report; } #region Where Clause Helper methods /// /// Returns where IN clause from CSV string of TransType(s) /// /// /// internal static SQLFilterBuilder GetTransTypeInClause(string transTypeCSV) { if (string.IsNullOrEmpty(transTypeCSV)) return null; string[] transType = transTypeCSV.Split(','); SQLFilterBuilder strFilter = new SQLFilterBuilder(); strFilter.Append("(TypeDescription in ("); string last = transType.Last(); foreach (string item in transType) { strFilter.AppendFormat("{0}", item); if (!item.Equals(last)) strFilter.Append(","); } strFilter.Append("))"); return strFilter; } /// /// Returns where IN clause from CSV string of itemType(s) /// /// /// SQLFilterBuilder internal static SQLFilterBuilder GetItemTypeDescInClause(string ItemTypeCSV) { if (ItemTypeCSV == null) return null; SQLFilterBuilder strFilter = new SQLFilterBuilder(); // convert string to int array string[] itemTypeDescs = ItemTypeCSV.Split(',').Select(n => Convert.ToString(n)).ToArray(); if (itemTypeDescs.Count() > 0) { strFilter.Append("(ItemTypeDesc in ("); string last = itemTypeDescs.Last(); foreach (string item in itemTypeDescs) { strFilter.AppendFormat("{0}", item); if (!item.Equals(last)) strFilter.Append(","); } } strFilter.Append("))"); return strFilter; } /// /// Returns where IN clause from CSV string of itemClass(s) /// /// /// SQLFilterBuilder internal static SQLFilterBuilder GetItemClassInClause(string itemClassesCSV) { if (string.IsNullOrEmpty(itemClassesCSV)) return null; string[] itemClasses = itemClassesCSV.Split(','); SQLFilterBuilder strFilter = new SQLFilterBuilder(); strFilter.Append("(ItemClass in ("); string last = itemClasses.Last(); foreach (string item in itemClasses) { strFilter.AppendFormat("{0}", item); if (!item.Equals(last)) strFilter.Append(","); } strFilter.Append("))"); return strFilter; } /// /// Returns where clause from CSV string SiteID(s) /// /// /// SQLFilterBuilder internal static SQLFilterBuilder GetSiteInClause(string SiteIDCSV) { if (string.IsNullOrEmpty(SiteIDCSV)) return null; string[] siteID = SiteIDCSV.Split(','); SQLFilterBuilder strFilter = new SQLFilterBuilder(); strFilter.Append("(SiteID IN ("); string last = siteID.Last(); foreach (string item in siteID) { //strFilter.Append(" strFilter.AppendFormat("{0}", item); if (!item.Equals(last)) strFilter.Append(","); } strFilter.Append("))"); return strFilter; } /// /// Builds where clasue for consignment (0:all, 1:consignment only, 2:non consignment only) /// /// /// internal static SQLFilterBuilder GetConsignmentWhereClause(int? idx) { SQLFilterBuilder strFilter = new SQLFilterBuilder(); switch (idx.GetValueOrDefault(0)) { case 0: // all strFilter.AppendFormat("(1=1 or Consignment = {0})", 1); break; case 1: // consignment only strFilter.AppendFormat("(Consignment = {0})", 1); break; case 2: // non consignment strFilter.AppendFormat("(Consignment is null or consignment = {0})", 0); break; default: throw new IndexOutOfRangeException("Invalid consignment index. Valid values are 0,1,2."); } return strFilter; } #endregion /// /// /// /// /// private static void SetConsignmentVariable(int? consignment, StiReport report) { switch (consignment) { case 0: report.Dictionary.Variables.Add("vConsignment", " (1=1 or Consignment = 1)"); break; case 1: report.Dictionary.Variables.Add("vConsignment", " (Consignment = 1)"); break; case 2: report.Dictionary.Variables.Add("vConsignment", " (Consignment is null or consignment = 0)"); break; default: break; } } }