Esempio n. 1
0
        public void Shipping_via_Ups()
        {
            var calc  = new ShippingCostCalculator();
            var order = Mother.CreateOrder();
            var cost  = calc.Cost(order, ShippingCostCalculator.UpsStrategy);

            Assert.AreEqual(4.25d, cost);
        }
Esempio n. 2
0
        public void Shipping_Via_FedEx()
        {
            var calc  = new ShippingCostCalculator();
            var order = Mother.CreateOrder();
            var cost  = calc.Cost(order, ShippingCostCalculator.FedExStrategy);

            Assert.AreEqual(5, 00d, cost);
        }
Esempio n. 3
0
        public void Shipping_via_Usps()
        {
            var strategy = new UspsShippingCostStrategy();
            var calc     = new ShippingCostCalculator(strategy);
            var order    = Mother.CreateOrder();
            var cost     = calc.Cost(order);

            Assert.AreEqual(3, 00d, cost);
        }
Esempio n. 4
0
        public override string GenerateShippingLabelFor(Order o)
        {
            var shippingCost = ShippingCostCalculator.GetCost(o.Recipient.Country, o.Sender.Country, o.TotalWeight);

            return($"Shipping Id: {$"SWE-{Guid.NewGuid()}" } {Environment.NewLine}" +
                   $"To: {o.Recipient.To} {Environment.NewLine}" +
                   $"Order total: {o.Total} {Environment.NewLine}" +
                   $"Tax: {TaxOptions} {Environment.NewLine}" +
                   $"Shipping Cost: {shippingCost}");
        }
Esempio n. 5
0
        public override string GenerateShippingLabelFor(Order o)
        {
            if (o.Recipient.Country != o.Sender.Country)
            {
                throw new NotSupportedException("International shipping not supported");
            }

            var shippingCost = ShippingCostCalculator.GetCost(o.Recipient.Country, o.Sender.Country, o.TotalWeight);

            return($"Shipping Id: AUS-{Guid.NewGuid()} {Environment.NewLine}" +
                   $"To: {o.Recipient.To} {Environment.NewLine}" +
                   $"Order total: {o.Total} {Environment.NewLine}" +
                   $"Tax: {TaxOptions} {Environment.NewLine}" +
                   $"Shipping Cost: {shippingCost}");
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            // доставка по EMS
            var emsStrategy = new EMSStrategy();
            // доставка по USP
            var upsStrategy = new UPSStrategy();
            // доставка по FeDex
            var fedexStrategy = new FEDEXStrategy();

            var shippingCostCalculator = new ShippingCostCalculator();

            // расчет для EMS
            shippingCostCalculator.Strategy = emsStrategy;
            var result = shippingCostCalculator.Calculate(new Order());

            // расчет для USP
            shippingCostCalculator.Strategy = upsStrategy;
            result = shippingCostCalculator.Calculate(new Order());

            // расчет для FeDex
            shippingCostCalculator.Strategy = fedexStrategy;
            result = shippingCostCalculator.Calculate(new Order());
        }
        public string Finalize()
        {
            #region Create Shipping Provider
            ShippingProvider shippingProvider;

            if (order.Sender.Country == "Australia")
            {
                #region Australia Post Shipping Provider
                var shippingCostCalculator = new ShippingCostCalculator(
                    internationalShippingFee: 250,
                    extraWeightFee: 500
                    )
                {
                    ShippingType = ShippingType.Standard
                };

                var customsHandlingOptions = new CustomsHandlingOptions
                {
                    TaxOptions = TaxOptions.PrePaid
                };

                var insuranceOptions = new InsuranceOptions
                {
                    ProviderHasInsurance            = false,
                    ProviderHasExtendedInsurance    = false,
                    ProviderRequiresReturnOnDamange = false
                };

                shippingProvider = new AustraliaPostShippingProvider("CLIENT_ID",
                                                                     "SECRET",
                                                                     shippingCostCalculator,
                                                                     customsHandlingOptions,
                                                                     insuranceOptions);
                #endregion
            }
            else if (order.Sender.Country == "Sweden")
            {
                #region Swedish Postal Service Shipping Provider
                var shippingCostCalculator = new ShippingCostCalculator(
                    internationalShippingFee: 50,
                    extraWeightFee: 100
                    )
                {
                    ShippingType = ShippingType.Express
                };

                var customsHandlingOptions = new CustomsHandlingOptions
                {
                    TaxOptions = TaxOptions.PayOnArrival
                };

                var insuranceOptions = new InsuranceOptions
                {
                    ProviderHasInsurance            = true,
                    ProviderHasExtendedInsurance    = false,
                    ProviderRequiresReturnOnDamange = false
                };

                shippingProvider = new SwedishPostalServiceShippingProvider("API_KEY",
                                                                            shippingCostCalculator,
                                                                            customsHandlingOptions,
                                                                            insuranceOptions);
                #endregion
            }
            else
            {
                throw new NotSupportedException("No shipping provider found for origin country");
            }
            #endregion

            order.ShippingStatus = ShippingStatus.ReadyForShippment;

            return(shippingProvider.GenerateShippingLabelFor(order));
        }