package com.jwipc.sys.logic;

import com.jwipc.page.PageView;
import com.jwipc.sys.dto.ValidationRuleSettingDomListDTO;
import com.jwipc.sys.dto.ValidationRuleSettingFieldSelectDTO;
import com.jwipc.sys.dto.ValidationRuleSettingInfoDTO;
import com.jwipc.sys.dto.ValidationRuleSettingInsetUpdateDTO;
import com.jwipc.sys.entity.TRegexRule;
import com.jwipc.sys.model.query.TRegexRuleQuery;

import java.util.List;

/**
 * <p>
 *  表单校验规则配置-逻辑接口
 * </p>
 *
 * @author Chen Tianshi
 * @since 2025/8/26 15:24
 */
public interface ValidationRuleSettingLogic {
    /**
     * 获取允许字符配置表所有数据
     * @param regexRuleId 字符配置ID
     * @return 允许字符配置表所有数据
     */
    ValidationRuleSettingDomListDTO getAllAllowedCharacterType(Long regexRuleId);

    /**
     * 获取选择字段的内容
     * @return 选择字段的内容
     */
    List<ValidationRuleSettingFieldSelectDTO> getFieldSelectList();
    /**
     * 获取规则信息
     * @param regexRuleId ID
     * @return 规则信息
     */
    TRegexRule getById(Long regexRuleId);

    /**
     * 查询规则
     * @param query 查询条件
     * @return 查询结果
     */
    PageView list(TRegexRuleQuery query);

    /**
     * 新增或者更新规则
     * @param insetUpdateDT 数据
     */
    void insertOrUpdate(ValidationRuleSettingInsetUpdateDTO insetUpdateDT);

    /**
     * 删除规则
     * @param regexRuleIds 规则ID
     */
    void deleteRule(List<Long> regexRuleIds);

    /**
     * 启用规则
     * @param regexRuleId 规则ID
     * @param status 状态（1：启用，0：禁用）
     */
    void updateRuleStatus(String regexRuleId, String status);

    /**
     * 通过字段ID获取校验规则
     * @param fieldId 业务扩展字段表ID
     * @return 校验规则
     */
    List<ValidationRuleSettingInfoDTO> getFieldValidationById(Long fieldId);

    /**
     * 通过注册模板ID获取校验规则
     * @param templateId 注册模板ID
     * @param type 类型
     * @return 校验规则
     */
    List<ValidationRuleSettingInfoDTO> getAllValidationByTemplateId(String templateId, Integer type);

    /**
     * 通过供应商ID获取校验规则
     * @param supplierId 通过供应商ID
     * @return 校验规则
     */
    List<ValidationRuleSettingInfoDTO> getAllValidationBySupplierId(Long supplierId);
}
