Add upcoming renewals page with days-until-renewal indicators
Shows subscriptions nearing renewal with color-coded urgency chips, auto-renew status, and quick manage links. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -142,6 +142,39 @@ class BillingController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
public function upcomingRenewals(Request $request): Response
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
$renewals = $user->subscriptions()
|
||||
->with('plan')
|
||||
->whereIn('stripe_status', ['active', 'trialing'])
|
||||
->whereNotNull('current_period_end')
|
||||
->orderBy('current_period_end')
|
||||
->get()
|
||||
->map(function ($subscription) use ($user) {
|
||||
$service = $user->services()
|
||||
->where('subscription_id', $subscription->id)
|
||||
->first();
|
||||
|
||||
return [
|
||||
'id' => $subscription->id,
|
||||
'plan_name' => $subscription->plan?->name ?? $subscription->type,
|
||||
'plan_price' => $subscription->plan?->price,
|
||||
'billing_cycle' => $subscription->plan?->billing_cycle,
|
||||
'renewal_date' => $subscription->current_period_end,
|
||||
'status' => $subscription->stripe_status,
|
||||
'auto_renew' => $service?->auto_renew ?? true,
|
||||
'service_id' => $service?->id,
|
||||
'days_until_renewal' => now()->diffInDays($subscription->current_period_end, false),
|
||||
];
|
||||
});
|
||||
|
||||
return Inertia::render('Billing/UpcomingRenewals', [
|
||||
'renewals' => $renewals,
|
||||
]);
|
||||
}
|
||||
|
||||
public function setupIntent(Request $request): JsonResponse
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
Reference in New Issue
Block a user