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; }
/// <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); }
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")); } }