package cokr.xit.ens.batch.sched;

import cokr.xit.ens.core.aop.EnsResponseVO;
import cokr.xit.ens.modules.kkomydoc.service.KkoMydocHisService;
import cokr.xit.ens.modules.kkomydoc.service.KkoMydocService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Profile;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Slf4j
@Component
@Profile("!local & !local-maria & !local-oracle & !local-test")
@RequiredArgsConstructor
public class EnsKkoMydocScheduler {

    private final KkoMydocService kkoMydocService;
    private final KkoMydocHisService kkoMydocHisService;

    /**
     * 카카오 내문서함(인증톡) 전송 처리
     * -. "제작성공(makeok)" 상태의 모든 자료에 대해 전송을 수행 한다.
     */
    @Scheduled(cron = "0 */1 9-18 * * *")
    public void sended() {
        EnsResponseVO responseVO = kkoMydocService.sendBulkAll();
        StringBuffer sb = new StringBuffer();
        sb.append("\n=======================================================")
                .append("\n[ENS] 카카오 내문서함(인증톡) 전송처리")
                .append("\n결과: {}")
                .append("\n=======================================================");
        log.info(sb.toString(), responseVO.toString());
    }

    /**
     * 카카오 내문서함(인증톡) 상태갱신 처리
     * -. "발송성공/발송완료/열람중(sendok/sendcmplt/open)" 상태의 자료에 대해 문서상태를 갱신 한다.
     * -. 문서상태는 현재 상태에 따라 "전송완료(sendcmplt) 또는 열람중(open)"으로 갱신 된다.
     */
//    @Scheduled(cron = "0 */5 9-18 * * *")
    @Scheduled(cron = "0 */30 9-18 * * *")
    public void fetched() {
        EnsResponseVO responseVO = kkoMydocService.statBulkAll();
        StringBuffer sb = new StringBuffer();
        sb.append("\n=======================================================")
                .append("\n[ENS] 카카오 내문서함(인증톡) 문서상태갱신 처리")
                .append("\n결과: {}")
                .append("\n=======================================================");
        log.info(sb.toString(), responseVO.toString());
    }

    /**
     * 카카오 내문서함(인증톡) 상태갱신요청이력 영구 삭제
     */
    @Scheduled(cron = "4 4 4 * * *")
    public void deleteStateHis() {
        Long totCnt = kkoMydocHisService.truncateStatHist();
        StringBuffer sb = new StringBuffer();
        sb.append("\n=======================================================")
                .append("\n[ENS] 카카오 내문서함(인증톡) 상태변경요청이력 영구 삭제")
                .append("\n결과: {} 건 삭제")
                .append("\n=======================================================");
        log.info(sb.toString(), totCnt);
    }


}
