コード例 #1
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);
        }
コード例 #2
0
        public virtual ActionResult ReturnRequest(int subscriptionId)
        {
            var subscription = _subscriptionService.GetOrderById(subscriptionId);

            if (subscription == null || subscription.Deleted || _workContext.CurrentCustomer.Id != subscription.CustomerId)
            {
                return(new HttpUnauthorizedResult());
            }

            if (!_subscriptionProcessingService.IsReturnRequestAllowed(subscription))
            {
                return(RedirectToRoute("HomePage"));
            }

            var model = new SubmitReturnRequestModel();

            model = _returnRequestModelFactory.PrepareSubmitReturnRequestModel(model, subscription);
            return(View(model));
        }