*/ public function rules(): array { return [ 'period' => ['sometimes', 'string', Rule::in([ 'today', 'last_7_days', 'last_30_days', 'this_month', 'lifetime', 'custom', ])], 'date_from' => ['nullable', 'date_format:Y-m-d', 'required_if:period,custom'], 'date_to' => ['nullable', 'date_format:Y-m-d', 'required_if:period,custom', 'after_or_equal:date_from'], 'metric' => ['sometimes', 'string', Rule::in(['overview', 'bet', 'payout', 'profit'])], 'play_code' => ['nullable', 'string', 'max:64'], 'site_code' => ['nullable', 'string', 'max:32'], 'agent_node_id' => ['nullable', 'integer', 'min:1'], ]; } /** @return array */ public function filters(): array { return [ 'period' => (string) $this->input('period', 'last_7_days'), 'date_from' => $this->input('date_from'), 'date_to' => $this->input('date_to'), 'metric' => (string) $this->input('metric', 'overview'), 'play_code' => $this->input('play_code'), 'site_code' => $this->input('site_code'), 'agent_node_id' => $this->integer('agent_node_id') ?: null, ]; } }