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); }
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); }