package com.style24.batch.biz.job.social;

import java.util.ArrayList;
import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.style24.batch.biz.job.TsbAbstractJob;
import com.style24.batch.biz.service.TsbSocialService;
import com.style24.persistence.domain.Social;

import lombok.extern.slf4j.Slf4j;

/**
 * 소셜 상품(핫딜 상품) - 시간배치
 * 
 * @author sowon
 * @since 2021. 3. 10
 */
@Component
@Slf4j
public class TsbSocialGoodsJob  extends TsbAbstractJob<Collection<Social>, Collection<Social>, Collection<Social>>{
	
	@Autowired
	private TsbSocialService socialService;

	private int succCnt = 0;
	private int failCnt = 0;
	
	@Override
	public Collection<Social> read() throws Exception {
		Collection<Social> socialList = new ArrayList<Social>();
		return socialList;
	}

	@Override
	public Collection<Social> process(Collection<Social> socialList) throws Exception {
		return socialList;
	}

	@Override
	public Collection<Social> write(Collection<Social> socialList) throws Exception {
		// 소셜 종료 처리
		// 1. 소셜 종료 상품 원복
		socialService.updateGoodsBeforePriceInfo();
		log.info("소셜 종료 상품 원복");

		// 2. 원복 상품 이력 생성
		socialService.createBeforeGoodsHst();
		log.info("원복 상품 이력 생성");

		// 3. 소셜 종료 처리(상태변경)
		socialService.updateSocialApplyGbtoF();
		log.info("소셜 종료 처리(상태변경)");

		// 소셜 시작 처리
		// 1. 소셜 적용 전 상품 가격 업데이트
		//socialService.updateSocialGoodsBeforePriceInfo();
		//log.info("소셜 적용 전 상품 가격 업데이트");

		// 2. 소셜 시작 상품 적용
		socialService.updateGoodsAfterPriceInfo();
		log.info("소셜 시작 상품 적용");

		// 3. 적용 상품 이력 생성
		socialService.createAfterGoodsHst();
		log.info("적용 상품 이력 생성");

		// 4. 소셜 적용 처리(상태변경)
		socialService.updateSocialApplyGbtoA();
		log.info("소셜 적용 처리(상태변경)");
		
		return socialList;
	}

	@Override
	public void notify(Collection<Social> goods) throws Exception {
		super.printResult(succCnt, failCnt);
		
	}

}
