Exemplo n.º 1
0
            /// <summary>
            /// The data service method to get tax code intervals.
            /// </summary>
            /// <param name="request">The data service request.</param>
            /// <returns>The data service response.</returns>
            private EntityDataServiceResponse <TaxCodeInterval> GetTaxCodeIntervals(GetTaxCodeIntervalsDataRequest request)
            {
                ThrowIf.Null(request.ItemTaxGroupId, "itemTaxGroupId");

                var taxDataManager = this.GetDataManagerInstance(request.RequestContext);
                TaxL2CacheDataStoreAccessor level2CacheDataAccessor = (TaxL2CacheDataStoreAccessor)taxDataManager.DataStoreManagerInstance.RegisteredAccessors[DataStoreType.L2Cache];

                bool found;
                bool updateL2Cache;
                ReadOnlyCollection <TaxCodeInterval> result = DataManager.GetDataFromCache(() => level2CacheDataAccessor.GetTaxCodeIntervals(request.SalesTaxGroupId, request.ItemTaxGroupId), out found, out updateL2Cache);

                if (!found)
                {
                    ParameterSet parameters = new ParameterSet();
                    parameters[DatabaseAccessor.ChannelIdVariableName] = request.RequestContext.GetPrincipal().ChannelId;
                    parameters["@nvc_SalesTaxGroup"]  = request.SalesTaxGroupId ?? string.Empty;
                    parameters["@nvc_ItemTaxGroup"]   = request.ItemTaxGroupId ?? string.Empty;
                    parameters["@dt_TransactionDate"] = request.TransactionDate.DateTime;

                    using (SqlServerDatabaseContext databaseContext = new SqlServerDatabaseContext(request))
                    {
                        result = databaseContext.ExecuteStoredProcedure <TaxCodeInterval>(GetTaxCodeIntervalsSprocName, parameters).Results;
                    }

                    updateL2Cache &= result != null &&
                                     result.Count < MaxCachedCollectionSize;
                }

                if (updateL2Cache)
                {
                    level2CacheDataAccessor.PutTaxCodeIntervals(request.SalesTaxGroupId, request.ItemTaxGroupId, request.TransactionDate, result);
                }

                return(new EntityDataServiceResponse <TaxCodeInterval>(result.AsPagedResult()));
            }
Exemplo n.º 2
0
            /// <summary>
            /// The data service method to get the sales tax group for the given predicates.
            /// </summary>
            /// <param name="request">The data service request.</param>
            /// <returns>The data service response.</returns>
            private SingleEntityDataServiceResponse <string> GetSalesTaxGroup(GetSalesTaxGroupDataRequest request)
            {
                ThrowIf.NullOrEmpty(request.Predicates, "predicates");

                var taxDataManager = this.GetDataManagerInstance(request.RequestContext);
                TaxL2CacheDataStoreAccessor level2CacheDataAccessor = (TaxL2CacheDataStoreAccessor)taxDataManager.DataStoreManagerInstance.RegisteredAccessors[DataStoreType.L2Cache];

                bool   found;
                bool   updateL2Cache;
                string result = DataManager.GetDataFromCache(() => level2CacheDataAccessor.GetSalesTaxGroup(request.Predicates), out found, out updateL2Cache);

                if (!found)
                {
                    result = string.Empty;

                    ParameterSet parameters = new ParameterSet();

                    foreach (var predicate in request.Predicates)
                    {
                        parameters["nvc_" + predicate.Key] = predicate.Value;
                    }

                    SalesTaxGroup group;
                    using (SqlServerDatabaseContext databaseContext = new SqlServerDatabaseContext(request))
                    {
                        group = databaseContext.ExecuteStoredProcedure <SalesTaxGroup>(GetTaxRegimeSprocName, parameters).FirstOrDefault();
                    }

                    if (group != null)
                    {
                        result = group.TaxGroupName;
                    }

                    updateL2Cache &= result != null;
                }

                if (updateL2Cache)
                {
                    level2CacheDataAccessor.PutSalesTaxGroup(request.Predicates, result);
                }

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