/// <summary> /// The request to get report configuration from data layer. /// </summary> /// <param name="request">The request.</param> /// <returns>The report data set.</returns> private static GetReportDataServiceResponse GetReportData(GetReportDataServiceRequest request) { ReportDataSet outputData; var dataRequest = new GetReportConfigurationDataRequest(request.ReportId, request.QueryResultSettings); ReportConfiguration reportDefinition = request.RequestContext.Runtime.Execute <SingleEntityDataServiceResponse <ReportConfiguration> >(dataRequest, request.RequestContext).Entity; // If reportDefinition is null, throw error. ThrowIf.Null(reportDefinition, "This report is either not configured in database or not allowed for this role."); reportDefinition.SetReportParameters(request.ReportParameters); // Get report data based on its type. if (reportDefinition.DataSourceType.Equals("OLTP", StringComparison.OrdinalIgnoreCase)) { var dataReportRequest = new GetOLTPReportDataRequest(reportDefinition, request.QueryResultSettings); outputData = request.RequestContext.Runtime.Execute <SingleEntityDataServiceResponse <ReportDataSet> >(dataReportRequest, request.RequestContext).Entity; } else { throw new NotSupportedException("The report type of the requested report is not supported."); } return(new GetReportDataServiceResponse(outputData)); }
/// <summary> /// Gets OLTP report data. /// </summary> /// <param name="request">The request with report configuration, locale and settings.</param> /// <returns><see cref="ReportDataSet"/> object.</returns> private SingleEntityDataServiceResponse <ReportDataSet> GetOLTPReportData(GetOLTPReportDataRequest request) { ThrowIf.Null(request.ReportConfiguration, "Parameters are empty."); ReportConfiguration config = request.ReportConfiguration; ParameterSet sqlParameters = new ParameterSet(); // Add channel id and user id to report parameters. if (config.Parameters != null && config.Parameters.Any()) { foreach (CommerceProperty parameter in config.Parameters) { sqlParameters[parameter.Key] = parameter.Value.GetPropertyValue(); } } sqlParameters[ParamChannelId] = request.RequestContext.GetPrincipal().ChannelId; if (config.IsUserBasedReport) { sqlParameters[ParamUserId] = request.RequestContext.GetPrincipal().UserId; } DataSet outputDataSet; using (SqlServerDatabaseContext sqlServerDatabaseContext = new SqlServerDatabaseContext(request)) { outputDataSet = sqlServerDatabaseContext.ExecuteQueryDataSet(config.Query, sqlParameters); } ReportDataSet reportDataSet = null; if (outputDataSet != null && outputDataSet.Tables.Count == 1) { // Get localized strings for the report. if (this.LocalizedStrings == null) { this.LocalizedStrings = this.GetLocalizedReportsStrings(request.RequestContext, request.QueryResultSettings); } outputDataSet.Tables[0].TableName = OutputTableName; if (outputDataSet.Tables[0].Columns.Count > 0) { foreach (DataColumn column in outputDataSet.Tables[0].Columns) { column.ColumnName = this.GetLocalizedLabel(column.ColumnName); } } reportDataSet = new ReportDataSet { ReportId = config.ReportId, Locale = request.RequestContext.LanguageId, Parameters = config.Parameters, HasTotalRow = config.HasTotalRow, HasDisclaimer = config.HasDisclaimer, Output = this.ConvertDataTableToCollection(outputDataSet.Tables[0]) }; } return(new SingleEntityDataServiceResponse <ReportDataSet>(reportDataSet)); }