public static string getDependantParameters(string path, string paramName, string paramValue, string[] visibleDependants) { try { var crcRepDef = GetReportDefinition(path); logger.DebugFormat("getDependantParameters: Report {0} User {1} base param {2} value {3} visible dependants {4}", crcRepDef.DisplayName, HttpContext.Current.User.Identity.Name, paramName, paramValue, string.Join(", ", visibleDependants)); // map the parameter values onto the report definition var choiceFactory = new CrcParameterChoiceFactory(); var choiceCollection = choiceFactory.Create(paramValue); var crServices = new CrissCrossLib.CrissCrossServices(); crServices.RefreshDependantParameters(crcRepDef, choiceCollection); // only return visible dependant params back to ui List <CrcParameterDefinition> paramsToReturn = crcRepDef.ParameterDefinitions .Where(p => visibleDependants.Contains(p.Name)).ToList(); string json = CrissCrossWebHelper.SerializeObjectIntoJson <List <CrcParameterDefinition> >(paramsToReturn); return(json); } catch (Exception e) { LogAjaxError(e, "getDependantParameters"); throw e; } }
public void CanConvertEmptyParamString() { string testParam = ""; var fac = new CrcParameterChoiceFactory(); var pcCol = fac.Create(testParam); Assert.IsNotNull(pcCol); Assert.AreEqual(0, pcCol.ParameterChoiceList.Count()); }
public void RunReport() { var crcRepDef = GetReportDefinition(this.ReportPath); string paramString = uxHiddenParamString.Text; SetReportViewerSize(); var choiceFactory = new CrcParameterChoiceFactory(); var choiceCollection = choiceFactory.Create(paramString); var mapResult = crcRepDef.MapParameterChoices(choiceCollection); if (mapResult.MappingValid) { InitialiseReportViewer(this.ReportPath); logger.DebugFormat("RunReport: ReportPath: {0} User {1}", uxReportViewer.ServerReport.ReportPath, User.Identity.Name); var converter = new CrcParameterConverter(); var ssrsParamList = converter.GetReportParametersForSsrsReportViewer(crcRepDef); var userParamList = converter.GetReportParametersForUser(crcRepDef, 15); try { uxReportViewer.ServerReport.SetParameters(ssrsParamList); } catch (ReportServerException rse) { // check for problem with fixed user if (rse.ErrorCode == "rsAccessDenied" && !this.GetImpersonateLoggedOnUser()) { throw new ApplicationException(string.Format("ReportViewer is running as fixed user {0} but was passed a report {1} that it could not open", GetFixedSsrsUsername(), this.ReportPath)); } else { throw rse; } } string executionId = uxReportViewer.ServerReport.GetExecutionId(); logger.DebugFormat("RunReport: running report, executionId is {0}", executionId); if (StoreCrissCrossHistory) { // log executionid, logged in user and param description var historyLogger = new CrissCrossLib.History.CrcHistoryLogger(); historyLogger.LogToCrissCrossHistory(crcRepDef, User.Identity.Name, executionId); } uxParamUserDescription.Text = string.Join("<br/>", userParamList.ToArray()); uxResultsPanel.Visible = true; uxParamSummaryPanel.Visible = true; this.RunningReport = true; } else { // todo - friendly message back to ui throw new ApplicationException(string.Format("invalid params - could not map supplied values to definitions for report {0}. complaints: {1}", crcRepDef.DisplayName, string.Join(", ", mapResult.Complaints.ToArray()))); } }
public void CanConvertSimpleParamString() { string testParam = "District=44"; var fac = new CrcParameterChoiceFactory(); var pcCol = fac.Create(testParam); Assert.IsNotNull(pcCol); Assert.AreEqual(1, pcCol.ParameterChoiceList.Count()); Assert.AreEqual("District", pcCol.ParameterChoiceList[0].Name); Assert.AreEqual("44", pcCol.ParameterChoiceList[0].SingleValue); }
public void CanConvertIsNullParamString() { string testParam = "SomeDate:isnull=true"; var fac = new CrcParameterChoiceFactory(); var pcCol = fac.Create(testParam); Assert.IsNotNull(pcCol); Assert.AreEqual(1, pcCol.ParameterChoiceList.Count()); Assert.AreEqual("SomeDate", pcCol.ParameterChoiceList[0].Name); Assert.IsNull(pcCol.ParameterChoiceList[0].SingleValue); }
public void PrepareReportDefn(string reportPath) { var crServices = new CrissCrossLib.CrissCrossServices(); var crcRepDefn = crServices.GetReportDefn(reportPath, User.Identity.Name); if (!String.IsNullOrEmpty(this.InitialParameterString)) { var choiceFactory = new CrcParameterChoiceFactory(); var choiceCollection = choiceFactory.Create(this.InitialParameterString); if (crcRepDefn.HasDependantParameters) { crServices.RefreshDependantParameters(crcRepDefn, choiceCollection); } else { var mapResult = crcRepDefn.MapParameterChoices(choiceCollection); if (!mapResult.MappingValid) { throw new ApplicationException(String.Format("Could not apply parameters to report {0}. problems: {1}", crcRepDefn.DisplayName, String.Join(", ", mapResult.Complaints.ToArray()))); } } } uxReportName.Text = crcRepDefn.DisplayName; string combinedDesc = BuildCombinedDescription(crcRepDefn); if (!string.IsNullOrEmpty(combinedDesc)) { uxReportHint.Text = combinedDesc; } else { uxReportDescriptionPanel.Visible = false; } uxReportFolderLink.Text = crcRepDefn.GetReportFolder(); uxReportFolderLink.NavigateUrl = string.Format("AllCatalog.aspx?Folder={0}", Server.UrlEncode(crcRepDefn.GetReportFolder())); uxResultsPanel.Visible = false; // stash it in session Session[crcRepDefn.ReportPath] = crcRepDefn; }
public void CanConvertParamStringWithRepeatingName() { string testParam = "District=44&Customer=55445&District=77"; var fac = new CrcParameterChoiceFactory(); var pcCol = fac.Create(testParam); Assert.IsNotNull(pcCol); Assert.AreEqual(2, pcCol.ParameterChoiceList.Count()); var p1 = pcCol.ParameterChoiceList.FirstOrDefault(p => p.Name == "District"); Assert.IsNotNull(p1); Assert.AreEqual(2, p1.Values.Count()); Assert.IsNotNull(p1.Values.FirstOrDefault(v => v == "44")); Assert.IsNotNull(p1.Values.FirstOrDefault(v => v == "77")); var p2 = pcCol.ParameterChoiceList.FirstOrDefault(p => p.Name == "Customer"); Assert.IsNotNull(p2); Assert.AreEqual("55445", p2.SingleValue); }
public void CanConvertParamStringWithSeveralClauses() { string testParam = "District=44&Customer=55445&Product=8889"; var fac = new CrcParameterChoiceFactory(); var pcCol = fac.Create(testParam); Assert.IsNotNull(pcCol); Assert.AreEqual(3, pcCol.ParameterChoiceList.Count()); var p1 = pcCol.ParameterChoiceList.FirstOrDefault(p => p.Name == "District"); Assert.IsNotNull(p1); Assert.AreEqual("44", p1.SingleValue); var p2 = pcCol.ParameterChoiceList.FirstOrDefault(p => p.Name == "Customer"); Assert.IsNotNull(p2); Assert.AreEqual("55445", p2.SingleValue); var p3 = pcCol.ParameterChoiceList.FirstOrDefault(p => p.Name == "Product"); Assert.AreEqual("8889", p3.SingleValue); }
public void CanConvertParamStringWithUrlEncodedContent() { // this is the kind of encoding that comes back from the execution log string testParam = "District=one%3Dtwo&Customer=Red %26 Black"; var fac = new CrcParameterChoiceFactory(); var pcCol = fac.Create(testParam); Assert.IsNotNull(pcCol); Assert.AreEqual(2, pcCol.ParameterChoiceList.Count()); var p1 = pcCol.ParameterChoiceList.FirstOrDefault(p => p.Name == "District"); Assert.IsNotNull(p1); Assert.AreEqual(1, p1.Values.Count()); Assert.AreEqual("one=two", p1.SingleValue); var p2 = pcCol.ParameterChoiceList.FirstOrDefault(p => p.Name == "Customer"); Assert.IsNotNull(p2); Assert.AreEqual(1, p2.Values.Count()); Assert.AreEqual("Red & Black", p2.SingleValue); }