Merge registration fields

This commit is contained in:
Benjamin Beganović 2024-03-27 17:36:31 +01:00
parent c47cebac0e
commit 3473bbe3f7

View File

@ -14,12 +14,9 @@ namespace App\Livewire\BillingPortal\Authentication;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Livewire\Component; use Livewire\Component;
use Illuminate\Support\Str;
use App\Models\Subscription; use App\Models\Subscription;
use App\Models\ClientContact; use App\Models\ClientContact;
use App\Factory\ClientFactory;
use App\Jobs\Mail\NinjaMailerJob; use App\Jobs\Mail\NinjaMailerJob;
use App\DataMapper\ClientSettings;
use App\Mail\Subscription\OtpCode; use App\Mail\Subscription\OtpCode;
use App\Jobs\Mail\NinjaMailerObject; use App\Jobs\Mail\NinjaMailerObject;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
@ -45,6 +42,7 @@ class RegisterOrLogin extends Component
]; ];
public array $registration_fields = []; public array $registration_fields = [];
public array $fields = [];
public function initial() public function initial()
{ {
@ -200,6 +198,39 @@ class RegisterOrLogin extends Component
return; return;
} }
$first_gateway = collect($this->subscription->company->company_gateways)
->sortBy('sort_order')
->first();
$gateway_fields = $first_gateway->driver()->getClientRequiredFields() ?? [];
$registration_fields = $this->subscription->company->client_registration_fields ?? [];
$mappings = [
'contact_first_name' => 'first_name',
'contact_last_name' => 'last_name',
'contact_email' => 'email',
];
$gateway_fields_keys = collect($gateway_fields)->map(fn($field) => $field['name'])->toArray();
$registration_fields_keys = collect($registration_fields)->map(fn($field) => $field['key'])->toArray();
foreach ($gateway_fields_keys as $key) {
$mapping = $mappings[$key] ?? null;
if ($mapping === null) {
continue;
}
$field = collect($registration_fields)->first(fn($field) => $field['key'] === $mappings[$key]);
if (in_array($mappings[$key], $registration_fields_keys) && $field['required'] === true) {
unset($gateway_fields[array_search($key, $gateway_fields_keys)]);
}
}
$this->fields = $gateway_fields;
$this->registration_fields = $registration_fields;
return $this->state['register_form'] = true; return $this->state['register_form'] = true;
} }
@ -215,6 +246,10 @@ class RegisterOrLogin extends Component
public function render() public function render()
{ {
return view('billing-portal.v3.authentication.register-or-login'); $countries = Cache::get('countries');
return view('billing-portal.v3.authentication.register-or-login', [
'countries' => $countries,
]);
} }
} }