public async Task <IActionResult> StripeSubscriptions(StripeSubscriptionListOptions options) { options = options ?? new StripeSubscriptionListOptions(); options.Limit = 10; options.Expand = new List <string>() { "data.customer", "data.latest_invoice" }; options.SelectAll = false; var subscriptions = await _stripeAdapter.SubscriptionListAsync(options); options.StartingAfter = subscriptions.LastOrDefault()?.Id; options.EndingBefore = await StripeSubscriptionsGetHasPreviousPage(subscriptions, options) ? subscriptions.FirstOrDefault()?.Id : null; var model = new StripeSubscriptionsModel() { Items = subscriptions.Select(s => new StripeSubscriptionRowModel(s)).ToList(), Prices = (await _stripeAdapter.PriceListAsync(new Stripe.PriceListOptions() { Limit = 100 })).Data, TestClocks = await _stripeAdapter.TestClockListAsync(), Filter = options }; return(View(model)); }
public async Task <IActionResult> StripeSubscriptions([FromForm] StripeSubscriptionsModel model) { if (!ModelState.IsValid) { model.Prices = (await _stripeAdapter.PriceListAsync(new Stripe.PriceListOptions() { Limit = 100 })).Data; model.TestClocks = await _stripeAdapter.TestClockListAsync(); return(View(model)); } if (model.Action == StripeSubscriptionsAction.Export || model.Action == StripeSubscriptionsAction.BulkCancel) { var subscriptions = model.Filter.SelectAll ? await _stripeAdapter.SubscriptionListAsync(model.Filter) : model.Items.Where(x => x.Selected).Select(x => x.Subscription); if (model.Action == StripeSubscriptionsAction.Export) { return(StripeSubscriptionsExport(subscriptions)); } if (model.Action == StripeSubscriptionsAction.BulkCancel) { await StripeSubscriptionsCancel(subscriptions); } } else { if (model.Action == StripeSubscriptionsAction.PreviousPage || model.Action == StripeSubscriptionsAction.Search) { model.Filter.StartingAfter = null; } if (model.Action == StripeSubscriptionsAction.NextPage || model.Action == StripeSubscriptionsAction.Search) { model.Filter.EndingBefore = null; } } return(RedirectToAction("StripeSubscriptions", model.Filter)); }