63 lines
1.9 KiB
PHP
63 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace App\Domains\Admin\Actions\UpdateTenantPayment;
|
|
|
|
use App\Models\AvailablePaymentMethod;
|
|
use App\Models\PaymentMethod;
|
|
use App\Scopes\SiteScope;
|
|
|
|
class UpdateTenantPaymentAction
|
|
{
|
|
public function __construct(private UpdateTenantPaymentRequest $request)
|
|
{
|
|
}
|
|
|
|
public function execute(): UpdateTenantPaymentResponse
|
|
{
|
|
$response = new UpdateTenantPaymentResponse();
|
|
|
|
$this->request->tenant->update([
|
|
'account_iban' => $this->request->accountIban,
|
|
'account_bic' => $this->request->accountBic,
|
|
'account_name' => $this->request->accountName,
|
|
]);
|
|
|
|
$this->syncTransferPaymentConfiguration();
|
|
|
|
$response->success = true;
|
|
$response->message = 'IBAN-Informationen wurden gespeichert.';
|
|
|
|
return $response;
|
|
}
|
|
|
|
/**
|
|
* Übernimmt die eingegebenen IBAN-Daten direkt in die Tenant-Config der Überweisungs-Zahlungsart
|
|
* (Kontoinhaber/IBAN/BIC), damit sie nicht doppelt gepflegt werden müssen. Bestehende weitere
|
|
* Config-Werte (z.B. Symbol) bleiben erhalten. Der Ziel-Tenant kann ein verwalteter sein, daher
|
|
* ohne SiteScope explizit auf den Tenant-Slug gefiltert.
|
|
*/
|
|
private function syncTransferPaymentConfiguration(): void
|
|
{
|
|
$slug = PaymentMethod::PAYMENT_ACCOUNT_TRANSACTION;
|
|
|
|
$method = AvailablePaymentMethod::withoutGlobalScope(SiteScope::class)
|
|
->where('tenant', $this->request->tenant->slug)
|
|
->where('slug', $slug)
|
|
->first();
|
|
|
|
if ($method === null) {
|
|
return;
|
|
}
|
|
|
|
$method->configuration = PaymentMethod::sanitizeConfiguration($slug, array_merge(
|
|
$method->configuration ?? [],
|
|
[
|
|
'account_owner' => $this->request->accountName,
|
|
'iban' => $this->request->accountIban,
|
|
'bic' => $this->request->accountBic,
|
|
],
|
|
));
|
|
$method->save();
|
|
}
|
|
}
|