. */ declare(strict_types=1); namespace FireflyIII\Rules; use FireflyIII\Models\TransactionType; use FireflyIII\Validation\AccountValidator; use Illuminate\Contracts\Validation\Rule; use Illuminate\Support\Facades\Log; /** * Class IsTransferAccount */ class IsTransferAccount implements Rule { /** * Get the validation error message. * * @return string */ public function message(): string { return (string)trans('validation.not_transfer_account'); } /** * Determine if the validation rule passes. * * @param string $attribute * @param mixed $value * * @return bool */ public function passes($attribute, $value): bool { Log::debug(sprintf('Now in %s(%s)', __METHOD__, $value)); /** @var AccountValidator $validator */ $validator = app(AccountValidator::class); $validator->setTransactionType(TransactionType::TRANSFER); $validator->setUser(auth()->user()); $validAccount = $validator->validateSource(['name' => (string)$value,]); if (true === $validAccount) { Log::debug('Found account based on name. Return true.'); // found by name, use repos to return. return true; } $validAccount = $validator->validateSource(['id' => (int)$value,]); Log::debug(sprintf('Search by id (%d), result is %s.', (int)$value, var_export($validAccount, true))); return false !== $validAccount; } }