public OrderResponse SubmitOrder(Order order)
        {
            OrderResponse response;

            try
            {
                var            paymentResult  = _paymentService.Pay(order);
                ShippingResult shippingResult = null;

                if (paymentResult.Success)
                {
                    shippingResult = _shippingService.Ship(order);
                }

                response = new OrderResponse
                {
                    Success        = paymentResult.Success && shippingResult.Success,
                    PaymentResult  = paymentResult,
                    ShippingResult = shippingResult
                };

                _auditLogger.LogOrder(order, response);
            }
            catch (Exception)
            {
                response = new OrderResponse {
                    Success = false
                };
            }

            return(response);
        }