. */ declare(strict_types=1); namespace FireflyIII\Rules; use Closure; use FireflyIII\Enums\AccountTypeEnum; use FireflyIII\Models\Account; 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 (AccountTypeEnum::ASSET->value !== $account->accountType->type && AccountTypeEnum::DEFAULT->value !== $account->accountType->type) { $fail('validation.no_asset_account')->translate(); } } }