private void UpdatePayments(CheckoutViewModel viewModel, ICart cart)
        {
            viewModel.PaymentMethodViewModels = _paymentMethodViewModelFactory.GetPaymentMethodViewModels();
            var methodViewModels = viewModel.PaymentMethodViewModels.ToList();

            if (!methodViewModels.Any())
            {
                return;
            }

            var defaultPaymentMethod  = methodViewModels.FirstOrDefault(p => p.IsDefault) ?? methodViewModels.First();
            var selectedPaymentMethod = viewModel.Payment == null ?
                                        defaultPaymentMethod :
                                        methodViewModels.Single(p => p.SystemKeyword == viewModel.Payment.SystemKeyword);

            viewModel.Payment  = selectedPaymentMethod.PaymentOption;
            viewModel.Payments = methodViewModels.Where(x => cart.GetFirstForm().Payments.Any(p => p.PaymentMethodId == x.PaymentMethodId))
                                 .Select(x => x.PaymentOption)
                                 .OfType <PaymentOptionBase>()
                                 .ToList();

            foreach (var viewModelPayment in viewModel.Payments)
            {
                viewModelPayment.Amount =
                    new Money(
                        cart.GetFirstForm().Payments
                        .FirstOrDefault(p => p.PaymentMethodId == viewModelPayment.PaymentMethodId)?.Amount ?? 0,
                        cart.Currency);
            }

            if (!cart.GetFirstForm().
                Payments.Any())
            {
                return;
            }

            var method = methodViewModels.FirstOrDefault(
                x => x.PaymentMethodId == cart.GetFirstForm().
                Payments.FirstOrDefault().
                PaymentMethodId);

            if (method == null)
            {
                return;
            }

            viewModel.SelectedPayment = method.Description;
            var payment = cart.GetFirstForm().
                          Payments.FirstOrDefault();
            var creditCardPayment = payment as ICreditCardPayment;

            if (creditCardPayment != null)
            {
                viewModel.SelectedPayment +=
                    $" - ({creditCardPayment.CreditCardNumber.Substring(creditCardPayment.CreditCardNumber.Length - 4)})";
            }
        }