*/ protected function agentProfileFieldRules(): array { return [ 'total_share_rate' => ['sometimes', 'numeric', 'min:0', 'max:100'], 'credit_limit' => ['sometimes', 'integer', 'min:0'], 'rebate_limit' => ['sometimes', 'numeric', 'min:0', 'max:1'], 'default_player_rebate' => ['sometimes', 'numeric', 'min:0', 'max:1'], 'settlement_cycle' => ['sometimes', 'string', 'in:'.implode(',', AgentSettlementCycle::VALUES)], 'can_grant_extra_rebate' => ['sometimes', 'boolean'], 'can_create_child_agent' => ['sometimes', 'boolean'], 'can_create_player' => ['sometimes', 'boolean'], ]; } protected function prepareAgentProfileFieldsForValidation(): void { if (! $this->has('settlement_cycle')) { return; } $this->merge([ 'settlement_cycle' => AgentSettlementCycle::normalize($this->input('settlement_cycle')), ]); } }