package com.style24.batch.biz.task;

import com.style24.batch.biz.job.naverpay.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 *
 * 네이버페이 주문형 Task
 * @author xodud1202
 * @since 2021. 05. 27
 */
@Component
@Slf4j
public class TsbNaverPayTask {

	@Autowired
	private TsbNaverPayRecvOrderCompleteJob recvOrderCompleteJob;

	@Autowired
	private TsbNaverPayRecvOrderCancelReqJob recvOrderCancelReqJob;

	@Autowired
	private TsbNaverPayRecvOrderCancelCompleteJob recvOrderCancelCompleteJob;

	@Autowired
	private TsbNaverPaySendReadyDeliveryJob sendReadyDeliveryJob;

	@Autowired
	private TsbNaverPayRecvOrderConfirmJob recvOrderConfirmJob;

	@Autowired
	private TsbNaverPayRecvOrderExchangeReqJob recvOrderExchangeReqJob;

	@Autowired
	private TsbNaverPayRecvOrderReturnReqJob recvOrderReturnReqJob;

	@Autowired
	private TsbNaverPayRecvWdInvoiceNoJob recvWdInvoiceNoJob;

	/**
	 * 네이버페이 주문형 배치 실행
	 *
	 * @throws Exception - 예외처리
	 * @author xodud1202
	 * @since 2021. 05. 27
	 */
	@Scheduled(cron = "${cron.naverPay.order.batch}")
	//@Scheduled(fixedDelay = 3500000)
	public void naverPayOrderCompleteJob() throws Exception {
		// 결제 완료 주문 정보 수신
		recvOrderCompleteJob.runById("cron.naverpay.recv.order");

		// 결제 취소 완료 주문 정보 수신
		recvOrderCancelCompleteJob.runById("cron.naverpay.recv.cancel.complete");

		// 취소 접수 주문 정보 수신
		recvOrderCancelReqJob.runById("cron.naverpay.recv.cancel.req");

		// 구매 확정 주문 정보 수신
		recvOrderConfirmJob.runById("cron.naverpay.recv.order.decide");

		// 반품 접수 주문 정보 수신
		recvOrderReturnReqJob.runById("cron.naverpay.recv.return.req");

		// 교환 접수 주문 정보 수신
		recvOrderExchangeReqJob.runById("cron.naverpay.recv.exchange.req");

		// // 네이버페이 교환완료 구매확정 데이터 수신 (교환 완료 후 구매확정은 배치에서 자동으로 처리하므로 진행 X)

		// 네이버페이 회수송장번호 수신	> 회수지시는 네이버페이에서 처리.
		recvWdInvoiceNoJob.runById("cron.naverpay.recv.wd.invoice.no");

		// // 취소 완료 주문 정보 송신	> 관리자 취소승인 버튼 클릭시 송부 (완료)

		// 품절 취소 주문 정보 송신					> tscNaverPayService.sendNaverPaySoldoutCancel(Order, userNo) 호출 후 테스트

		// 배송준비중 주문 정보 송신
		sendReadyDeliveryJob.runById("cron.naverpay.send.ready.delivery");

		// // 배송중 주문 정보 송신	> 송장 등록 결과(배치 TsbDeliveryOrderRsltJob), SCM 입점발주확정대상목록 에서 확정시 송신 처리 (완료)

		// // 반품 완료 주문 정보 송신	> tscNaverPayService.sendNaverPayReturnComplete(OrderChange, userNo) 호출 후 테스트

		// // 반품 반려 주문 정보 송신	> 관리자 반품반려 버튼 클릭시 송부 (완료)

		// // 교환 상품 수거 완료 주문 정보 송신			> 입고완료 TsbWithdrawRsltJob 동작시 호출되도록 수정 완료

		// // 교환 상품 재발송 처리 주문 정보 송신		> 송장 등록 결과(배치 TsbDeliveryOrderRsltJob) 동작시 호출되도록 수정 완료

		// // 교환 반려 주문 정보 송신 > 관리자 교환반려 버튼 클릭시 송부로 변경 (완료)
	}
}
