Skip to content

Commit a1c0b4d

Browse files
committed
update paddle
1 parent afcc377 commit a1c0b4d

51 files changed

Lines changed: 904 additions & 182 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Billing;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Http\RedirectResponse;
7+
use Illuminate\Http\Request;
8+
use Inertia\Inertia;
9+
use Inertia\Response;
10+
11+
class BillingController extends Controller
12+
{
13+
public function index(Request $request): Response
14+
{
15+
$user = $request->user();
16+
$subscription = $user->subscription('default');
17+
18+
$invoices = $user->transactions()
19+
->orderBy('billed_at', 'desc')
20+
->get()
21+
->map(fn ($invoice) => [
22+
'id' => $invoice->id,
23+
'number' => $invoice->invoice_number,
24+
'amount' => $invoice->total,
25+
'tax' => $invoice->tax,
26+
'currency' => $invoice->currency,
27+
'status' => $invoice->status,
28+
'billed_at' => $invoice->billed_at?->toIso8601String(),
29+
'url' => route('billing.download-invoice', $invoice),
30+
]);
31+
32+
return Inertia::render('billing/index', [
33+
'subscription' => $subscription ? [
34+
'id' => $subscription->paddle_id,
35+
'status' => $subscription->status,
36+
'type' => $subscription->type,
37+
'trial_ends_at' => $subscription->trial_ends_at?->toIso8601String(),
38+
'paused_at' => $subscription->paused_at?->toIso8601String(),
39+
'ends_at' => $subscription->ends_at?->toIso8601String(),
40+
'currentPeriodEndsAt' => $subscription->currentPeriodEndsAt()?->toIso8601String(),
41+
'price_id' => $subscription->items()->first()?->price_id,
42+
] : null,
43+
'invoices' => $invoices,
44+
'upcomingInvoice' => null,
45+
'customer' => [
46+
'paddle_id' => $user->paddle_id,
47+
'name' => $user->name,
48+
'email' => $user->email,
49+
],
50+
'plans' => [
51+
'monthly' => [
52+
'price_id' => config('subscription.monthly_price_id'),
53+
],
54+
'yearly' => [
55+
'price_id' => config('subscription.yearly_price_id'),
56+
],
57+
],
58+
]);
59+
}
60+
61+
public function updatePaymentMethod(Request $request): RedirectResponse
62+
{
63+
$session = $request->user()->updatePaymentMethod();
64+
$session->returnTo(url()->current());
65+
66+
return redirect()->to($session->url());
67+
}
68+
69+
public function switchPlan(Request $request): RedirectResponse
70+
{
71+
$request->validate([
72+
'plan' => ['required', 'string', 'in:monthly,yearly'],
73+
]);
74+
75+
$user = $request->user();
76+
$plan = $request->input('plan');
77+
78+
$priceId = $plan === 'yearly'
79+
? config('subscription.yearly_price_id')
80+
: config('subscription.monthly_price_id');
81+
82+
if (! $user->subscription('default')) {
83+
return redirect()->route('subscribe', ['plan' => $plan]);
84+
}
85+
86+
$user->subscription('default')->swap($priceId);
87+
88+
Inertia::flash('toast', [
89+
'type' => 'success',
90+
'message' => __('Plan switched successfully.'),
91+
]);
92+
93+
return redirect()->route('billing.index');
94+
}
95+
96+
public function pause(Request $request): RedirectResponse
97+
{
98+
$request->user()->subscription('default')->pause();
99+
100+
Inertia::flash('toast', [
101+
'type' => 'success',
102+
'message' => __('Subscription paused.'),
103+
]);
104+
105+
return redirect()->route('billing.index');
106+
}
107+
108+
public function resume(Request $request): RedirectResponse
109+
{
110+
$request->user()->subscription('default')->resume();
111+
112+
Inertia::flash('toast', [
113+
'type' => 'success',
114+
'message' => __('Subscription resumed.'),
115+
]);
116+
117+
return redirect()->route('billing.index');
118+
}
119+
120+
public function cancel(Request $request): RedirectResponse
121+
{
122+
$request->user()->subscription('default')->cancel();
123+
124+
Inertia::flash('toast', [
125+
'type' => 'success',
126+
'message' => __('Subscription cancelled.'),
127+
]);
128+
129+
return redirect()->route('billing.index');
130+
}
131+
132+
public function downloadInvoice(Request $request, $invoice): RedirectResponse
133+
{
134+
if ($invoice->url) {
135+
return redirect()->to($invoice->url);
136+
}
137+
138+
return redirect()->back();
139+
}
140+
}

public/build/assets/animations-BEm6ugTn.js renamed to public/build/assets/animations-pOQyhpLo.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/build/assets/app-3EKIAfci.css

Lines changed: 0 additions & 2 deletions
This file was deleted.

public/build/assets/app-B8hU3u3s.css

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/build/assets/appearance-CMCYF-Sg.js renamed to public/build/assets/appearance-BRp3vIYJ.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/build/assets/arrow-left-DFRIvOKp.js renamed to public/build/assets/arrow-left-CUmL-DV2.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)