Exemplo n.º 1
0
        public AddressUpdateResponse UpdateAddress(ICart cart, AddressUpdateRequest addressUpdateRequest)
        {
            var configuration = GetConfiguration(cart.Market);
            var shipment      = cart.GetFirstShipment();

            if (shipment != null)
            {
                shipment.ShippingAddress = addressUpdateRequest.ShippingAddress.ToOrderAddress(cart);
                _orderRepository.Save(cart);
            }

            var totals = _orderGroupTotalsCalculator.GetTotals(cart);
            var result = new AddressUpdateResponse
            {
                OrderAmount      = AmountHelper.GetAmount(totals.Total),
                OrderTaxAmount   = AmountHelper.GetAmount(totals.TaxTotal),
                OrderLines       = GetOrderLines(cart, totals, configuration.SendProductAndImageUrl),
                PurchaseCurrency = cart.Currency.CurrencyCode,
                ShippingOptions  = configuration.ShippingOptionsInIFrame ? GetShippingOptions(cart, cart.Currency, ContentLanguage.PreferredCulture) : Enumerable.Empty <ShippingOption>()
            };

            if (ServiceLocator.Current.TryGetExistingInstance(out ICheckoutOrderDataBuilder checkoutOrderDataBuilder))
            {
                checkoutOrderDataBuilder.Build(result, cart, configuration);
            }
            return(result);
        }
Exemplo n.º 2
0
        public virtual AddressUpdateResponse UpdateAddress(ICart cart, CallbackAddressUpdateRequest addressUpdateRequest)
        {
            var configuration      = GetConfiguration(cart.MarketId);
            var shipment           = cart.GetFirstShipment();
            var validationIssues   = new Dictionary <ILineItem, List <ValidationIssue> >();
            var rewardDescriptions = Enumerable.Empty <RewardDescription>();

            if (shipment != null)
            {
                shipment.ShippingAddress = addressUpdateRequest.ShippingCheckoutAddress.ToOrderAddress(cart);
                validationIssues         = _klarnaCartValidator.ValidateCart(cart);
                rewardDescriptions       = _klarnaCartValidator.ApplyDiscounts(cart);
                _orderRepository.Save(cart);
            }

            var totals = _orderGroupCalculator.GetOrderGroupTotals(cart);
            var result = new AddressUpdateResponse
            {
                OrderAmount      = AmountHelper.GetAmount(totals.Total),
                OrderTaxAmount   = AmountHelper.GetAmount(totals.TaxTotal),
                OrderLines       = GetOrderLines(cart, totals, configuration.SendProductAndImageUrl),
                PurchaseCurrency = cart.Currency.CurrencyCode,
                ShippingOptions  = configuration.ShippingOptionsInIFrame
                    ? GetShippingOptions(cart, cart.Currency)
                    : Enumerable.Empty <ShippingOption>(),
                ValidationIssues   = validationIssues,
                RewardDescriptions = rewardDescriptions
            };

            if (ServiceLocator.Current.TryGetExistingInstance(out ICheckoutOrderDataBuilder checkoutOrderDataBuilder))
            {
                checkoutOrderDataBuilder.Build(result, cart, configuration);
            }

            return(result);
        }
        public AddressUpdateResponse Build(AddressUpdateResponse addressUpdateResponse, ICart cart, CheckoutConfiguration checkoutConfiguration)
        {
            UpdateOrderLines(addressUpdateResponse.OrderLines, checkoutConfiguration);

            return(addressUpdateResponse);
        }