-
-
Notifications
You must be signed in to change notification settings - Fork 108
Expand file tree
/
Copy pathOnboarding.php
More file actions
91 lines (73 loc) · 2.31 KB
/
Onboarding.php
File metadata and controls
91 lines (73 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
namespace App\Livewire\Customer\Developer;
use App\Support\StripeConnectCountries;
use Livewire\Attributes\Computed;
use Livewire\Attributes\Layout;
use Livewire\Attributes\Title;
use Livewire\Component;
#[Layout('components.layouts.dashboard')]
#[Title('Developer Onboarding')]
class Onboarding extends Component
{
public string $country = '';
public string $payoutCurrency = '';
public function mount(): void
{
$developerAccount = auth()->user()->developerAccount;
if ($developerAccount && $developerAccount->hasCompletedOnboarding()) {
$this->redirect(route('customer.developer.dashboard'), navigate: true);
}
if ($developerAccount) {
$this->country = $developerAccount->country ?? '';
$this->payoutCurrency = $developerAccount->payout_currency ?? '';
}
}
public function updatedCountry(string $value): void
{
if (StripeConnectCountries::isSupported($value)) {
$this->payoutCurrency = StripeConnectCountries::defaultCurrency($value);
} else {
$this->payoutCurrency = '';
}
}
#[Computed]
public function developerAccount()
{
return auth()->user()->developerAccount;
}
#[Computed]
public function hasExistingAccount(): bool
{
return $this->developerAccount !== null;
}
/**
* @return array<string, array{name: string, flag: string, default_currency: string, currencies: list<string>}>
*/
#[Computed]
public function countries(): array
{
$countries = StripeConnectCountries::all();
uasort($countries, fn (array $a, array $b) => $a['name'] <=> $b['name']);
return $countries;
}
/**
* @return array<string, string>
*/
#[Computed]
public function availableCurrencies(): array
{
if (! $this->country || ! StripeConnectCountries::isSupported($this->country)) {
return [];
}
$currencies = StripeConnectCountries::availableCurrencies($this->country);
$named = [];
foreach ($currencies as $code) {
$named[$code] = StripeConnectCountries::currencyName($code);
}
return $named;
}
public function render()
{
return view('livewire.customer.developer.onboarding');
}
}