*/ protected function agentProfileFieldRules(): array { return [ 'total_share_rate' => ['sometimes', 'numeric', 'min:0', 'max:100'], 'relative_share_rate' => ['sometimes', 'numeric', 'min:0', 'max:100'], 'credit_limit' => ['sometimes', 'integer', 'min:0', 'max:999999999'], 'rebate_limit' => ['sometimes', 'numeric', 'min:0', 'max:100'], 'default_player_rebate' => ['sometimes', 'numeric', 'min:0', 'max:100'], 'can_grant_extra_rebate' => ['sometimes', 'boolean'], 'can_create_child_agent' => ['sometimes', 'boolean'], 'can_create_player' => ['sometimes', 'boolean'], 'settlement_cycle' => ['sometimes', 'nullable', 'string', 'in:weekly,monthly'], 'risk_tags' => ['sometimes', 'array'], 'risk_tags.*' => ['string', 'max:64'], ]; } protected function prepareAgentProfileFieldsForValidation(): void { if (! $this->has('settlement_cycle')) { return; } $cycle = trim((string) $this->input('settlement_cycle')); $this->merge([ 'settlement_cycle' => $cycle === '' ? 'weekly' : $cycle, ]); } }