public IHttpActionResult SetDeliveryProvider(CheckoutViewModel model) { try { _checkoutService.ChangeDeliveryMethod(model.SelectedDeliveryMethod.Value); if (model.PaymentWidget != null && model.PaymentWidget.DisplayDeliveryMethods) { // when we change the delivery method, we need to reload the payment widget in order to re-calculate the total order model.PaymentWidget = _paymentMethodViewModelBuilder.BuildWidget(model.SelectedPaymentMethod); } return(Ok(model)); } catch (Exception ex) { this.Log().Error("Error when changing delivery provider", ex); ModelState.AddModelError("general", "checkout.setdeliveryerror".AsWebSiteString()); return(BadRequest(ModelState)); } }