Пример #1
0
        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)})";
            }
        }
Пример #2
0
        public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            var systemKeyword           = bindingContext.ValueProvider.GetValue("SystemKeyword").AttemptedValue;
            var paymentMethodViewModels = _paymentMethodViewModelFactory.GetPaymentMethodViewModels();
            var selectedPaymentMethod   = paymentMethodViewModels.FirstOrDefault(p => p.SystemKeyword == systemKeyword);

            bindingContext.ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, selectedPaymentMethod.PaymentOption.GetType());
            return(base.BindModel(controllerContext, bindingContext));
        }
        private void UpdatePayment(CheckoutViewModel viewModel)
        {
            viewModel.PaymentMethodViewModels = _paymentMethodViewModelFactory.GetPaymentMethodViewModels();
            var selectedPaymentMethod = viewModel.Payment == null ? 
                viewModel.PaymentMethodViewModels.First() :
                viewModel.PaymentMethodViewModels.Single(p => p.SystemName == viewModel.Payment.SystemName);

            viewModel.Payment = PaymentMethodViewModelResolver.Resolve(selectedPaymentMethod.SystemName, _orderFactory);
            viewModel.Payment.Description = selectedPaymentMethod.Description;
            viewModel.Payment.SystemName = selectedPaymentMethod.SystemName;
            viewModel.Payment.PaymentMethod.PaymentMethodId = selectedPaymentMethod.PaymentMethodId;
        }
        public Task BindModelAsync(ModelBindingContext bindingContext)
        {
            var systemKeyword = bindingContext.ValueProvider.GetValue("SystemKeyword").FirstValue;

            if (string.IsNullOrEmpty(systemKeyword))
            {
                return(Task.CompletedTask);
            }

            var paymentMethodViewModels = _paymentMethodViewModelFactory.GetPaymentMethodViewModels();
            var selectedPaymentMethod   = paymentMethodViewModels.FirstOrDefault(p => p.SystemKeyword == systemKeyword);

            bindingContext.ModelMetadata = _modelMetadataProvider.GetMetadataForType(selectedPaymentMethod?.PaymentOption.GetType());
            return(Task.CompletedTask);
        }