검증 규칙 */ public function rules(): array { $rules = [ 'extension_type' => ['nullable', 'array'], 'extension_type.*' => ['string', Rule::in(ExtensionOwnerType::values())], 'extension_identifier' => ['nullable', 'array'], 'extension_identifier.*' => ['string', 'max:100'], 'template_type' => ['nullable', 'string', 'max:100'], 'status' => ['nullable', 'array'], 'status.*' => ['string', Rule::in(array_column(MailSendStatus::cases(), 'value'))], 'search' => ['nullable', 'string', 'max:255'], 'search_type' => ['nullable', 'string', Rule::in(['all', 'recipient_email', 'recipient_name', 'subject'])], 'date_from' => ['nullable', 'date'], 'date_to' => ['nullable', 'date', 'after_or_equal:date_from'], 'per_page' => ['nullable', 'integer', 'min:1', 'max:100'], 'sort_by' => ['nullable', 'string', Rule::in(['sent_at', 'recipient_email', 'subject', 'extension_type', 'status'])], 'sort_order' => ['nullable', 'string', Rule::in(['asc', 'desc'])], ]; return HookManager::applyFilters('core.mail_send_log.index_validation_rules', $rules, $this); } /** * 사용자 정의 유효성 검증 메시지를 반환합니다. * * @return array 메시지 */ public function messages(): array { return [ 'status.in' => __('mail_send_log.validation.status_invalid'), 'date_to.after_or_equal' => __('mail_send_log.validation.date_range_invalid'), 'per_page.min' => __('mail_send_log.validation.per_page_min'), 'per_page.max' => __('mail_send_log.validation.per_page_max'), ]; } }