private List <IShippingRate> RatePackages(List <InternationalPackage> packages) { var rates = new List <IShippingRate>(); var req = new InternationalRequest(); if (!string.IsNullOrWhiteSpace(GlobalSettings.UserId)) { req.UserId = GlobalSettings.UserId; } req.Packages = packages; var svc = new InternationalService(); var res = svc.ProcessRequest(req); if (GlobalSettings.DiagnosticsMode) { _Logger.LogMessage("US Postal Intl. Request: " + svc.LastRequest); _Logger.LogMessage("US Postal Intl. Response: " + svc.LastResponse); } var hasErrors = res.Errors.Count > 0; foreach (InternationalServiceType possibleResponse in Enum.GetValues(typeof(InternationalServiceType))) { var AllPackagesRated = true; var totalRate = 0m; var serviceDesciption = string.Empty; foreach (var p in res.Packages) { var found = p.Postages.FirstOrDefault(y => y.ServiceId == ((int)possibleResponse).ToString()); if (found == null) { AllPackagesRated = false; break; } totalRate += found.Rate; serviceDesciption = HttpUtility.HtmlDecode(found.ServiceDescription); } if (AllPackagesRated && totalRate > 0) { // Rate is good to go for all packages rates.Add(new ShippingRate { EstimatedCost = totalRate, ServiceId = Id, ServiceCodes = ((int)possibleResponse).ToString(), DisplayName = "USPS:" + serviceDesciption }); } } return(rates); }
private List <IShippingRate> RatePackages(List <InternationalPackage> packages) { List <IShippingRate> rates = new List <IShippingRate>(); InternationalRequest req = new InternationalRequest(); req.Packages = packages; InternationalService svc = new InternationalService(); InternationalResponse res = svc.ProcessRequest(req); if (this.GlobalSettings.DiagnosticsMode) { _Logger.LogMessage("US Postal Intl. Request: " + svc.LastRequest); _Logger.LogMessage("US Postal Intl. Response: " + svc.LastResponse); } bool hasErrors = (res.Errors.Count > 0); foreach (InternationalServiceType possibleResponse in Enum.GetValues(typeof(InternationalServiceType))) { bool AllPackagesRated = true; decimal totalRate = 0m; string serviceDesciption = string.Empty; foreach (InternationalPackage p in res.Packages) { InternationalPostage found = p.Postages.Where(y => y.ServiceId == ((int)possibleResponse).ToString()).FirstOrDefault(); if (found == null) { AllPackagesRated = false; break; } totalRate += found.Rate; serviceDesciption = System.Web.HttpUtility.HtmlDecode(found.ServiceDescription); } if (AllPackagesRated && totalRate > 0) { // Rate is good to go for all packages rates.Add(new ShippingRate() { EstimatedCost = totalRate, ServiceId = this.Id, ServiceCodes = ((int)possibleResponse).ToString(), DisplayName = "USPS:" + serviceDesciption }); } } return(rates); }