Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }