コード例 #1
0
        protected virtual void PrepareRecurringPaymentModel(RecurringPaymentModel model,
                                                            RecurringPayment recurringPayment)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }

            if (recurringPayment == null)
            {
                throw new ArgumentNullException("recurringPayment");
            }

            model.Id                    = recurringPayment.Id;
            model.CycleLength           = recurringPayment.CycleLength;
            model.CyclePeriodId         = recurringPayment.CyclePeriodId;
            model.CyclePeriodStr        = recurringPayment.CyclePeriod.GetLocalizedEnum(_localizationService, _workContext);
            model.TotalCycles           = recurringPayment.TotalCycles;
            model.StartDate             = _dateTimeHelper.ConvertToUserTime(recurringPayment.StartDateUtc, DateTimeKind.Utc).ToString();
            model.IsActive              = recurringPayment.IsActive;
            model.NextPaymentDate       = recurringPayment.NextPaymentDate.HasValue ? _dateTimeHelper.ConvertToUserTime(recurringPayment.NextPaymentDate.Value, DateTimeKind.Utc).ToString() : "";
            model.CyclesRemaining       = recurringPayment.CyclesRemaining;
            model.InitialSubscriptionId = recurringPayment.InitialSubscription.Id;
            var customer = recurringPayment.InitialSubscription.Customer;

            model.CustomerId                = customer.Id;
            model.CustomerEmail             = customer.IsRegistered() ? customer.Email : _localizationService.GetResource("Admin.Customers.Guest");
            model.PaymentType               = _paymentService.GetRecurringPaymentType(recurringPayment.InitialSubscription.PaymentMethodSystemName).GetLocalizedEnum(_localizationService, _workContext);
            model.CanCancelRecurringPayment = _subscriptionProcessingService.CanCancelRecurringPayment(_workContext.CurrentCustomer, recurringPayment);
            model.LastPaymentFailed         = recurringPayment.LastPaymentFailed;
        }
コード例 #2
0
        /// <summary>
        /// Prepare the customer subscription list model
        /// </summary>
        /// <returns>Customer subscription list model</returns>
        public virtual CustomerSubscriptionListModel PrepareCustomerSubscriptionListModel()
        {
            var model         = new CustomerSubscriptionListModel();
            var subscriptions = _subscriptionService.SearchSubscriptions(storeId: _storeContext.CurrentStore.Id,
                                                                         customerId: _workContext.CurrentCustomer.Id);

            foreach (var subscription in subscriptions)
            {
                var subscriptionModel = new CustomerSubscriptionListModel.SubscriptionDetailsModel
                {
                    Id        = subscription.Id,
                    CreatedOn = _dateTimeHelper.ConvertToUserTime(subscription.CreatedOnUtc, DateTimeKind.Utc),
                    SubscriptionStatusEnum = subscription.SubscriptionStatus,
                    SubscriptionStatus     = subscription.SubscriptionStatus.GetLocalizedEnum(_localizationService, _workContext),
                    PaymentStatus          = subscription.PaymentStatus.GetLocalizedEnum(_localizationService, _workContext),

                    IsReturnRequestAllowed   = _subscriptionProcessingService.IsReturnRequestAllowed(subscription),
                    CustomSubscriptionNumber = subscription.CustomSubscriptionNumber
                };
                var subscriptionTotalInCustomerCurrency = _currencyService.ConvertCurrency(subscription.SubscriptionTotal, subscription.CurrencyRate);
                subscriptionModel.SubscriptionTotal = _priceFormatter.FormatPrice(subscriptionTotalInCustomerCurrency, true, subscription.CustomerCurrencyCode, false, _workContext.WorkingLanguage);

                model.Subscriptions.Add(subscriptionModel);
            }

            var recurringPayments = _subscriptionService.SearchRecurringPayments(_storeContext.CurrentStore.Id,
                                                                                 _workContext.CurrentCustomer.Id);

            foreach (var recurringPayment in recurringPayments)
            {
                var recurringPaymentModel = new CustomerSubscriptionListModel.RecurringSubscriptionModel
                {
                    Id                        = recurringPayment.Id,
                    StartDate                 = _dateTimeHelper.ConvertToUserTime(recurringPayment.StartDateUtc, DateTimeKind.Utc).ToString(),
                    CycleInfo                 = string.Format("{0} {1}", recurringPayment.CycleLength, recurringPayment.CyclePeriod.GetLocalizedEnum(_localizationService, _workContext)),
                    NextPayment               = recurringPayment.NextPaymentDate.HasValue ? _dateTimeHelper.ConvertToUserTime(recurringPayment.NextPaymentDate.Value, DateTimeKind.Utc).ToString() : "",
                    TotalCycles               = recurringPayment.TotalCycles,
                    CyclesRemaining           = recurringPayment.CyclesRemaining,
                    InitialSubscriptionId     = recurringPayment.InitialSubscription.Id,
                    InitialSubscriptionNumber = recurringPayment.InitialSubscription.CustomSubscriptionNumber,
                    CanCancel                 = _subscriptionProcessingService.CanCancelRecurringPayment(_workContext.CurrentCustomer, recurringPayment),
                    CanRetryLastPayment       = _subscriptionProcessingService.CanRetryLastRecurringPayment(_workContext.CurrentCustomer, recurringPayment)
                };

                model.RecurringSubscriptions.Add(recurringPaymentModel);
            }

            return(model);
        }
コード例 #3
0
        public virtual ActionResult CancelRecurringPayment(FormCollection form)
        {
            if (!_workContext.CurrentCustomer.IsRegistered())
            {
                return(new HttpUnauthorizedResult());
            }

            //get recurring payment identifier
            int recurringPaymentId = 0;

            foreach (var formValue in form.AllKeys)
            {
                if (formValue.StartsWith("cancelRecurringPayment", StringComparison.InvariantCultureIgnoreCase))
                {
                    recurringPaymentId = Convert.ToInt32(formValue.Substring("cancelRecurringPayment".Length));
                }
            }

            var recurringPayment = _subscriptionService.GetRecurringPaymentById(recurringPaymentId);

            if (recurringPayment == null)
            {
                return(RedirectToRoute("CustomerSubscriptions"));
            }

            if (_subscriptionProcessingService.CanCancelRecurringPayment(_workContext.CurrentCustomer, recurringPayment))
            {
                var errors = _subscriptionProcessingService.CancelRecurringPayment(recurringPayment);

                var model = _subscriptionModelFactory.PrepareCustomerSubscriptionListModel();
                model.RecurringPaymentErrors = errors;

                return(View(model));
            }
            else
            {
                return(RedirectToRoute("CustomerSubscriptions"));
            }
        }