package com.sundot.airport.exam.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sundot.airport.exam.domain.DailyTaskConfig;
import com.sundot.airport.exam.dto.DailyTaskConfigDTO;
import com.sundot.airport.exam.dto.DailyTaskConfigQueryDTO;
import com.sundot.airport.common.core.page.TableDataInfo;

/**
 * <b>功能名：</b>IDailyTaskConfigService<br>
 * <b>说明：</b> 每日答题任务配置Service <br>
 * <b>著作权：</b> Copyright (C) 2025 SUNDOT CORPORATION<br>
 * <b>修改履历：
 *
 * @author Simon Lin
 */
public interface IDailyTaskConfigService extends IService<DailyTaskConfig> {

    /**
     * 分页查询配置列表
     *
     * @param queryDTO 查询条件
     * @return 配置列表
     */
    TableDataInfo selectConfigList(DailyTaskConfigQueryDTO queryDTO);

    /**
     * 根据ID查询配置详情
     *
     * @param dtcId 配置ID
     * @return 配置信息
     */
    DailyTaskConfig selectConfigById(String dtcId);

    /**
     * 新增配置
     *
     * @param dto 配置信息
     * @return 结果
     */
    int insertConfig(DailyTaskConfigDTO dto);

    /**
     * 修改配置
     *
     * @param dto 配置信息
     * @return 结果
     */
    int updateConfig(DailyTaskConfigDTO dto);

    /**
     * 删除配置
     *
     * @param dtcId 配置ID
     * @return 结果
     */
    int deleteConfig(String dtcId);

    /**
     * 批量删除配置
     *
     * @param dtcIds 配置ID数组
     * @return 结果
     */
    int deleteConfigByIds(String[] dtcIds);

    /**
     * 启用/停用配置
     *
     * @param dtcId 配置ID
     * @param enableStatus 启用状态
     * @return 结果
     */
    int updateConfigStatus(String dtcId, Boolean enableStatus);

    /**
     * 根据用户角色ID和部门ID获取有效配置
     *
     * @param roleId 用户角色ID（sys_role表的role_id）
     * @param deptId 部门ID
     * @return 配置信息
     */
    DailyTaskConfig getEffectiveConfig(Long roleId, Long deptId);

    /**
     * 获取默认配置（第一条启用的配置）
     *
     * @return 配置信息
     */
    DailyTaskConfig getDefaultConfig();
}
