public void ReloadPurchasingLimits(int orderMonth) { DistributorPurchasingLimitsSourceType source = GetDistributorPurchasingLimitsSource(_currentLoggedInCountry, _distributorId); if (source == DistributorPurchasingLimitsSourceType.HMS) { var HMSLimits = LoadPurchasingLimitsFromDB(DistributorPurchasingLimitsSourceType.HMS); if (HMSLimits.Any()) { _applicableLimits = HMSLimits; WritePurchasingLimitsToDB(HMSLimits); SaveToCache(); } } }
/// <summary> /// check InternetOrdering DB first, if DS's limits not met, check HMS -- to reduce calls /// </summary> private void LoadLimits() { try { bool bCheckFusion = checkSQLPurchasingLimits(_processingCountry, _distributorLevel); if (bCheckFusion) { this._applicableLimits = null; DistributorPurchasingLimitsSourceType source = GetDistributorPurchasingLimitsSource(_currentLoggedInCountry, _distributorId); if (source == DistributorPurchasingLimitsSourceType.HMS) { this._applicableLimits = LoadPurchasingLimitsFromDB(DistributorPurchasingLimitsSourceType.HMS); } if (this._applicableLimits == null) { this._applicableLimits = LoadPurchasingLimitsFromDB(source = DistributorPurchasingLimitsSourceType.InternetOrdering); } if (this._applicableLimits != null) { foreach (var al in _applicableLimits) { if ((al as PurchasingLimits_V01).RemainingVolume < -1) { (al as PurchasingLimits_V01).RemainingVolume = 0; } } } // if no SQL data to start with? if (source == DistributorPurchasingLimitsSourceType.InternetOrdering) { if (_applicableLimits == null || _applicableLimits.Count() == 0 || (HLConfigManager.Configurations.DOConfiguration.GetPurchaseLimitsFromFusion && _applicableLimits.Where(l => (l as PurchasingLimits_V01).LimitsRestrictionType == LimitsRestrictionType.PurchasingLimits).Count() == 1)) { this._applicableLimits = LoadPurchasingLimitsFromDB(DistributorPurchasingLimitsSourceType.HMS); } } } } catch (Exception ex) { HL.Common.Logging.LoggerHelper.Error( string.Format( "Error LoadLimits in PurchaseRestrictionManager for: DS:{0} - Country:{1}, {2}", _distributorId, _currentLoggedInCountry, ex)); } }
/// <summary> /// load limits from Internet or HMS, return two months limits /// </summary> /// <param name="source"></param> /// <returns></returns> private List <PurchasingLimits> LoadPurchasingLimitsFromDB(DistributorPurchasingLimitsSourceType source) { List <PurchasingLimits> limits = new List <PurchasingLimits>(); using (var proxy = ServiceClientProvider.GetOrderServiceProxy()) { try { var currentLocalTime = HL.Common.Utilities.DateUtils.GetCurrentLocalTime(_currentLoggedInCountry); var request = new GetDistributorPurchasingLimitsRequest_V02 { DistributorID = _distributorId, CountryCode = _currentLoggedInCountry, Year = currentLocalTime.Year, Month = currentLocalTime.Month, Source = source, LimitPeriod = HLConfigManager.Configurations.DOConfiguration.PurchasingLimitRestrictionPeriod, // this is applicable only to purchasing limits }; var response = proxy.GetDistributorPurchasingLimits(new GetDistributorPurchasingLimitsRequest(request)).GetDistributorPurchasingLimitsResult as GetDistributorPurchasingLimitsResponse_V02; if (response != null && response.Status == MyHerbalife3.Ordering.ServiceProvider.OrderSvc.ServiceResponseStatusType.Success) { limits = response.PurchasingLimits; } } catch (Exception ex) { HL.Common.Logging.LoggerHelper.Exception("System.Exception", new Exception( string.Format( "Error LoadPurchasingLimitsFromDB from Order service for: DS:{0} - Country:{1}, {2}", _distributorId, _currentLoggedInCountry, ex))); } } return(limits); }