> */ public function rules(): array { return [ 'q' => ['sometimes', 'nullable', 'string', 'max:255'], 'id' => ['sometimes', 'nullable', 'integer', 'min:1'], 'sale_date' => ['sometimes', 'nullable', 'date_format:Y-m-d'], 'status' => ['sometimes', 'nullable', 'string', Rule::in(Purchase::statuses())], 'sort_by' => ['sometimes', 'string', 'in:id,date,customer_name,quantity,status,total'], 'sort_direction' => ['sometimes', 'string', 'in:asc,desc'], 'page' => ['sometimes', 'integer', 'min:1'], 'per_page' => ['sometimes', 'integer', 'min:1', 'max:100'], ]; } }