package kr.xit.biz.ens.service;

import java.util.List;

import kr.xit.biz.common.ApiConstants.SndngSeCode;
import kr.xit.biz.ens.model.cmm.SndngMssageParam;
import kr.xit.biz.ens.model.kakao.pay.KkopayDocBulkDTO;
import kr.xit.biz.ens.model.kakao.talk.KkotalkDTO;
import kr.xit.biz.ens.model.kt.KtMmsSendDTO.KtMainSendReqData;
import kr.xit.biz.ens.model.ktgbs.KtGbsDTO;

/**
 * <pre>
 * description : 모바일 전자고지 배치 서비스 class
 * - {@code @Transactional(propagation = Propagation.REQUIRES_NEW)} 적용 서비스 분리
 * - 동일 class 서비스 메소드 호출시 Propagation.REQUIRES_NEW 미 동작
 *
 * packageName : kr.xit.biz.ens.service
 * fileName    : IEnsBatchRequireNewService
 * author      : limju
 * date        : 2023-08-31
 * ======================================================================
 * 변경일         변경자        변경 내용
 * ----------------------------------------------------------------------
 * 2023-08-31    limju       최초 생성
 *
 * </pre>
 */
public interface IEnsBatchExtractService {

    //-----------------------------------------------------------------------------------------------------------------
    // REQUIRES_NEW service method
    //-----------------------------------------------------------------------------------------------------------------
    void saveKkopaySendResult(final String mstId, String unitySndMstId, final List<KkopayDocBulkDTO.BulkSendResponses> resList);
    void saveKkotalkSendResult(final String mstId, String unitySndMstId, final List<KkotalkDTO.BulkSendResponse> resList);

    void saveKtBcResult(final SndngMssageParam dto, final List<KtMainSendReqData> sendReqs);
    void saveKtGbsResult(final SndngMssageParam dto, final List<KtGbsDTO.MsgSendReqsData> sendReqs);


    void updateSndngMstFailStatus(final String mstId, final SndngSeCode seCode, final String errCode, final String errMsg, final String stsErrMsg);
    //-----------------------------------------------------------------------------------------------------------------

    void updateSendSndngMstStatus(final String mstId, final String unitySndMstId, final SndngSeCode seCode, final String stsErrMsg);
    void updateErrorLog(final SndngMssageParam dto);
}
