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