Changeset View
Changeset View
Standalone View
Standalone View
src/app/Http/Controllers/API/V4/PaymentsController.php
Show First 20 Lines • Show All 354 Lines • ▼ Show 20 Lines | class PaymentsController extends Controller | ||||
public static function walletMandate(Wallet $wallet): array | public static function walletMandate(Wallet $wallet): array | ||||
{ | { | ||||
$provider = PaymentProvider::factory($wallet); | $provider = PaymentProvider::factory($wallet); | ||||
$settings = $wallet->getSettings(['mandate_disabled', 'mandate_balance', 'mandate_amount']); | $settings = $wallet->getSettings(['mandate_disabled', 'mandate_balance', 'mandate_amount']); | ||||
// Get the Mandate info | // Get the Mandate info | ||||
$mandate = (array) $provider->getMandate($wallet); | $mandate = (array) $provider->getMandate($wallet); | ||||
// If this is a multi-month plan, we calculate the expected amount to be payed. | |||||
if (($plan = $wallet->plan()) && $plan->months >= 1) { | |||||
$mandate['amount'] = (int) (($plan->cost() * $plan->months) / 100); | |||||
$mandate['balance'] = 0; | |||||
$mandate['isDisabled'] = !empty($mandate['id']) && $settings['mandate_disabled']; | |||||
$mandate['isFixed'] = true; | |||||
} else { | |||||
$mandate['amount'] = (int) (PaymentProvider::MIN_AMOUNT / 100); | $mandate['amount'] = (int) (PaymentProvider::MIN_AMOUNT / 100); | ||||
$mandate['balance'] = 0; | $mandate['balance'] = 0; | ||||
$mandate['isDisabled'] = !empty($mandate['id']) && $settings['mandate_disabled']; | $mandate['isDisabled'] = !empty($mandate['id']) && $settings['mandate_disabled']; | ||||
$mandate['isFixed'] = false; | |||||
} | |||||
foreach (['amount', 'balance'] as $key) { | foreach (['amount', 'balance'] as $key) { | ||||
if (($value = $settings["mandate_{$key}"]) !== null) { | if (($value = $settings["mandate_{$key}"]) !== null) { | ||||
$mandate[$key] = $value; | $mandate[$key] = $value; | ||||
} | } | ||||
} | } | ||||
return $mandate; | return $mandate; | ||||
▲ Show 20 Lines • Show All 114 Lines • Show Last 20 Lines |