public static string ApplyFiltersFiltersNew(List <string> wsArgs) { var jss = new JavaScriptSerializer(); if (wsArgs.Count <= 0) { return(jss.Serialize(new ResultStatus("Data not passed"))); } var obj = jss.DeserializeObject(wsArgs[0]); if (obj != null) { var newFilters = WebServiceRequestProcessor.DeserializeFilters(obj); var reportName = wsArgs[1]; var reportSet = AdHocSettings.AdHocConfig.LoadFilteredReportSet(Utility.ReportWebNameToNormal(reportName)); try { if (reportSet.ReportName != AdHocContext.CurrentReportSet.ReportName) { AdHocContext.CurrentReportSet = AdHocSettings.AdHocConfig.LoadFilteredReportSet(Utility.ReportWebNameToNormal(reportName)); } } catch {} var newCollection = new FilterCollection(); var newAdditionalCollection = new FilterCollection(); foreach (DeserializedFilter deserializedFilter in newFilters) { var uid = deserializedFilter.Uid; var columnName = deserializedFilter.Column; if (columnName == null) { throw new NullReferenceException("Column property cannot be null"); } Filter selectedFilter = null; if (reportSet != null) { foreach (Filter filter in reportSet.Filters) { if (filter.Column == columnName) { selectedFilter = filter; } } } if (selectedFilter == null) { // additional filter selectedFilter = new AdditionalFilter(); selectedFilter.Column = columnName; selectedFilter.Description = deserializedFilter.Description; selectedFilter.Not = deserializedFilter.Not; selectedFilter.Operator = FilterData.GetOperatorType(deserializedFilter.Operator); selectedFilter.LinkedColumns = deserializedFilter.LinkedColumns; if (!string.IsNullOrEmpty(deserializedFilter.OperatorFriendlyName)) { string operatorFriendlyName = deserializedFilter.OperatorFriendlyName; if (selectedFilter.dbColumn != null) { var filterOperators = ResponseServer.GetOperatorList(selectedFilter.dbColumn.SqlType, selectedFilter.dbColumn.Table.Type == TableType.StoredProcedure, selectedFilter.dbColumn.FullName); foreach (ListItemCollection opGroup in filterOperators.Values) { foreach (ListItem li in opGroup) { OperatorTypes opType; if ((li.Text == operatorFriendlyName || li.Value == operatorFriendlyName) && OperatorTypes.TryParse(li.Value, true, out opType)) { selectedFilter.Operator = opType; } } } } if (operatorFriendlyName.ToLower() == "begins with") { selectedFilter.Operator = OperatorTypes.BeginsWith; } } } // set filter values var multipleValues = (deserializedFilter.Values.Length > 1 || FilterData.GetControlType(selectedFilter.Operator) == 2); if (!multipleValues) { selectedFilter.Value = deserializedFilter.Values[0]; if (selectedFilter.Value == null) { selectedFilter.Value = ""; } if (selectedFilter.Value is int) { selectedFilter.Operator = OperatorTypes.Equals; } } else { selectedFilter.Values = deserializedFilter.Values; } newAdditionalCollection.Add(selectedFilter); } if (reportSet != null) { reportSet.Filters.Clear(); reportSet.Filters = newCollection; RsDuncan.AddRangeSafe(reportSet.Filters, newAdditionalCollection); } RsDuncan.AddRangeSafe(AdHocContext.CurrentReportSet.Filters, newAdditionalCollection); AdditionalFiltersStorage.StoreAdditionalFiltersInSession(reportName, newAdditionalCollection); if (reportSet != null && reportSet.Summary != null) { string targetReportName = null; foreach (Field field in reportSet.Summary.Fields) { if (!string.IsNullOrEmpty(field.TargetReport)) { targetReportName = field.TargetReport; } } if (targetReportName != null) { reportSet.Summary.Filters.Clear(); reportSet.Summary.Filters = newCollection; RsDuncan.AddRangeSafe(reportSet.Summary.Filters, newAdditionalCollection); AdditionalFiltersStorage.StoreAdditionalFiltersInSession(targetReportName, newAdditionalCollection); } } } return(jss.Serialize(new ResultStatus("OK"))); }
public static string GetActiveAdditionalFilters(List <string> wsArgs) { var reportName = wsArgs[0]; var reportSet = AdHocSettings.AdHocConfig.LoadFilteredReportSet(Utility.ReportWebNameToNormal(reportName)); var isDrillDown = false; string masterName = null; string ddValue = null; if (wsArgs != null) { if (wsArgs.Count > 2) { isDrillDown = true; masterName = wsArgs[1]; ddValue = wsArgs[2]; // not used yet, but reserved for future } } var jss = new JavaScriptSerializer(); var fc = new FilterCollection(); if (reportSet != null && reportSet.Filters.Count > 0) { AddRangeSafe(fc, reportSet.Filters); } // get stored additional filters var ownFilters = AdditionalFiltersStorage.GetAdditionalFiltersFromSession(reportName); AddRangeSafe(fc, ownFilters); // process drilldown data if (reportSet != null && isDrillDown) { var masterFilters = AdditionalFiltersStorage.GetAdditionalFiltersAllFromSession(masterName); foreach (Filter filter in masterFilters) { foreach (JoinedTable joinedTable in reportSet.JoinedTables) { var tableName = joinedTable.TableName; if (filter.dbColumn.Table.FullName == tableName) { AddFilterSafe(fc, filter); } // check linked columns if (!string.IsNullOrEmpty(filter.LinkedColumns)) { var linkedColumns = filter.LinkedColumns.Split(','); foreach (var linkedColumn in linkedColumns) { if (linkedColumn.IndexOf('.') >= 0) { var linkedColumnTable = linkedColumn.Substring(0, linkedColumn.LastIndexOf('.')); if (linkedColumnTable == tableName) { var newFilter = (Filter)filter.Clone(); newFilter.Column = linkedColumn; AddFilterSafe(fc, newFilter); } } } } } } if (ddValue != null && reportSet.DrillDownKey != null) { var ddKey = reportSet.DrillDownKey; var ddFilter = new AdditionalFilter { Operator = OperatorTypes.Equals, Value = ddValue, Column = ddKey }; AddFilterSafe(fc, ddFilter); } } foreach (Filter f in fc) { f.Parameter = true; } var filtersData = new FiltersData(); if (reportSet != null) { filtersData.Initialize(fc, reportSet); } return(jss.Serialize(filtersData)); }