/// <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)); }