//package cokr.xit.ens.biz.iup.service;
//
//import cokr.xit.ens.core.exception.EnsException;
//import cokr.xit.ens.core.exception.code.EnsErrCd;
//import cokr.xit.ens.modules.common.code.PostSeCd;
//import cokr.xit.ens.modules.common.code.StatCd;
//import cokr.xit.ens.modules.common.code.VenderCd;
//import cokr.xit.ens.modules.common.domain.SendMast;
//import cokr.xit.ens.modules.common.domain.repository.SendMastRepository;
//import cokr.xit.ens.modules.kkoalimtalk.domain.SendDetailKkoAlimtalk;
//import cokr.xit.ens.modules.kkoalimtalk.domain.repository.SendDetailKkoAlimtalkRepository;
//import cokr.xit.ens.modules.common.ctgy.bill.kko.domain.KkoBillMast;
//import cokr.xit.ens.modules.common.ctgy.bill.kko.domain.repository.KkoBillMastRepository;
//import com.fasterxml.jackson.core.JsonProcessingException;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import org.junit.jupiter.api.Test;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.test.context.SpringBootTest;
//
//import java.time.LocalDateTime;
//import java.util.*;
//
//@SpringBootTest
//class IupAlimtalkEnsAcceptorTest {
//
//    @Autowired
//    private SendMastRepository sendMastRepository;
//    @Autowired
//    private KkoBillMastRepository kkoBillMastRepository;
//    @Autowired
//    private SendDetailKkoAlimtalkRepository sendDetailKkoAlimtalkRepository;
//
//
//    final String ORG_CD = "123";
//    final String TMPLT_CD = "IUP_001";
//
//    @Test
//    void alimtalk() {
//
//        SendMast sendMast = this.makeSendMast(10);
//        List<SendDetailKkoAlimtalk> sendDetails = Arrays.asList(
//                convertTbInputDataToSendDetailKkoAlimtalk("data-1",sendMast),
//                convertTbInputDataToSendDetailKkoAlimtalk("data-2", sendMast),
//                convertTbInputDataToSendDetailKkoAlimtalk("data-3", sendMast),
//                convertTbInputDataToSendDetailKkoAlimtalk("data-4", sendMast),
//                convertTbInputDataToSendDetailKkoAlimtalk("data-5", sendMast),
//                convertTbInputDataToSendDetailKkoAlimtalk("data-6", sendMast),
//                convertTbInputDataToSendDetailKkoAlimtalk("data-7", sendMast),
//                convertTbInputDataToSendDetailKkoAlimtalk("data-8", sendMast),
//                convertTbInputDataToSendDetailKkoAlimtalk("data-9", sendMast),
//                convertTbInputDataToSendDetailKkoAlimtalk("data-10", sendMast),
//                convertTbInputDataToSendDetailKkoAlimtalk("data-11", sendMast),
//                convertTbInputDataToSendDetailKkoAlimtalk("data-12", sendMast)
//        );
//
//
//        sendMastRepository.save(sendMast);
//        sendDetails.stream().forEach(row -> kkoBillMastRepository.save(row.getKkoBillMast()));
//        List<SendDetailKkoAlimtalk> result = sendDetailKkoAlimtalkRepository.saveAll(sendDetails);
////        System.out.println(result.toString());
//    }
//
//
//    /**
//     * 발송마스터
//     * @param sendCnt
//     * @return
//     */
//    private SendMast makeSendMast(int sendCnt){
//
//        return SendMast.builder()
//                .vender(VenderCd.biztalk)
//                .postSe(PostSeCd.kkoAlimtalk)
//                .orgCd(ORG_CD)
//                .tmpltCd(TMPLT_CD)
//                .postBundleTitle("")
////                .acceptDt()
//                .statCd(StatCd.accept)
//                .sendDt(LocalDateTime.now())
//                .sendCnt(sendCnt)
//                .readCnt(0)
//                .closeDt(LocalDateTime.now())
//                .build();
//    }
//
//    /**
//     * 카카오청구서 마스터
//     * @param dataId
//     * @return
//     */
//    private KkoBillMast makeKkoBillMast(String dataId){
//
//        ObjectMapper mapper = new ObjectMapper();
//
//
//        Map<String, Object> mParameters = new HashMap<String, Object>();
//        mParameters.put("orgCd", ORG_CD);
//        mParameters.put("tmpltCd", TMPLT_CD);
//        String parameters = null;
//        try {
//            parameters = mapper.writeValueAsString(parameters);
//        } catch (JsonProcessingException e) {
//            throw new EnsException(EnsErrCd.ACPT511, "청구서 parameters 데이터 변환 실패");
//        }
//        Map<String, Object> mCutomUrl = new HashMap<String, Object>();
//        mCutomUrl.put("notice_url", "http://localhost/kakao/notice");
//        mCutomUrl.put("prepay_url", "http://localhost/kakao/prepay");
//        mCutomUrl.put("pay_result_url", "http://localhost/kakao/pay-result");
//        String customUrl = null;
//        try {
//            customUrl = mapper.writeValueAsString(mCutomUrl);
//        } catch (JsonProcessingException e) {
//            throw new EnsException(EnsErrCd.ACPT511, "청구서 customUrl 데이터 변환 실패");
//        }
//        return KkoBillMast.builder()
//                .billerUserKey(dataId)
//                .billedYearMonth(null)
//                .ordinal(null)
//                .billerNoticeKey(null)
//                .expireAt(String.format("%s235959", "20220221"))
//                .parameters(parameters)
//                .customUrl(customUrl)
//                .build();
//
//    }
//
//    /**
//     * 데이터변환( InputData => SendDetailKkoAlimtalk )
//     * @param dataId
//     * @param sendMast
//     * @return
//     */
//    private SendDetailKkoAlimtalk convertTbInputDataToSendDetailKkoAlimtalk(String dataId, SendMast sendMast) {
//        ObjectMapper mapper = new ObjectMapper();
//
//        KkoBillMast kkobillMast = this.makeKkoBillMast(dataId);
//
//        Map<String, Object> button = new HashMap<>();
//        button.put("name", "납부하기");
//        button.put("type", "WL");
//        button.put("url_mobile", "#{billlink_url}");
//        button.put("url_pc", "#{billlink_url}");
//        ArrayList<Map<String, Object>> buttons = new ArrayList<>();
//        buttons.add(button);
//        Map<String, Object> mAttach = new HashMap<>();
//        mAttach.put("button", buttons);
//        String attach = null;
//        try {
//            attach = mapper.writeValueAsString(mAttach);
//        } catch (JsonProcessingException e) {
//            throw new EnsException(EnsErrCd.ACPT511, "청구서 attach 데이터 변환 실패");
//        }
//
//
//
//        return SendDetailKkoAlimtalk.builder()
//                .sendMast(sendMast)
//                .msgIdx(dataId)
//                .countryCode("82")
//                .recipient(null)
//                .senderKey("SENDER_KEY")
//                .appUserId(null)
//                .orgCode(null)
//                .message("NONasfasdf")
//                .tmpltCode(TMPLT_CD)
//                .title(null)
//                .resMethod("PUSH")
//                .attach(attach)
//                .supplement(null)
//                .messageType("AT")
//                .useFailback(null)
//                .mmsAttach("N")
//                .kkoBillMast(kkobillMast)
//                .mkName("data.getName()")
//                .mkBirthday("data.getBirthday()")
//                .mkSid("data.getSid()")
//                .mkGender("data.getGender()")
//                .mkTmpltMsgJsonData("data.getMsgData()")
//                .mkMblJsonData("data.getMsgDtlData()")
//                .mkPayBillJsonData(null)
//                .build();
//    }
//}