Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }