package com.ga.core.mapper.settle;

import com.ga.core.vo.settle.IncentiveProgramResp;
import com.ga.core.vo.settle.IncentiveProgramSearchParam;
import com.ga.core.vo.settle.IncentiveProgramVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 시책 프로그램 마스터 Mapper
 * incentive_program 테이블 CRUD.
 */
@Mapper
public interface IncentiveProgramMapper {

    /** 시책 프로그램 목록 조회 (페이징) */
    List<IncentiveProgramResp> selectList(IncentiveProgramSearchParam param);

    /** 시책 단건 조회 (응답 조인 포함) */
    IncentiveProgramResp selectById(@Param("programId") Long programId);

    /** 시책 단건 조회 (VO, 배치 계산용) */
    IncentiveProgramVO selectVoById(@Param("programId") Long programId);

    /**
     * 특정 정산월에 활성화된 시책 목록 조회.
     * start_month &lt;= settleMonth &lt;= end_month AND is_active = TRUE.
     */
    List<IncentiveProgramVO> selectActiveByMonth(@Param("settleMonth") String settleMonth);

    /** 시책 등록 */
    int insert(IncentiveProgramVO vo);

    /** 시책 수정 */
    int update(IncentiveProgramVO vo);

    /** 시책 활성/비활성 전환 */
    int updateActive(@Param("programId") Long programId,
                     @Param("isActive") Boolean isActive,
                     @Param("updatedBy") Long updatedBy);
}
