. */ declare(strict_types=1); namespace FireflyIII\Rules; use FireflyIII\Models\Account; use FireflyIII\Models\AccountType; use Illuminate\Contracts\Validation\ValidationRule; /** * Class IsAssetAccountId */ class IsAssetAccountId implements ValidationRule { /** * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function validate(string $attribute, mixed $value, \Closure $fail): void { $accountId = (int)$value; /** @var null|Account $account */ $account = Account::with('accountType')->find($accountId); if (null === $account) { $fail('validation.no_asset_account')->translate(); return; } if (AccountType::ASSET !== $account->accountType->type && AccountType::DEFAULT !== $account->accountType->type) { $fail('validation.no_asset_account')->translate(); } } }