|string> */ public function rules(): array { $isRealEstate = $this->input('type') === AccountType::RealEstate->value; $currencyOptions = app(CurrencyOptions::class); $rules = [ 'name' => ['required', 'string'], 'bank_id' => ['nullable', 'exists:banks,id'], 'currency_code' => [ 'required', 'string', Rule::in($currencyOptions->accountCodes()), ], 'type' => [ 'required', 'string', Rule::in(array_map(fn ($type) => $type->value, AccountType::cases())), ], ]; if ($isRealEstate) { $rules = array_merge($rules, $this->realEstateDetailRules()); } $isLoan = $this->input('type') === AccountType::Loan->value; if ($isLoan) { $rules = array_merge($rules, $this->loanDetailRules()); } return $rules; } }