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