Add IBAN to account validator.

This commit is contained in:
James Cole
2020-03-31 07:04:00 +02:00
parent 144bc29eb3
commit 9e4b7f8bb4
9 changed files with 37 additions and 33 deletions

View File

@@ -599,7 +599,7 @@ class TransactionJournalFactory
// validate source account. // validate source account.
$sourceId = isset($data['source_id']) ? (int) $data['source_id'] : null; $sourceId = isset($data['source_id']) ? (int) $data['source_id'] : null;
$sourceName = $data['source_name'] ?? null; $sourceName = $data['source_name'] ?? null;
$validSource = $this->accountValidator->validateSource($sourceId, $sourceName); $validSource = $this->accountValidator->validateSource($sourceId, $sourceName, null);
// do something with result: // do something with result:
if (false === $validSource) { if (false === $validSource) {
@@ -608,8 +608,8 @@ class TransactionJournalFactory
Log::debug('Source seems valid.'); Log::debug('Source seems valid.');
// validate destination account // validate destination account
$destinationId = isset($data['destination_id']) ? (int) $data['destination_id'] : null; $destinationId = isset($data['destination_id']) ? (int) $data['destination_id'] : null;
$destinationName = $data['destination_name'] ?? null; $destinationName = (string)($data['destination_name'] ?? null);
$validDestination = $this->accountValidator->validateDestination($destinationId, $destinationName); $validDestination = $this->accountValidator->validateDestination($destinationId, $destinationName, null);
// do something with result: // do something with result:
if (false === $validDestination) { if (false === $validDestination) {
throw new FireflyException(sprintf('Destination: %s', $this->accountValidator->destError)); // @codeCoverageIgnore throw new FireflyException(sprintf('Destination: %s', $this->accountValidator->destError)); // @codeCoverageIgnore

View File

@@ -208,9 +208,9 @@ class ConvertController extends Controller
$sourceId = '' === $sourceId || null === $sourceId ? null : (int) $sourceId; $sourceId = '' === $sourceId || null === $sourceId ? null : (int) $sourceId;
$sourceName = '' === $sourceName ? null : $sourceName; $sourceName = '' === $sourceName ? null : $sourceName;
$destinationId = '' === $destinationId || null === $destinationId ? null : (int) $destinationId; $destinationId = '' === $destinationId || null === $destinationId ? null : (int) $destinationId;
$destinationName = '' === $destinationName ? null : $destinationName; $destinationName = (string)('' === $destinationName ? null : $destinationName);
$validSource = $validator->validateSource($sourceId, $sourceName); $validSource = $validator->validateSource($sourceId, $sourceName, null);
$validDestination = $validator->validateDestination($destinationId, $destinationName); $validDestination = $validator->validateDestination($destinationId, $destinationName, null);
if (false === $validSource) { if (false === $validSource) {
throw new FireflyException(sprintf(trans('firefly.convert_invalid_source'), $journal->id)); throw new FireflyException(sprintf(trans('firefly.convert_invalid_source'), $journal->id));

View File

@@ -265,7 +265,7 @@ class RecurrenceFormRequest extends Request
// validate source account. // validate source account.
$validSource = $accountValidator->validateSource($sourceId, null); $validSource = $accountValidator->validateSource($sourceId, null, null);
// do something with result: // do something with result:
if (false === $validSource) { if (false === $validSource) {
@@ -277,7 +277,7 @@ class RecurrenceFormRequest extends Request
} }
// validate destination account // validate destination account
$validDestination = $accountValidator->validateDestination($destinationId, null); $validDestination = $accountValidator->validateDestination($destinationId, null, null);
// do something with result: // do something with result:
if (false === $validDestination) { if (false === $validDestination) {
$message = (string) trans('validation.generic_invalid_destination'); $message = (string) trans('validation.generic_invalid_destination');

View File

@@ -58,14 +58,14 @@ class IsTransferAccount implements Rule
$validator->setTransactionType(TransactionType::TRANSFER); $validator->setTransactionType(TransactionType::TRANSFER);
$validator->setUser(auth()->user()); $validator->setUser(auth()->user());
$validAccount = $validator->validateSource(null, (string)$value); $validAccount = $validator->validateSource(null, (string)$value, null);
if (true === $validAccount) { if (true === $validAccount) {
Log::debug('Found account based on name. Return true.'); Log::debug('Found account based on name. Return true.');
// found by name, use repos to return. // found by name, use repos to return.
return true; return true;
} }
$validAccount = $validator->validateSource((int)$value, null); $validAccount = $validator->validateSource((int)$value, null, null);
Log::debug(sprintf('Search by id (%d), result is %s.', (int)$value, var_export($validAccount, true))); Log::debug(sprintf('Search by id (%d), result is %s.', (int)$value, var_export($validAccount, true)));
return !(false === $validAccount); return !(false === $validAccount);

View File

@@ -98,11 +98,11 @@ trait RecurringTransactionTrait
$validator = app(AccountValidator::class); $validator = app(AccountValidator::class);
$validator->setUser($recurrence->user); $validator->setUser($recurrence->user);
$validator->setTransactionType($recurrence->transactionType->type); $validator->setTransactionType($recurrence->transactionType->type);
if (!$validator->validateSource($source->id, null)) { if (!$validator->validateSource($source->id, null, null)) {
throw new FireflyException(sprintf('Source invalid: %s', $validator->sourceError)); // @codeCoverageIgnore throw new FireflyException(sprintf('Source invalid: %s', $validator->sourceError)); // @codeCoverageIgnore
} }
if (!$validator->validateDestination($destination->id, null)) { if (!$validator->validateDestination($destination->id, null, null)) {
throw new FireflyException(sprintf('Destination invalid: %s', $validator->destError)); // @codeCoverageIgnore throw new FireflyException(sprintf('Destination invalid: %s', $validator->destError)); // @codeCoverageIgnore
} }

View File

@@ -359,7 +359,7 @@ class JournalUpdateService
$validator->source = $this->getValidSourceAccount(); $validator->source = $this->getValidSourceAccount();
$result = $validator->validateDestination($destId, $destName); $result = $validator->validateDestination($destId, $destName, null);
Log::debug(sprintf('hasValidDestinationAccount(%d, "%s") will return %s', $destId, $destName, var_export($result, true))); Log::debug(sprintf('hasValidDestinationAccount(%d, "%s") will return %s', $destId, $destName, var_export($result, true)));
// validate submitted info: // validate submitted info:
@@ -391,7 +391,7 @@ class JournalUpdateService
$validator->setTransactionType($expectedType); $validator->setTransactionType($expectedType);
$validator->setUser($this->transactionJournal->user); $validator->setUser($this->transactionJournal->user);
$result = $validator->validateSource($sourceId, $sourceName); $result = $validator->validateSource($sourceId, $sourceName, null);
Log::debug(sprintf('hasValidSourceAccount(%d, "%s") will return %s', $sourceId, $sourceName, var_export($result, true))); Log::debug(sprintf('hasValidSourceAccount(%d, "%s") will return %s', $sourceId, $sourceName, var_export($result, true)));
// validate submitted info: // validate submitted info:

View File

@@ -80,14 +80,15 @@ class AccountValidator
} }
/** /**
* @param int|null $destinationId * @param int|null $accountId
* @param $destinationName * @param string|null $accountName
* @param string|null $accountIban
* *
* @return bool * @return bool
*/ */
public function validateDestination(?int $destinationId, $destinationName): bool public function validateDestination(?int $accountId, ?string $accountName, ?string $accountIban): bool
{ {
Log::debug(sprintf('Now in AccountValidator::validateDestination(%d, "%s")', $destinationId, $destinationName)); Log::debug(sprintf('Now in AccountValidator::validateDestination(%d, "%s", "%s")', $accountId, $accountName, $accountIban));
if (null === $this->source) { if (null === $this->source) {
Log::error('Source is NULL, always FALSE.'); Log::error('Source is NULL, always FALSE.');
$this->destError = 'No source account validation has taken place yet. Please do this first or overrule the object.'; $this->destError = 'No source account validation has taken place yet. Please do this first or overrule the object.';
@@ -103,19 +104,19 @@ class AccountValidator
break; break;
case TransactionType::WITHDRAWAL: case TransactionType::WITHDRAWAL:
$result = $this->validateWithdrawalDestination($destinationId, $destinationName); $result = $this->validateWithdrawalDestination($accountId, $accountName);
break; break;
case TransactionType::DEPOSIT: case TransactionType::DEPOSIT:
$result = $this->validateDepositDestination($destinationId, $destinationName); $result = $this->validateDepositDestination($accountId, $accountName);
break; break;
case TransactionType::TRANSFER: case TransactionType::TRANSFER:
$result = $this->validateTransferDestination($destinationId, $destinationName); $result = $this->validateTransferDestination($accountId, $accountName);
break; break;
case TransactionType::OPENING_BALANCE: case TransactionType::OPENING_BALANCE:
$result = $this->validateOBDestination($destinationId, $destinationName); $result = $this->validateOBDestination($accountId, $accountName);
break; break;
case TransactionType::RECONCILIATION: case TransactionType::RECONCILIATION:
$result = $this->validateReconciliationDestination($destinationId); $result = $this->validateReconciliationDestination($accountId);
break; break;
} }
@@ -125,12 +126,13 @@ class AccountValidator
/** /**
* @param int|null $accountId * @param int|null $accountId
* @param string|null $accountName * @param string|null $accountName
* @param string|null $accountIban
* *
* @return bool * @return bool
*/ */
public function validateSource(?int $accountId, ?string $accountName): bool public function validateSource(?int $accountId, ?string $accountName, ?string $accountIban): bool
{ {
Log::debug(sprintf('Now in AccountValidator::validateSource(%d, "%s")', $accountId, $accountName)); Log::debug(sprintf('Now in AccountValidator::validateSource(%d, "%s", "%s")', $accountId, $accountName, $accountIban));
switch ($this->transactionType) { switch ($this->transactionType) {
default: default:
$result = false; $result = false;

View File

@@ -65,7 +65,7 @@ trait RecurrenceValidation
// validate source account. // validate source account.
$sourceId = isset($transaction['source_id']) ? (int)$transaction['source_id'] : null; $sourceId = isset($transaction['source_id']) ? (int)$transaction['source_id'] : null;
$sourceName = $transaction['source_name'] ?? null; $sourceName = $transaction['source_name'] ?? null;
$validSource = $accountValidator->validateSource($sourceId, $sourceName); $validSource = $accountValidator->validateSource($sourceId, $sourceName, null);
// do something with result: // do something with result:
if (false === $validSource) { if (false === $validSource) {
@@ -77,7 +77,7 @@ trait RecurrenceValidation
// validate destination account // validate destination account
$destinationId = isset($transaction['destination_id']) ? (int)$transaction['destination_id'] : null; $destinationId = isset($transaction['destination_id']) ? (int)$transaction['destination_id'] : null;
$destinationName = $transaction['destination_name'] ?? null; $destinationName = $transaction['destination_name'] ?? null;
$validDestination = $accountValidator->validateDestination($destinationId, $destinationName); $validDestination = $accountValidator->validateDestination($destinationId, $destinationName, null);
// do something with result: // do something with result:
if (false === $validDestination) { if (false === $validDestination) {
$validator->errors()->add(sprintf('transactions.%d.destination_id', $index), $accountValidator->destError); $validator->errors()->add(sprintf('transactions.%d.destination_id', $index), $accountValidator->destError);

View File

@@ -72,9 +72,10 @@ trait TransactionValidation
$accountValidator->setTransactionType($transactionType); $accountValidator->setTransactionType($transactionType);
// validate source account. // validate source account.
$sourceId = isset($transaction['source_id']) ? (int)$transaction['source_id'] : null; $sourceId = isset($transaction['source_id']) ? (int) $transaction['source_id'] : null;
$sourceName = $transaction['source_name'] ?? null; $sourceName = $transaction['source_name'] ?? null;
$validSource = $accountValidator->validateSource($sourceId, $sourceName); $sourceIban = $transaction['source_iban'] ?? null;
$validSource = $accountValidator->validateSource($sourceId, $sourceName, $sourceIban);
// do something with result: // do something with result:
if (false === $validSource) { if (false === $validSource) {
@@ -84,9 +85,10 @@ trait TransactionValidation
return; return;
} }
// validate destination account // validate destination account
$destinationId = isset($transaction['destination_id']) ? (int)$transaction['destination_id'] : null; $destinationId = isset($transaction['destination_id']) ? (int) $transaction['destination_id'] : null;
$destinationName = $transaction['destination_name'] ?? null; $destinationName = $transaction['destination_name'] ?? null;
$validDestination = $accountValidator->validateDestination($destinationId, $destinationName); $destinationIban = $transaction['destination_iban'] ?? null;
$validDestination = $accountValidator->validateDestination($destinationId, $destinationName, $destinationIban);
// do something with result: // do something with result:
if (false === $validDestination) { if (false === $validDestination) {
$validator->errors()->add(sprintf('transactions.%d.destination_id', $index), $accountValidator->destError); $validator->errors()->add(sprintf('transactions.%d.destination_id', $index), $accountValidator->destError);
@@ -140,7 +142,7 @@ trait TransactionValidation
// validate source account. // validate source account.
$sourceId = isset($transaction['source_id']) ? (int)$transaction['source_id'] : $originalData['source_id']; $sourceId = isset($transaction['source_id']) ? (int)$transaction['source_id'] : $originalData['source_id'];
$sourceName = $transaction['source_name'] ?? $originalData['source_name']; $sourceName = $transaction['source_name'] ?? $originalData['source_name'];
$validSource = $accountValidator->validateSource($sourceId, $sourceName); $validSource = $accountValidator->validateSource($sourceId, $sourceName, null);
// do something with result: // do something with result:
if (false === $validSource) { if (false === $validSource) {
@@ -152,7 +154,7 @@ trait TransactionValidation
// validate destination account // validate destination account
$destinationId = isset($transaction['destination_id']) ? (int)$transaction['destination_id'] : $originalData['destination_id']; $destinationId = isset($transaction['destination_id']) ? (int)$transaction['destination_id'] : $originalData['destination_id'];
$destinationName = $transaction['destination_name'] ?? $originalData['destination_name']; $destinationName = $transaction['destination_name'] ?? $originalData['destination_name'];
$validDestination = $accountValidator->validateDestination($destinationId, $destinationName); $validDestination = $accountValidator->validateDestination($destinationId, $destinationName, null);
// do something with result: // do something with result:
if (false === $validDestination) { if (false === $validDestination) {
$validator->errors()->add(sprintf('transactions.%d.destination_id', $index), $accountValidator->destError); $validator->errors()->add(sprintf('transactions.%d.destination_id', $index), $accountValidator->destError);