private SingleEntityDataServiceResponse <ChargeLine> GetChargeDetails(GetChargeLinesDataRequest request)
            {
                ThrowIf.Null(request, "request");
                ThrowIf.Null(request.QueryResultSettings, "request.QueryResultSettings");
                ThrowIf.Null(request.ChargeCode, "request.ChargeCode");

                ChargeL2CacheDataStoreAccessor level2CacheDataAccessor = this.GetChargeL2CacheDataStoreAccessor(request.RequestContext);

                bool       found;
                bool       updateL2Cache;
                string     dataAreaId = request.RequestContext.GetChannelConfiguration().InventLocationDataAreaId;
                ChargeLine result     = DataManager.GetDataFromCache(() => level2CacheDataAccessor.GetChargeDetails(dataAreaId, request.ChargeCode, request.ChargeModule, request.QueryResultSettings), out found, out updateL2Cache);

                if (!found)
                {
                    var query = new SqlPagedQuery(request.QueryResultSettings)
                    {
                        From  = ChargesView,
                        Where = "MARKUPCODE = @MarkupCode AND MODULETYPE = @ModuleType And DATAAREAID = @DataAreaId"
                    };

                    query.Parameters["@MarkupCode"] = request.ChargeCode;
                    query.Parameters["@ModuleType"] = request.ChargeModule;
                    query.Parameters["@DataAreaId"] = dataAreaId;

                    using (DatabaseContext databaseContext = new DatabaseContext(request.RequestContext))
                    {
                        result = databaseContext.ReadEntity <ChargeLine>(query).FirstOrDefault();
                    }

                    if (result == null)
                    {
                        result = new ChargeLine();
                    }

                    updateL2Cache &= result != null;
                }

                if (updateL2Cache)
                {
                    level2CacheDataAccessor.PutChargeDetails(dataAreaId, request.ChargeCode, request.ChargeModule, request.QueryResultSettings, result);
                }

                return(new SingleEntityDataServiceResponse <ChargeLine>(result));
            }
            private EntityDataServiceResponse <ChargeConfiguration> GetChargeConfigurationsByHeader(GetChargeConfigurationsByHeaderDataRequest request)
            {
                ThrowIf.Null(request, "request");
                ThrowIf.Null(request.QueryResultSettings, "request.QueryResultSettings");

                ChargeL2CacheDataStoreAccessor level2CacheDataAccessor = this.GetChargeL2CacheDataStoreAccessor(request.RequestContext);

                bool   found;
                bool   updateL2Cache;
                string dataAreaId = request.RequestContext.GetChannelConfiguration().InventLocationDataAreaId;
                PagedResult <ChargeConfiguration> result = DataManager.GetDataFromCache(() => level2CacheDataAccessor.GetChargeConfigurationsByHeader(dataAreaId, request.QueryResultSettings, request.ChargeType, request.Header), out found, out updateL2Cache);

                if (!found)
                {
                    var query = new SqlPagedQuery(request.QueryResultSettings)
                    {
                        From  = ChargeConfigurationViewName,
                        Where = "DATAAREAID = @DataAreaId"
                    };

                    query.Parameters["@DataAreaId"] = dataAreaId;

                    this.FilterChargeConfigurations(query, request.ChargeType, request.Header);

                    using (DatabaseContext databaseContext = new DatabaseContext(request.RequestContext))
                    {
                        result = databaseContext.ReadEntity <ChargeConfiguration>(query);
                    }

                    updateL2Cache &= result != null;
                }

                if (updateL2Cache)
                {
                    level2CacheDataAccessor.PutChargeConfigurationsByHeader(dataAreaId, request.QueryResultSettings, request.ChargeType, request.Header, result);
                }

                return(new EntityDataServiceResponse <ChargeConfiguration>(result));
            }
            private SingleEntityDataServiceResponse <SalesParameters> GetSalesParameters(GetSalesParametersDataRequest request)
            {
                ThrowIf.Null(request, "request");
                ThrowIf.Null(request.QueryResultSettings, "request.QueryResultSettings");

                ChargeL2CacheDataStoreAccessor level2CacheDataAccessor = this.GetChargeL2CacheDataStoreAccessor(request.RequestContext);
                bool            found;
                bool            updateL2Cache;
                string          dataAreaId = request.RequestContext.GetChannelConfiguration().InventLocationDataAreaId;
                SalesParameters result     = DataManager.GetDataFromCache(() => level2CacheDataAccessor.GetSalesParameters(dataAreaId, request.QueryResultSettings.ColumnSet), out found, out updateL2Cache);

                if (!found)
                {
                    var query = new SqlPagedQuery(QueryResultSettings.SingleRecord)
                    {
                        Select = request.QueryResultSettings.ColumnSet,
                        From   = SalesParametersViewName,
                        Where  = "DATAAREAID = @DataAreaId"
                    };

                    query.Parameters["@DataAreaId"] = dataAreaId;

                    using (DatabaseContext databaseContext = new DatabaseContext(request.RequestContext))
                    {
                        result = databaseContext.ReadEntity <SalesParameters>(query).SingleOrDefault();
                    }

                    updateL2Cache &= result != null;
                }

                if (updateL2Cache)
                {
                    level2CacheDataAccessor.PutSalesParameters(dataAreaId, request.QueryResultSettings.ColumnSet, result);
                }

                return(new SingleEntityDataServiceResponse <SalesParameters>(result));
            }